tcp_wrapper知识整理
一、tcp wrapper简介
tcp wrapper是一种访问控制工具,类似于iptables可以作访问控制。
tcp wrapper只能对基于tcp协议的服务作访问控制,但并不是所有基于tcp协议的服务都能实现用tcp wraper作访问控制。
tcp wrapper实现访问控制主要依靠两个文件,一个是/etc.hosts.allow文件,另一个是/etc/hosts.deny文件.从文件的名字上可以理解:一个是定义允许的,一个是定义拒绝的。那这两个文件生效的次序是怎样的呢?
通过图示应该很容易理解,首先检查hosts.allow文件中是否有匹配的规则。如果有匹配的规则,则允许访问,如果没有匹配的规则,则检查hosts.deny文件中是否有匹配的规则,如果有匹配的规则,则拒绝访问,如果没有匹配的规则,则视为默认规则,默认规则则为允许,所以允许访问。
二、配置文件的格式:
daemon_list : client_list [[[: option] : option] ...]
daemon_list:
注意:必须是应用程序文件的名称;即存放于/usr/sbin目录中的文件名;
1.单个应用程序文件名称:
如:vsftpd
2.程序文件的名称列表,以逗号分隔:
如:sshd, vsftpd
3.ALL:不加区分的表示所有受tcp_wrapper控制的应用程序;
client_list:
1.单个IP地址或主机名,如果使用主机名,则必须保证本机可以解析;
2.网络地址:以前缀长度表示的掩码无效(172.16.0.0/16)
a) 如果有掩码,则必须使用完整格式的掩码;
如:172.16.0.0/255.255.0.0
b) 可以使用简短格式:
如:172.16.
3.内置的访问控制列表:
ALL:所有的主机;
KNOWN:所有能被当前主机正确解析的主机名;
UNKNOWN:所有不能被当前主机正确解析的主机名;
PARANOID:正向解析和反向解析结果不一致所有主机;
: option
deny:拒绝,主要用于hosts.allow文件,定义拒绝访问规则;
allow:允许,主要用于hosts.deny文件,定义允许访问规则;
spawn:生成,发起,执行;
实例:
sshd服务不允许172.16.0.0/16,但允许172.16.1.3访问:
方法一:
1、/etc/hosts.allow
sshd : 172.16.1.3
2、/etc/hosts.deny
sshd : 172.16.
方法二:
/etc/hosts.deny
sshd : 172.16. EXCEPT 172.16.1.3
方法三:
1、/etc/hosts.allow
sshd : ALL EXCEPT 172.16. EXCEPT 172.16.1.3
2、/etc/hosts.deny
sshd : ALL
三、扩展选项:
spawn使用示例:
sshd, vsftpd : ALL : spawn /bin/echo $(date +%F-%T) %c attempt login %s >> /var/log/tcpwrapper.log
%c: Client information: user@host, user@address, a host name, or just an address, depending on how much information is available.
%s: Server information: daemon@host, daemon@address, or just a daemon name, depending on how much information is available.
%h: client hostname
%p: server PID
实例:
用172.16.1.2主机ssh登陆172.16.1.3主机
/etc/hosts.allow
sshd : ALL : spawn echo `date` form %c to %s >> /var/log/tcp_wrapper.log
172.16.1.2登陆后
[root@zj03 ~]# cat /var/log/tcp_wrapper.log