
了解TCP_Wrappers防火墙
TCP_Wrappers是Linux默认安装的用来分析TCP/IP封包的软件,类似的IP封包软件还有iptables。作为一个安全的系统,Linux本身有两层安全防火墙,通过IP过滤机制的iptables实现第1层防护,TCP_Wrappers根据来访主机的地址与本机的目标服务程序作出允许或拒绝的操作实现第二层防护。
netfilter/iptables(简称iptables)组成了Linux平台下的包过滤防火墙,拥有封包过滤、封包重定向、网络地址转换(NAT)等功能。用户通过iptables实现管理netfilter安全框架。
iptables防火墙通过直观地监视系统的运行状况,阻挡网络中的一些恶意扫描和攻击,保护整个系统正常运行,免遭攻击和破坏。如果通过了第一层防护,那么下一层就是TCP_Wrappers了。通过TCP_Wrappers可以实现对系统中提供的某些服务的开放与关闭、允许和禁止,从而保证系统安全运行。TCP_Wrappers防火墙的实现是通过/etc/hosts.allow和/etc/hosts.deny两个文件完成的。
/etc/hosts.allow:这个文件包含的访问规则用于允许或拒绝那些使用 tcp_wrappers 库或通过super daemon (xinetd)管理的网络服务。
/etc/hosts.deny:这个文件包含的访问规则用于拒绝那些使用 tcp_wrappers 库或通过super daemon (xinetd)管理的网络服务。也可以通过“deny”选项将规则配置在/etc/hosts.allow中。
daemon:
stand_alone daemon:
stand_alone daemon独自启动并加载到内存后就一直占用内存与系统资源,不受到其他机制的管理。
启动的脚本放置到 etc/init.d/ 这个目录中,使用 service/systemctl启动。
如WWW 的 daemon (httpd)、FTP 的 daemon (vsftpd) 等。
super daemon(xinetd,extended internet daemon):
xinetd新一代的网络守护进程服务程序,常用来管理多种轻量级Internet服务。当有客户端请求时服务时,super daemon才会唤醒对应的服务。当客户端请求结束,这个服务会关闭并释放并释放资源。
super daemon 的配置文件在 etc/xinetd.d/* 内,启动的方式则为 etc/init.d/xinetd restart
如sshd、sendmail等。
#查看super daemon (xinetd)管理的服务,一般只要某些进程归xinetd管理,那么这个服务就一定接受tcp_wrappers的管理systemctl list-unit-files#查看使用libwrap.so.0库的服务ldd `which sshd` | grep libwrap
安装TCP_Wrappers:
yum install tcp_wrappers
使用方法:
service: host(s) [:action]
参数含义:
service:代表服务名,例如,sshd、vsftpd、sendmail等。
host(s):代表主机名或者IP地址,可以有多个,例如,192.168.64.4、www.tencent.com
action:动作,符合条件后所采取的动作
配置中常用关键字:
ALL:所有的服务或IP
ALL EXCEPT:除去指定服务或IP后的所有服务或IP
配置TCP_Wrappers防火墙
示例1.
# 同过ALL EXCEPT配置除了192.168.64.5这台服务器,任何服务器执行所有服务时被允许或拒绝ALL : ALL EXCEPT 192.168.64.5
示例2.
# 在规则中使用通配符,匹配192.168.64.x网段中所有主机访问当前服务器和域名满足以test.com结尾即可访问当前服务器sshd : 192.168.64.* *.test.com
示例3.
# 实现仅允许IP为192.168.64.5、192.168.64.6以及域名为www.test.com的三台服务器通过SSH服务远程登录到当前服务器。vi /etc/hosts.allowsshd : 192.168.64.5 192.168.64.6 www.test.com#----------------------vi /etc/hosts.denysshd : ALL# Linux会首先判断/etc/hosts.allow这个文件。如果远程服务器满足文件/etc/hosts.allow设定,就不会再去访问/etc/hosts.deny文件了;# 如果远程服务器IP满足/etc/hosts.deny中的规则,则此远程服务器就被限制为不可访问当前服务器;# 如果也不满足/etc/hosts.deny的规则,则此远程服务器默认是可以访问当前服务器。# 因此在/etc/hosts.allow中设置允许访问规则后,在/etc/hosts.deny中设置禁止所有远程服务器不可访问当前服务器即可满足仅允许上述三台远程服务器访问当前服务器。
配置如上规则后,在192.168.64.7服务器通过ssh登录192.168.64.4会提示错误“ssh_exchange_identification: read: Connection reset by peer”,实现了指定服务器之外的所有服务器禁止使用SSH访问当前服务器。
示例4.
# TCP_Wrapper动作的进阶使用# spawn:先执行后续命令,执行完后远程服务器会等待5秒重置连接的时间# twist:先执行后续命令,执行完后立刻断开与远程服务器的连接# 设置拒绝远程服务器登录后,给root用户发送安全提示邮件vi etc/hosts.denysshd : ALL: spawn (echo "Security notice from host $(/bin/hostname)" | bin/mail -s "reject %d-%h ssh" root)#sshd : ALL : twist (echo "Security notice from host $(/bin/hostname)" | bin/mail -s "reject %d-%h ssh" root)
如果您对这篇文章有什么疑问,请在公众号后台留言。





