tcp_wrap:
工作在tcp层,对基于tcp的访问请求做控制。
工作在用户请求和服务监听套接字之间的检查过滤机制。可以实现对某种服务的访问请求,根据规则定义判断是否允许访问。
需要二进制程序加载对应的库文件才能予以控制。
tcpd 库:
包含在glib库中。
libwrap.so 动态库文件
有的程序在编译是已经编译为静态库文件。
检查应用程序是否受tcp_wrap控制
1.动态库文件
#ldd `which sshd`|grep libwrap
libwrap.so.*
显示二进制程序所需的库文件。若出现libwarp.so文件则说明使用动态库方式。
2.静态库文件
#strings `which portmap` |grep hosts
/etc/host.allow
/etc/host.deny
若出现以上文件,则说明已编译为静态。
tcp_warp访问控制文件:
/etc/hosts.allow
/etc/hosts.deny
语法格式:
DAEMON_LIST: CLIENT_LIST[ :OPTIONS]
DAEMON_LIST 二进制程序名,不是服务名。
ALL 表示所有受控制的程序
PROGNAME@IP 适用于主机有多个ip地址的情况,指定从哪个ip地址访问服务。
CLIENT_LIST 客户端列表
IP ip地址
NETWORKADDR 网段
NETWORK/NETMASK
NETWORK.
HOSTNAME
FQDN
.DOMAIN
MACRO 宏
ALL 全部客户端
LOCAL 和本机网卡在同个网段内的主机
KNOWN FQDN可以被正常解析
UNKNOWN FQDN无法解析
PARANOID FQDN正向解析和反向解析不匹配
EXCEPT 除了,不包含
OPTIONS
DENY
ALLOW
spawn echo “STRINGS” >> /var/log/xxxx.log 记录日志
宏:
%c 客户端信息 格式为 USER@HOST
%s 访问服务的信息 格式为 SERVER@HOST
%h 客户端主机名
%p 访问服务的pid
控制流程:
hosts.allows --> hosts.deny --> 默认规则
1.检查hosts.allow,若有匹配规则则允许访问,若没有则检查hosts.deny
2.检查hosts.deny,若有匹配规则则拒绝访问
3.检查默认规则,默认为允许
进程:
standalone 独立守护进程
服务自我进行管理
transient 瞬时守护进程
由超级守护进程xinetd代为管理。
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1665030
原文地址:http://ggvylf.blog.51cto.com/784661/1665030