《Linux系统安全:纵深防御、安全扫描与入侵检测 》 —2.4 利用TCP Wrappers构建应用访问控制列表
2.4 利用TCP Wrappers构建应用访问控制列表
TCP Wrappers也被称为tcp_wrappers。它是一个基于主机的网络访问控制列表系统,在Linux和BSD等系统上都有支持。最初的代码是由Wietse Venema在1990年编写的,在2001年,以类BSD的许可发布。TCP Wrappers的核心是名为libwrap的库,所有调用这个库的程序都可以利用libwrap提供的网络访问控制能力。
在Linux系统中,我们可以使用ldd命令来判断一个程序是否调用了libwrap的库,示例如代码清单2-2所示。
代码清单2-2 验证程序是否调用libwrap
在代码清单2-2中,我们可以看到,OpenSSH的服务器端程序/usr/bin/sshd调用了libwrap。那么我们就可以使用TCP Wrappers来控制允许哪些主机或者禁止哪些主机访问sshd。
远程IP请求连接的时候,TCP Wrappers检查策略是先看/etc/hosts.allow中是否允许,如果允许就直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止,那么就禁止连接;否则允许连接。
我们可以使用如下的配置来仅仅允许指定的IP 104.224.147.43访问sshd。
配置/etc/hosts.allow来限制sshd的访问。
sshd:104.224.147.43:allow
sshd:ALL:deny #明确禁止不在白名单内的IP访问
/etc/hosts.allow的配置语法如下:
服务名:来源IP/网段(多个IP/网段以英文逗号,分隔):动作(允许 => allow,禁止 => deny)
使用TCP Wrappers时,不需要重新启动程序,修改/etc/hosts.allow和/etc/hosts.deny并保存后,对于所有新建立的TCP连接立即生效;对于已建立的连接则没有作用,此时需要手动把网络连接断掉,例如使用iptables或者使用kill命令终止对应的进程来强制远程重新建立连接。
- 点赞
- 收藏
- 关注作者
评论(0)