Linux 中由tcp_wrappers实现的访问控制

  访问控制可以通过防火墙、操作系统、应用程序本身等来实现。
  tcp_wrappers能实现网络服务主机集中访问控制

 1.控制的对象


  要想利用tcp_wrappers的集中验证功能,改网络服务必须链接libwrap.so这个模块,对于特定的服务,
  可以通过如下命令来查看是否已配置tcp_wrappers(以sshd为例):

  which sshd(找到sshd的可执行文件路径/usr/sbin/sshd)
  ldd /usr/sbin/sshd | grep libwrap

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

 

你可能感兴趣的:(linux,防火墙,网络应用,脚本,ssh)