介绍
- 作者:Wieste Venema
- 工作在第四层(传输层)的TCP协议
- 对有状态连接的特定服务进行安全检测并实现访问控制
- 以库文件形式实现
- 某进程是否接收libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的
- 判断服务程序是否能够由tcp_wrapper进行访问控制的方法:
ldd /PATH/TO/PROGRAM | grep libwrap.so
strings PATH/TO/PROGRAM | grep libwrap.so
TCP_Wrappers的使用
- 配置文件:
/etc/hosts.allow
,/etc/hosts.deny
- 帮助参考:
man 5 hosts_access
,man 5 hosts_options
- 检查顺序:
hosts.allow
,hosts.deny
(默认允许)
注意:一旦前面规则匹配,直接生效,将不再继续 - 基本语法:
daemon_list@host:client_list [:options:option...]
Daemon_list@host格式
- 单个应用程序的二进制文件名,而非服务名,例如 vsftpd
- 以逗号或空格分隔的应用程序文件名列表,如:sshd,vsftpd
- ALL表示所有接收tcp_wrapper控制的服务程序
- 主机有多个IP,可用@hostIP来实现控制
如:in.telnetd@192.168.0.254
客户端 Client_list 格式
- 以逗号或空格分隔的客户端列表
- 基于IP地址:192.168.10.1,192.168.1.
- 基于主机名:www.magedu.com .magedu.com 较少用
- 基于网络/掩码:192.168.0.0/255.255.255.0
- 基于net/prefixlen:192.168.1.0/24(CentOS 7)
- 基于网络组(NIS域):@mynetwork
- 内置ACL:ALL,LOCAL(匹配本地名字里面不带点的主机),KNOWN(主机名解析成地址),UNKNOWN(不能把主机名解析成地址),PARANOID
EXCEPT用法:
- 示例:
vsftpd:172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
[:options]选项:
- 帮助:
man 5 hosts_options
- deny:主要用在
/etc/hosts.allow
定义“拒绝”规则
如:vsftpd;172.16. :deny
- allow:主要用在
/etc/hosts.deny
定义“允许”规则
如:vsftpd;172.16. :allow
- spawn:启动一个外部程序完成执行的操作
- twist:实际动作是拒绝访问,使用指定的操作替换当前服务,标准 I/O 和 ERROR 发送到客户端,默认至 /dev/null
- deny:主要用在
测试工具:
tcpdmatch [-d] daemon[@host] client
-d
:测试当前目录下的 hosts.allow 和 hosts.deny
示例:
- 只允许192.168.1.0/24的主机访问sshd
/etc/hosts.allow
:
sshd:192.168.1.
/etc/hosts.deny
:
sshd:ALL
- 只允许192.168.1.0/24的主机访问 telnet 和 vsftpd 服务
/etc/hosts.allow
:
vsftpd,in.telnetd:192.168.1.
/etc/hosts.deny
:
vsftpd,in.telnetd:ALL
- 触发启动一个外部程序完成执行操作
sshd:ALL :spawn echo "$(date +%%F) login attempt from %c to %s,%d" >> /var/log/sshd.log
- 使用指定操作替换当前服务
vsftpd:172.16. :twist /bin/echo "connection prohibited"
说明:
- 在
/etc/hosts.allow
中添加,允许登录,并记录日志 - 在
/etc/hosts.deny
中添加,拒绝登录,并记录日志 - %c:客户端信息
- %s:服务器端信息
- %d:服务名
- %p:守护进程的PID
- %%:表示%
网友评论