1.tcpwraper概念:不同于iptables防火墙网络访问控制,iptables可对于tcp/ip进行所有访问控制并且工作在内核中,而tcpwraper只对部分具有tcp协议的服务进行网络访问控制,方便那些对iptables不熟悉的人使用,也就是说,只有那些链接libwraper.so库文件的服务,才受tcpwraper控制
2.ldd命令查询服务是否加载动态libwrap.so库文件,如果加载,则受tcpwraper控制,否则不受控制
ldd `which 服务名称` | grep libwrap
例如:ldd `which sshd` | grep libwrap
ldd `which xinetd` | grep libwrap
3.strings命令查询是否加载静态hosts.allow和host.deny文件,如果加载,则受tcpwraper控制,否则不受控制
strings `which portmap` | grep hosts
4.tcpwraper控制机制:主要由/etc/hosts.allow和/etc/hosts.deny这两个文件进行控制
匹配顺序:首先查询/etc/hosts.allow,再查询/etc/hosts.deny,最后默认规则是允许所有通过
/etc/hosts.allow和/etc/hosts.deny文件格式:
服务列表: 客户端列表 [:选项]
服务列表有下几种类型写法:
sshd
vsftpd,sshd,in.telnetd #可以写多个服务
ALL
[email protected]
客户端列表有下几种类型写法:
IP
network/mask(如172.16.1.0/255.255.255.0)
172.16.1.
FQDN #完整合格域名,如mail.willow.com
.example.com #域名
ALL #所有主机
LOCAL,KNOWN,UNKNOWN,PARANOID
EXCEPT #意思是除了
选项有如下几种类型写法:
DENY #在host.allow文件中可以写DENY
ALLOW #在host.deny文件中可以写ALLOW
spawn #可以在后面执行一样命令
tcp_wraper宏定义:
%c:代表客户端信息([email protected])
%s:代表服务器信息([email protected])
%h:客户端主机名(hostname)
%p:服务ID(server PID)
tcp_wraper宏定义查询方法: man 5 hosts_access
5.实例:不允许1.1.1.0/24访问本机telnet服务,但允许1.1.1.100访问,其他客户端不受控制
5.1.方法1:
vim /etc/hosts.allow
in.telnetd: 1.1.1.100
vim /etc/hosts.deny
in.telnetd: 1.1.1.0/255.255.255.0
5.2.方法2:
vim /etc/hosts.deny
in.telnetd: 1.1.1. EXCEPT 1.1.1.100
5.3.方法3
vim /etc/hosts.allow
in.telnetd: ALL EXCEPT 1.1.1. EXCEPT 1.1.1.100
vim /etc/hosts.deny
in.telnetd: ALL
6.在hosts.allow文件中,拒绝1.1.1.0/24访问本机sshd服务,这是一种不常见写法
vim /etc/host.allow
sshd: 1.1.1. :DENY
7.允许1.1.1.0/24访问本机sshd服务,但必须将其登入日志进行记录
vim /etc/hosts.allow
sshd: 1.1.1. :spawn echo "`date`, Login attempt from %c to %s" >> /var/log/tcpwarper.log