Tcp-Wrapper:负责管理一些网络服务,控管哪些ip可以连接,哪些ip拒绝连接。
查看tcp-wrapper是否安装:
复制代码 代码如下:
[root@HI0-OA-nagios ~]# rpm -qa|grep tcp
tcp_wrappers-7.6-40.4.el5
查看tcp_wrappers包含哪些文件:
复制代码 代码如下:
[root@HI0-OA-nagios ~]# rpm -ql tcp_wrappers-7.6-40.4.el5
/usr/
include/tcpd.h
/usr/lib/libwrap.a
/usr/lib/libwrap.so
/usr/lib/libwrap.so.0
/usr/lib/libwrap.so.0.7.6
/usr/sbin/safe_finger
/usr/sbin/tcpd
/usr/sbin/try-from
/usr/share/doc/tcp_wrappers-7.6
/usr/share/doc/tcp_wrappers-7.6/BLURB
/usr/share/doc/tcp_wrappers-7.6/Banners.Makefile
/usr/share/doc/tcp_wrappers-7.6/CHANGES
/usr/share/doc/tcp_wrappers-7.6/DISCLAIMER
/usr/share/doc/tcp_wrappers-7.6/README
/usr/share/doc/tcp_wrappers-7.6/README.IRIX
/usr/share/doc/tcp_wrappers-7.6/README.NIS
/usr/share/man/man3/hosts_access.3.gz
/usr/share/man/man5/hosts.allow.5.gz
/usr/share/man/man5/hosts.deny.5.gz
/usr/share/man/man5/hosts_access.5.gz
/usr/share/man/man5/hosts_options.5.gz
/usr/share/man/man8/tcpd.8.gz
一般来说Tcp-Wrapper支持的服务有pop3、sshd、vsftpd、telnet、imap等。
判断一个服务能否被Tcp-Wrapper支持,这里以sshd为例:
复制代码 代码如下:
[root@HI0-OA-nagios ~]# ldd /usr/sbin/sshd
linux-gate.so.1 => (0x00e16000)
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x005a9000)
libpam.so.0 => /lib/libpam.so.0 (0x00873000)
libdl.so.2 => /lib/libdl.so.2 (0x001f1000)
lib
selinux.so.1 => /lib/libselinux.so.1 (0x005b1000)
libaudit.so.0 => /lib/libaudit.so.0 (0x002e4000)
...
省略N项,看到上面的libwrap.so.0 => /usr/lib/libwrap.so.0 (0x005a9000)这一行了吧,形如此所示的便是支持了。
当封包到达主机之后,使用 TCP-Wrapper 会先参考 hosts.allow,若是该服务在 hosts.allow 里面,就会先被通过,如果不在 hosts.allow 里面,就会继续往下,参考 hosts.deny,如果该服务在 hosts.deny 在该项目里面,那么就无法使用;最后,万一该服务在 hosts.allow 或 hosts.deny 里被没有被描述的话,就可以使用。实际中,都是先 deny 所有的 service,再逐一打开。因此,都会在 hosts.deny 里会设定 ALL:ALL,再到 hosts.allow。
举个例子:
复制代码 代码如下:
vi /etc/hosts.deny
sshd:ALL EXCEPT 192.168.1.100: spawn (/bin/echo illegal connection attempt from %h %a to %d %p at `date` >>/var/log/unknow.log | mail root) &
注解:
只是允许192.168.1.100访问sshd,连接到linux。spawn开始的这一段意思是除了192.168.1.100之外的所有的访问都把它记录到一个log文件中去
至于参数的含义,man hosts.deny 吧,答案尽在man中了。