扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
目前企业开源系统的运行保障是业界关注的热点,如何保证开源系统高效、可靠的运行是非常重要的技术问题。本文将详细介绍如何使用TCP wrappers来保障企业系统服务安全。
使用TCP Wrappers进行保障
1、主要功能
TCP wrappers作为客户端/服务器模型的一部分,以/etc/hosts.allow和/etc/hosts.deny文件作为其简单访问控制列表 (ACL)的基础,可用于与libwrap挂钩的任何守护进程。此访问控制语言定义的规则为:基于客户端的地址和客户端尝试访问的守护进程,选择性地允许 客户端访问服务器守护程序。ldd的输出显示sshd依赖的共享库之一是libwrap:
$ ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0×00e7c000)
2、使用hosts.allow和hosts.deny
hosts.allow和hosts.deny文件中的每一行的格式如下:
daemon_list : client_list [: command]
其中daemon_list是一个以逗号分隔的一个或多个服务器守护进程(如rpcbind、vsftpd、sshd)的列表,client_list是 一个以逗号分隔的一个或多个客户端的列表,可选的command是当client_list中的一个客户端试图访问daemon_list中的一个服务器守护进程时,要执行的命令。
当客户端请求连接到服务器时,按照下面的顺序查阅服务器系统上的hosts.allow和hosts.deny文件,直到找到一个匹配项:
第一个匹配决定是否允许客户端访问服务器。当hosts.allow或hosts.deny中都不存在时,该文件好像是空的。通过删除这两个文件,可以允许所有客户端访问所有守护进程,但不建议这样做。
要开放一个本地系统以从远程系统访问时,请遵循这些准则:
3、具体例子
为了一个更安全的系统,把以下行放入hosts.deny中以阻止所有访问:
$ cat /etc/hosts.deny
...
ALL : ALL : echo '%c tried to connect to %d and was blocked' >> /var/log/tcpwrappers.log
此行可以防止任何客户端连接到任何服务,除非在hosts.allow中专门允许的连接。当匹配这条规则时,它向/var/log/tcpwrappers.log文件中添加一行。%c扩展到客户端信息,以及%d扩展到客户端试图连接的守护进程名称。
也可以在hosts.allow中包括行,以明确允许访问某些服务和系统。例如,下面的hosts.allow文件允许任何客户端连接到OpenSSH守护进程(ssh、scp、sftp),但只允许来自本地系统网络和192.168. 子网用户的telnet连接:
$ cat /etc/hosts.allow
sshd: ALL
in.telnet: LOCAL
in.telnet: 192.168.* 127.0.0.1
...
第一行允许从任何系统(ALL)连接到sshd。第二行允许与该服务器(LOCAL)在同一个域的任何系统的连接。第三行匹配其IP地址始自192.168.的任何系统以及本地系统。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者