无话不谈|Linux 安全工具TCP_Wrappers、DenyHosts


无话不谈|Linux 安全工具TCP_Wrappers、DenyHosts
一、TCP_Wrappers1. 简介全称是Transmission Control Protocol (TCP) Wrappers, 它是一个基于主机的网络访问控制列表系统 。 最初代码由Wietse Venema在1990年编写(比Linux的出现要早一点) , 2001年以类BSD的许可发布 。 TCP Wrappers工作在TCP/IP模型的第4层(传输层) , 对有状态连接的特定服务进行安全检测并实现访问控制 。
核心配置文件是:

  • /etc/hosts.allow
  • /etc/hosts.deny
TCP Wrappers有一个TCP守护进程:tcpd 。 可以在 wrappers 下进行访问控制的通常有 :
  • telnet
  • ssh
  • sendmail
  • ftp
  • pop3
  • vsftpd
2. 查看系统是否支持TCP Wrappers核心是libwrap库 , 可以通过命令查看系统是否支持:
sudo ldd /usr/sbin/sshd | grep libwrap
无话不谈|Linux 安全工具TCP_Wrappers、DenyHosts这里sshd使用了libwrap 。
3. 工作流程:
  1. 远程IP请求连接
  2. TCP Wrapper先看/etc/hosts.allow中是否允许 , 有允许就放行;
  3. 没有允许 , 看/etc/hosts.deny是否禁止 , 如果存在就禁止连接;
  4. 两个文件都没有默认放行 。
另外tcp_wrappers可以设置调用外部程序 , 如记录日志等 。
4. tcp_wrappers配置文件语法服务列表@host:主机列表:选项服务列表@host:主机列表:选项服务列表@host:主机列表:选项
(1) 服务列表要支持的服务名 , 如:telnet,vsftpd等@host 是指定本机网卡 , 如果不写就代表全部 。
(2) 主机列表受控制的机器 , 可以是机器名、IP , 支持通配符* ? ALL EXECPT
  • 基于IP地址: 192.168.10.1 192.168.1.
  • 基于主机名: www.magedu.com .magedu.com 较少用
  • 基于网络/掩码: 192.168.0.0/255.255.255.0
  • 基于net/prefixlen: 192.168.1.0/24(CentOS7)
  • 基于网络组(NIS 域): @mynetwork
内置ACL: ALL ,LOCAL ,KNOWN ,UNKNOWN , PARANOID
  • ALL:所有主机
  • LOCAL:本地主机
  • KNOWN:主机名可解析成ip的
  • UNKNOWN:主机名无法解析成IP的
  • PARANOID:正向解析与反向解析不对应的主机
(3) 选项 , 要控制的动作
  • ALLOW 接受
  • DENY 禁止
5. 示例(1) telnet禁止192.168.0.0/16 , 但允许192.168.0.2 , 其它段不限制vim /etc/hosts.allowin.telnetd: 192.168.0.2vim /etc/hosts.denyin.telnetd: 192.168.(2) 禁止192.168.1.4通过ssh连接vim /etc/hosts.deny# 自己的IP是192.168.1.2sshd@192.168.1.2:192.168.1.4(3) 禁止192.168.1.*网段ssh连接vim /etc/hosts.deny# 自己ip192.168.1.2sshd@192.168.1.2:192.168.1.(4) 允许本地网段 , 除了192.168.1.4连sshvim /etc/hosts.allow# 可以用EXCEPT排除某个IPsshd@192.168.1.2:192.168.1. EXCEPT 192.168.1.4vim /etc/denysshd: ALL(5) 在allow里使用denyvim /etc/hosts.allowsshd:192.168.1.4:deny# 也可以在deny中使用allowvim /etc/hosts.denysshd:192.168.1.4:allow6. 使用tcpmatch查看连接情况tcpdmatch[-d]daemon[@host]client-d 测试当前目录下的 hosts.allow和hosts.deny二、DenyHosts由Phil Schwartz编写 , 使用Python开发 。 它是通过监控系统安全日志来分析是否有对OpenSSH的暴力破解行为 。 如果发现有暴力破解 , 就分析IP并加到etc/hosts.deny来禁止连接 。


推荐阅读