TCP Wrappers 访问控制
TCP Wrappers 是一种安全机制,通过包裹TCP服务程序(如SSH、FTP等),在连接请求到达服务程序前进行安全检查。
大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。
可以使用 rpm -q tcp wrappers
检查软件包是否安装。
TCP Wrappers 保护机制的实现方式
- 使用
tcpd
程序: 直接对其他服务程序进行保护,需运行tcpd
程序。 - 调用
libwrap.so.*
链接库: 不需要运行tcpd
程序,广泛应用于网络服务程序,效率更高。
-
验证是否使用TCP Wrappers:
使用
ldd
命令查看服务程序是否调用了libwrap.so.*
链接库。ldd $(which ssh vsftpd)
TCP Wrappers 的访问策略
TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
TCP Wrappers 通过 /etc/hosts.allow
和 /etc/hosts.deny
文件分别设置允许和拒绝的访问策略。
文件内容格式
<服务程序列表>:<客户端地址列表>
服务程序列表:
ALL
:代表所有服务。- 单个服务程序:如
vsftpd
。 - 多个服务程序:如
vsftpd,sshd
。
客户端地址列表:
ALL
:代表所有客户端地址。LOCAL
:代表本机地址。- 可使用通配符 `` 和
?
。 - 支持网段地址和区域地址,如
192.168.80.
或.benet.com
。
策略基本原则
- 首先检查
/etc/hosts.allow
文件: 如果找到匹配策略,则允许访问。 - 然后检查
/etc/hosts.deny
文件: 如果找到匹配策略,则拒绝访问。 - 未匹配到任何策略: 则允许访问。
- 策略设定:
- 允许所有,拒绝个别: 只需在
/etc/hosts.deny
文件中添加拒绝策略。 - 允许个别,拒绝所有: 在
/etc/hosts.allow
中添加允许策略,并在/etc/hosts.deny
中设置ALL:ALL
的拒绝策略。
- 允许所有,拒绝个别: 只需在
实例
限制SSH服务仅允许从特定IP地址访问。
-
设置允许策略:
vi /etc/hosts.allow sshd:12.0.0.1,192.168.80.*
-
设置拒绝策略:
vi /etc/hosts.deny sshd:ALL
此配置仅允许 12.0.0.1
和 192.168.80.0/24
网段的主机访问 sshd
服务,其他地址将被拒绝。