tcp_wraper:
libwrap.so
必须在编译的时候链接到libwrap.so这个库之后才能实现调用tcp_wraper实现访问控制
可以通过ldd来查看
[[email protected] ~]# ldd `which sshd` |grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fe51d88b000)
如果出现libwrap.so则能实现wraper访问控制
静态链接:把动态库直接编译到服务里
strings命令查询是否加载静态hosts.allow和host.deny文件,如果加载,则受tcpwraper控制,否则不受控制
strings `which portmap` | grep hosts
tcpwraper控制机制:主要由/etc/hosts.allow和/etc/hosts.deny这两个文件进行控制
匹配顺序:首先查询/etc/hosts.allow,再查询/etc/hosts.deny,最后默认规则是允许所有通过
/etc/hosts.allow和/etc/hosts.deny文件格式:
xinetd:超级守护进程,管理非独立守护进程,非独立守护进程安需启动
standalone:独立守护进程
超级守护进程接收tcp_wraper控制,旗下所有非独立守护进程都受其控制
服务列表: 客户端列表(client_list) [:选项]
服务列表有下几种类型写法:
sshd:192.168.0.
vsftpd,sshd,in.telnetd #可执行程序名
ALL #所有受tcp_wraper控制的服务
[email protected]:1. #本机有2个IP地址,只希望服务只接收某一个IP地址是通过tcp_wraper控制的(1网段通过192.168.1.2访问vsftp受tcp_wraper控制)
客户端列(client_list)表有下几种类型写法:
IP
network address
network/mask(如192.168.1.0/255.255.255.0)
172.16.1.
HOSTNAME
FQDN #完整合格域名,如mail.mylinux.com.
.mylinux.com #域名
MACRO
ALL #所有来宾
LOCAL(本地来宾,IP和服务器在同一个网段的),KNOWN(主机名可以被正常解析的),UNKNOWN,PARANOID(主机名正向和反向解析不匹配)
EXCEPT #意思是除了,不包含
选项有如下几种类型写法:
DENY
ALLOW
spawn #记录日志
tcp_wraper宏定义:
%c:代表客户端信息([email protected])
%s:代表服务器信息([email protected])
%h:客户端主机名(hostname)
%p:服务ID(server PID)
tcp_wraper宏定义查询方法: man 5 hosts_access
tcp wraper
ssh仅允许172.16.0.0/16网段访问:
方法1:
1./etc/hosts.allow
sshd: 172.16.
2./etc/hosts.deny
sshd: ALL
telnet服务不允许172.16.0.0/16访问,但是允许172.16.100.200访问,其他客户端不受控制
方法1:
1./etc/hosts.allow
in.telnetd: 172.16.100.200:spawn echo “`date`, Login attempt from %c to %s” >> /var/log/tcpwarper.log
2./etc/hosts.deny
in.telnetd: 172.16.
方法2:
2./etc/hosts.deny
in.telnetd: 172.16. EXCEPT 172.16.100.200
方法3:
1./etc/hosts.allow
in.telnetd: ALL EXCEPT 172.16. EXCEPT 172.16.100.200
2./etc/hosts.deny
in.telnetd: 172.16.