TCP Wrappers 简介
TCP_Wrappers 是一个工作在第四层(传输层)的安全工具,对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式凡是调用 libwrap.so 库文件的程序就可以受 TCP_Wrappers 的安全控制。它的主要功能就是控制谁可以访问,常见的程序有 rpcbind、vsftpd、sshd、telnet。
判断方式:
查看对应服务命令所在位置
[root@test1 ~]# which sshd
/usr/sbin/sshd
查看指定命令执行时是否调用 libwrap.so 文件
[root@test1 ~]# ldd /usr/sbin/sshd | grep libwrap.so
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fbdd494d000)
TCP Wrappers 工作原理
以 ssh 为例,每当 ssh 的连接请求时,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给 ssh 进程,由 ssh 完成后续工作,如果这次连接发起的 IP 不符合访问控制文件中的设置,则会中断连接请求。拒绝 ssh 服务。
- 优先查看 hosts.allow 文件,匹配访问控制策略
- 允许个别拒绝所有:hosts.allow 文件添加单个允许的策略,hosts.deny 文件添加 all
- 拒绝个别允许所有:hosts.deny 文件添加单个拒绝的策略,hosts.allow 文件为空
TCP Wrappers 的使用
TCP_Wrappers 的使用主要依靠两个配置文件 /etc/hosts/allow,/etc/hosts/deny;以此实现访问控制,默认情况下,这两个文件什么都没有添加,所以没有限制。
配置文件编写规则:
service_list@host:client_list
- service_list:是服务(程序)的列表,可以是多个,使用 “ , ” 隔开
- @host:设置允许或禁止他人从自己的哪个网口进入,这一项不写就代表全部
- client_list:是访问者的地址,如果需要控制的用户较多,可以使用空格或 “ , ” 隔开
格式如下:
- 基于IP地址:192.168.117.130 192.168.117.131
- 基于主机名:www.baidu.com www.aliyun.com
- 基于网络/掩码:192.168.0.0/255.255.255.0
- 内置 ACL:ALL(所有主机)、LOCAL(本地主机)
实验案例
准备好两台 Linux 操作系统的主机,配置好相关网络参数,实现可以正常通信。
主机名 | IP | root密码 |
---|---|---|
test~1 (客户端) | 192.168.117.130 | 123 |
test~2 (服务端) | 192.168.117.131 | 123 |
1、拒绝 192.168.117.130 使用 ssh 远程连接本机
#test2 添加拒绝策略
[root@test2 ~]# vim /etc/hosts.deny
sshd:192.168.117.130
#test1 ssh 远程连接 test2 失败
[root@test1 ~]# ssh [email protected]
catssh_exchange_identification: read: Connection reset by peer
2、拒绝某一网段使用 ssh 远程连接本地
#test2 添加拒绝策略
[root@test2 ~]# vim /etc/hosts.deny
sshd:192.168.117.
#test1 ssh 远程连接 test2 失败
[root@test1 ~]# ssh [email protected]
ssh_exchange_identification: read: Connection reset by peer
3、只允许192.168.117.130 使用 ssh 远程连接本机
#test2 添加允许策略
[root@test2 ~]# vim /etc/hosts.allow
sshd:192.168.117.130
#test1 ssh 远程连接 test2 成功
[root@test1 ~]# ssh [email protected]
[email protected]'s password:
# test2 root 密码:123
Last login: Mon Oct 12 22:04:30 2020 from 192.168.117.130
[root@test2 ~]#