《Linux系统安全:纵深防御、安全扫描与入侵检测 》 —2.4 利用TCP Wrappers构建应用访问控制列表

华章计算机 发表于 2019/11/14 11:31:29 2019/11/14
【摘要】 本节书摘来自华章计算机《Linux系统安全:纵深防御、安全扫描与入侵检测》一书中第2章,第2.4节,作者是胥峰。

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

image.png

在代码清单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命令终止对应的进程来强制远程重新建立连接。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。