符合使用tcp_wrappers条件:
1.所有以xinetd管理的服务都可以通过tcp_wrappers进行访问控制。
2.如果服务程序调用了libwrap.so这个动态链接库文件说明这个服务支持tcp_wrappers。
可以通过以下方式查看:
[root@server1 ~]# ldd `which vsftpd` | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0x00c20000)
以上看到加载libwrap.so.0,说明vsftpd支持tcp_wrappers。
主要文件:
/etc/hosts.allow 用来定义允许访问的
/etc/hosts.deny 用来定义拒绝访问的
访问控制判断顺序:
首先查看/etc/hosts.allow,如果匹配到一个条目,不在往下读取,如果在/etc/hosts.allow没有匹配条目,则读取/etc/hosts.deny,如果匹配,则拒绝,如果不匹配,则默认允许所有。
tcp_wrappers语法:
service:IP,domain,hostname:action
service: 服务即程序名称,如果有多个服务,那么就用逗号隔开
IP,domain,hostname:ip地址,域名,主机名
ip写法:192.168.0.1
192.168.0.0/24
这里不支持/24表示方法
域名: .example.com
主机名:station5
例:禁止192.168.0.5访问ssh
[root@server1 ~]# vim /etc/hosts.deny
sshd:192.168.0.5:deny
测试:
[root@station5 ~]# ssh 192.168.0.254
ssh_exchange_identification: Connection closed by remote host
注意点:
写在/etc/hosts.allow中最后的action,即allow 可以不写,同理/etc/hosts.deny中最后的action,即deny可以不写。通常只要配置hosts.allow就可以了,因为可以将 allow与deny都写在同一个档案中。如果想做的更规范一些,把允许的写到/etc/hosts.allow中,把拒绝的写到/etc /hosts.deny中。配置完成后,不用重启任何服务,配置会立即生效。
其他特殊参数:
ALL:代表全部的服务或所有IP,例ALL:ALL:deny
LOCAL: 代表来自本机,例: ALL:LOCAL:allow
UNKNOWN:代表不知道的IP或 domain或者服务
KNOWN:代表可解析的IP,domain信息
EXCEPT: 例外,例:ALL:ALL EXCEPT 192.168.0.5
spawn:调用shell,具有变量功能
twist:调用shell后,拒绝本次连接
实例1:只允许192.168.0.5访问ssh,其他的拒绝
[root@server1 ~]# vim /etc/hosts.allow
sshd:192.168.0.5:allow
sshd:ALL:deny
或分别把允许与拒绝写到各自文件
[root@server1 ~]# vim /etc/hosts.allow
sshd:192.168.0.5
[root@server1 ~]# vim /etc/hosts.deny
sshd:ALL:deny
或使用EXCEPT参数
[root@server1 ~]# vim /etc/hosts.deny
sshd:ALL EXCEPT 192.168.0.5:deny
实例2:当访问ssh服务时,给root管理员发一封邮件,拒绝其访问
[root@server1 ~]# cat /etc/hosts.deny
sshd:192.168.0.5:spawn echo "login attempt from %c to %s" | mail -s warning root
选项:%c客户端 %s服务端
测试:
[root@station5 ~]# ssh 192.168.0.254
ssh_exchange_identification: Connection closed by remote host
[root@server1 ~]# mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
&
Message 1:
Date: Sat, 7 Apr 2012 22:35:05 +0800
Subject: warning
login attempt from ::ffff:192.168.0.5 to sshd@::ffff:192.168.0.254
排错:
如果遇到配置后,语法有问题,可以查看/var/log/secure
Apr 7 22:33:46 server1 sshd[22824]: error: /etc/hosts.deny, line 1: bad option name:
"spawn(echo"