之前我介绍过了iptables实现访问控制,今天来聊一聊,简单一点的访问控制tcp wrapper。
通过tcpd进程来实现的,但是有条件
1.只能实现定义的
2.必须是tcp协议
首先聊一聊监听是如何实现的?
网络套接字编程:通过循环不停歇的一直查看端口是否有请求
例如:ftp服务监听21号端口,如果允许则转交给ftp服务器
ldd `which command` 用于查看所依赖的库,如果存在“libwrap.so.0 => /lib/libwrap.so.0 (0x008c8000)”,则表示接受tcp wrapper控制。否则无法通过tcp wrapper的设置来实现访问控制。
tcp wrapper的配置文件: /etc/hosts.allow 允许的配置文件
/etc/hosts.deny 拒绝的配置文件
第一步:首先去检查/etc/hosts.allow文件,如果有则放行
如果没有,则查看deny。如果deny中有,则拒绝,
如果都没有,则放行。
格式:
daemon_list:client_list [:options] ,选项用冒号隔开
可执行文件的文件名
例如:
daemon_list
vsftpd:192.168.0.
vsftpd,sshd,in.telnetd: 服务列表
ALL: 表示所有服务
daemon@host,在某一个地址上控制
vsftpd@192.168.0.15
cilent_list
有以下格式:
(1)单个ip
(2)网络地址: (1)network/mask ,mask 只能使用长格式255.255.255.0
(2)172.16.
(3)主机名称: (1)FQDN
(2).a.org 表示a.org域内的所有主机
(4)宏:ALL 表示所有主机或服务
本地 非FQDN格式的主机名称
KNOWN 已知主机,可以被解析的主机
UNKNOWN
PARANOID
EXCEPT 排除某个主机或网络
-----------------------------------------------------
举例:控制vsftpd的访问
禁止172.16.100.100主机的访问ftp服务
#vim /etc/hosts.deny
vsftpd:172.16.100.100
telent 是非独立守护进程,受超级守护进程的控制
telnet服务器端的可执行程序文件叫in.telnetd
#yum install telnet-server
#ldd `which xinetd`
超级守护进程受tcp wrapper的控制
#service xinetd start
#chkconfig telnet on
#in.telnetd:ALL EXCEPT 172.16.0.1
-------------------------------------------------------
选项:spawn 启动
#man 5 hosts_access 可以查看访问控制用法
#spawn echo "%u" 当访问某项服务时,控制显示用户名,我可以将其定向到日志中,我就可以知道谁登陆过。例如:
#in.telnetd:ALL EXCEPT 172.16.0.1:spawn echo Login attempt(`date`) %u from %a attempt to login %A ,the daemon is %d. >> /var/log/telnet.log
在允许中拒绝,在拒绝中允许
ALLOW
DENY
例如:
#vim /etc/hosts.deny
in.telnetd:172.16. : ALLOW
阅读(2163) | 评论(0) | 转发(0) |