Linux 中由tcp_wrappers实现的访问控制

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不止一次出现,下回再介绍别的!

相关推荐

ChinaWin / 0评论 2013-07-29