wozijisunfly 2009-05-16
访问控制可以通过防火墙、操作系统、应用程序本身等来实现。
tcp_wrappers能实现网络服务主机集中访问控制
1.控制的对象要想利用tcp_wrappers的集中验证功能,改网络服务必须链接libwrap.so这个模块,对于特定的服务,
可以通过如下命令来查看是否已配置tcp_wrappers(以sshd为例):
whichsshd(找到sshd的可执行文件路径/usr/sbin/sshd)
ldd/usr/sbin/sshd|greplibwrap
可以看到sshd服务链接了此模块。
2.控制的方式tcp_wrappers的访问控制集中在hosts.allow,hosts.deny两个文件中
文件的配置格式类似:
服务的可执行文件名:IP|Hostname|Domain:[action]
其中action为可选,这里再以sshd为例,本机IP:192.168.1.107,测试机IP:192.168.1.105
host.allow
sshd:192.168.1.107
host.deny
sshd:192.168.1.105
此时客户机不能SSH登录到主机
当修改host.allow为:
sshd:ALL(不区分大小写)
此时客户机能SSH登录,说明host.allow的优先级高于host.deny
当打开host.allow文件时,开头文字描述该文件用来配置哪些主机能访问INET服务
而INET服务都是由xinetd控制的,我想可能是一开始只有xinetd链接了libwrap.so,以至于将配置文件
说明直接写成控制INET服务(一点猜想,有待验证)
既然tcp_wrappers与xinetd关系密切,这里再以INET服务中的telnet为例
hosts.allow
in.telnetd:ALL
(服务的执行脚本可以从/etc/xinetd.d/telnet文件中server=/usr/sbin/in.telnetd获得)
hosts.deny
in.telnetd:ALL
此时任何人都可以访问
hosts.allow
in.telnetd:192.168.1.106
hosts.deny
in.telnetd:192.168.1.105
此时客户机就不能telnet上主机了。
这里telnet虽然由xinetd控制,但hosts.allow和hosts.deny的更改都是立刻见效,无须重启xinetd服务
由于allow比deny优先级高,可以在allow中定义允许访问的IP,而在deny拒绝所有,这样就只有明确
允许的用户才能访问。访问控制还真多,ACL不止一次出现,下回再介绍别的!