linux系统中服务的访问控制列表TCP Wrapper
linux系统中有两个层面的防火墙,第一种是基于TCP/IP协议的流量过滤工具,第二种TCP Wrappers服务则是能允许或禁止linux系统提供服务的防火墙,从而在更高层面保护linux系统的安全性。
TCP Wrapper服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量。控制列表文件修改后会立即生效,系统将会先检查允许控制列表(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量,如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量。如果着两个文件都没有匹配到,则默认放行流量。
在配置TCP Wrappers服务时需要遵循两个原则:
编写拒绝策略规则时,填写的是服务名称,而非协议名称
建议先编写拒绝策略文件,然后编辑允许策略文件,可以观察到编辑后的效果。
测试主机间的sshd服务:
1、编辑前
## PC2可以正常远程登录PC1
[root@PC2linuxprobe Desktop]# ifconfig | head -n 3
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.20 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fe15:20b6 prefixlen 64 scopeid 0x20<link>
[root@PC2linuxprobe Desktop]# ssh 192.168.10.10
root@192.168.10.10's password:
Last login: Sat Nov 7 22:06:30 2020 from 192.168.10.20
[root@PC1linuxprobe ~]# ifconfig | head -n 3
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fe20:bf5e prefixlen 64 scopeid 0x20<link>
[root@PC1linuxprobe ~]# exit
logout
Connection to 192.168.10.10 closed.
2、在PC1中修改配置文件
[root@PC1linuxprobe ~]# vim /etc/hosts.deny
添加sshd:*,然后保存退出
测试:
[root@PC2linuxprobe Desktop]# ssh 192.168.10.10 ## 拒绝远程登录
ssh_exchange_identification: read: Connection reset by peer
3、在PC1中修改允许策略文件
[root@PC1linuxprobe ~]# vim /etc/hosts.allow
添加允许的IP地址,保存退出
在PC2 主机中测试:
[root@PC2linuxprobe Desktop]# ssh 192.168.10.10
root@192.168.10.10's password:
Last login: Sat Nov 7 22:07:03 2020 from 192.168.10.20
[root@PC1linuxprobe ~]# ifconfig | head -n 3
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fe20:bf5e prefixlen 64 scopeid 0x20<link>
[root@PC1linuxprobe ~]# exit
logout
Connection to 192.168.10.10 closed.