tcp_wrapper 是一种主机访问控制的工具 配置简单 易用 收敛速度极快。你懂的!

tcp_wrapper :配置简易, 配置文件:/etc/hosts.allow  deny

tcp_wrapper:能够实现授权访问,非独立守护进程,工作在linux内核中的tcp协议栈上

1、并非所有的服务均能由tcp_wrapper

2、判断:某服务程序是否能够由tcp_wrapper

动态编译

# ldd `which xinetd` | grep wrapper

libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f9f62cf9000)

命令进行检查其是否连接至libwrap.so.0 => lib64/libwrapper.so.0

如果某一个程序被连接到这个库上就能被tcp_wrapper控制

静态编译:

命令:strings /path/to/program


实例:

yum -y install telnet # 注释 telnet 由 xinetd 代为监听
# chkconfig xinetd on
# netstat -tnlpa | grep 23
tcp 0 0 :::23 :::* LISTEN 65117/xinetd
# cat /etc/hosts.allow
in.telnetd: 192.168.0. # 只允许
# cat /etc/hosts.deny
in.telnetd: ALL


实例参考:进行匹配:单个IP的匹配

cat /etc/hosts.allow
in.telnetd: 172.16. EXCEPT 172.16.251.105 # 进行排除 允许172.16.0.0/16,这个网段的主机访问,但惟独拒绝172.16.251.105 这台主句访问
# cat /etc/hosts.deny
in.telnetd: ALL


配置文件语法格式:

daemon_list: client_list [:options]

daemon_list:

应用程序名称;

应用程序列表:如果有多个,用逗号分隔即可;

ALL:匹配所有进程

client_list:

IP地址:172.16.100.100

主机名:www.firefox.com

网络地址/子网掩码:掩码仅允许使用长格式,不允许使用CIDR格式

172.16. 表示 172.16.0.0/255.255.0.0

tcp_wrapper有几个内置的Macro

用于client_list的有:ALL, KNOWN, UNKNOWN, PARANOID

用于daemon_list的有:ALL

EXCEPT: 可以用于clientdaemon之中,起到排除功能

[:options]

hosts.allow文件使用deny选项: hosts.allow文件定义拒绝规则

hosts.deny文件使用allow选项:在hosts.deny文件定义放行规则

spawn

echo

%c: user@host

%s: server@host

%h: 客户端主机名

%p: 服务器上的进程的PID



应用实例:

deny:在hosts.allow文件定义拒绝规则

cat /etc/hosts.allow
in.telnetd: 172.16. : deny

同样:allow : 在hosts.deny文件中使用allow选项:在hosts.deny文件定义放行规则

cat /etc/hosts.allow
in.telnetd: 172.16. : allow

in.telnetd: ALL EXCEPT 172.16.251.105 : deny
# 在hosts.allow 文件中定义拒绝所有的用户仅允许172.16.251.105

spawn:

记录某一用户尝试登录此主机保存日志文件中并加上date,宏记录客户端主机的

#in.telnetd: ALL : spawn echo `date` login attempt from %c to %s >> /var/log/tcp_wrapper.log
#cat /var/log/tcp_wrapper
Mon Mar 31 10:24:14 CST 2014 login attempt from 172.16.251.105 to in.telnetd@172.16.100.7
Mon Mar 31 10:24:15 CST 2014 login attempt from 172.16.251.105 to in.telnetd@172.16.100.7

echo  的信息无须加引号,否则,命令替换可能不会进行

%c :user@host

%s : server@host

%h : 客户端主机名

%p : 服务器上的进程的PID


TCP_WRAPPER 匹配机制:

1、先检查/etc/host.allow ,如果被允许,则直接放行

2、如果被上列表没有匹配到则检查/etc/hosts.deny 如果被拒绝,则禁止访问

3、如果二者均无匹配,则放行


详情请参考: man5  hosts_access