TCP wrappers是一个基于主机的网络访问控制列表系统,他的核心是名为libwrap的库,所有调用这个库的程序都可以利用libwrap提供的网络访问控制能力。
在Linux系统中我们可以使用ldd命令来判断一个程序是否调用了libwrap的库。
我们可以看到Openssh的服务端程序sshd调用了libwrap,那我们就可以使用TCP Wrappers来控制允许或禁止哪些主机访问sshd
远程IP请求连接的时候,TCP Wrappers检查策略先看/etc/hosts.allow是否允许如果允许则直接放行,如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么禁止连接,否则允许连接。
我们可以使用如下配置来仅仅允许指定的10.125.192.1访问sshd
vim /etc/hosts.allow
sshd:10.125.192.1:allow
sshd:ALL:deny #明确禁止不在白名单内的ip访问
/etc/hosts.allow 的配置语法
服务名:来源IP/网段(多个IP/网段以英文,分割):动作(allow允许,deny禁止)
使用TCP Wrappers时,不需要重启程序,修改etc/hosts.allow和etc/hosts.deny并保存后,对于所有新建立的TCP连接立即生效,对已建的立连接无效。