TCP Wrappers 使用教程
TCP Wrappers 简介
TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接 (TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwrap.so库文件的的程序就可以受TCP Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。
判断方式:
- 查看对应服务命令所在位置
which sshd
- 查看指定命令执行时是否调用libwrap.so文件
ldd /usr/sbin/sshd grep libwrap.so
TCP Wrappers 工作原理
以ssh为例,每当有ssh的连接请求时,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给ssh进程,由ssh完成后续工作,如果这次连接发起的i不符合访问控制文件中的设置,则会中新连接请求拒绝提供ssh服务。
- 优先查看 hosts.allow,匹配即停止
- 允许个别,拒绝所有: hosts.allow 文件添加允许的策略,hosts.deny 文件添加 all
- 拒绝个别,允许所有: hosts.allow 文件为空,hosts.deny 文件添加单个拒绝的策略
TCP Wrappers 的使用
TCP_Wrappers的使用主要是依靠两个配置文件 /etc/hosts.allow, /etc/hosts.deny,以此实现访问控制,默认情况下, /etc/hosts.allow,/etc/hosts.deny 什么都没有添加,此时没有限制
配置文件编写规则:
service list@host: client list
service list:是程序(服务) 的列表,可以是多个,多个时,使用,隔开
@host:设置允许或禁止他人从自己的哪个网口进入。这一项不写,就代表全部
client_list:是访问者的地址,如果需要控制的用户较多,可以使用空格或,隔开格式如下:
基于IP地址:
192.168.88.1 192.168.88.
基于主机名: www.baidu.com .baidu.com 较少用
基于网络/掩码: 192.168.0.0/255.255.255.0
内置ACL: ALL(所有主机)、LOCAL(本地主机)
实验案例:
拒绝单个 IP 使用 ssh 远程连接:
配置文件:
hosts.allow:空着
hosts.deny: sshd:192.168.88.20
拒绝某一网段使用 ssh 远程连接:
hosts.allow:空着
hosts.deny: sshd:192.168.88
仅允许某一IP 使用 ssh 远程连接
hosts.allow: sshd:192.168.88.20
hosts deny: sshd:ALL
进阶使用
ALL:所有的服务或IP
ALL EXCEPT:除去指定服务或IP后的所有服务或IP
# 通过ALL EXCEPT配置除了192.168.64.5这台服务器,任何服务器执行所有服务时被允许或拒绝
ALL : ALL EXCEPT 192.168.64.5
# 在规则中使用通配符,匹配192.168.64.x网段中所有主机访问当前服务器和域名满足以test.com结尾即可访问当前服务器
sshd : 192.168.64.*,*.test.com
spawn:先执行后续命令,执行完后远程服务器会等待5秒重置连接的时间
twist:先执行后续命令,执行完后立刻断开与远程服务器的连接
# 设置拒绝远程服务器登录后,给root用户发送安全提示邮件
vi etc/hosts.deny
sshd : 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 -