tcp-wrapper

tcp_wrapper
只提供过滤功能的库文件,具体过滤什么要由管理员定义限制。在 /etc/hosts.allow /etc/hosts.deny 里定义。如果两个文件中都定义了同一个网段,那么按照检查次序,当用户来访问主机时, tcp_wrapper 首先访问 /etc/hosts.allow ,若有明确定义,就允许访问,若没有明确定义,就访问 /etc/hosts.deny 文件,若此文件中有明确定义则拒绝访问,若没有明确定义就允许访问。所以,如果两个文件中都没有明确定义,则默认为允许访问。
eg. 如果只想允许某网段访问,就在 allow 中明确定义,再在 deny deny all
eg. 如果只想拒绝某网段,则在 allow 中不定义,在 deny 中明确写出该网段即可。
  如何写规则?参照如下:
daemon_list: client_list [:options]
daemon_list 进程列表,表示控制哪些进程服务
client_list 用户列表,表示控制哪些用户
到底哪些进程可受 tcp_wrapper 控制,可以通过一个命令查看,这里举例查看 xinetd 是否可受 tcp_wrapper 的控制。
#ldd `which xinetd`
则会显示如下 ( 显示的红色为笔者加注! )
    linux-gate.so.1 =>  (0x004ae000)
    libselinux.so.1 => /lib/libselinux.so.1 (0x00164000)
    libwrap.so.0 => /lib/libwrap.so.0 (0x00110000)
    libnsl.so.1 => /lib/libnsl.so.1 (0x00880000)
    libm.so.6 => /lib/libm.so.6 (0x00302000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x001d3000)
    libc.so.6 => /lib/libc.so.6 (0x0055e000)
    libdl.so.2 => /lib/libdl.so.2 (0x00ed6000)
    libsepol.so.1 => /lib/libsepol.so.1 (0x00118000)
    /lib/ld-linux.so.2 (0x003df000)
如果该命令进程链接到上面红色显示的库文件上,则说明其接受 tcp_wrapper 控制。
例如 httpd smbd squid 等都有自己的控制机制,都是不受 tcp_wrapper 控制的。但也有很多都是受 tcp_wrapper 控制的,如 xinetd vsftpd ssh 等等都是受 tcp_wrapper 控制的。但是,到底受不受 tcp_wrapper 控制还取决于编译时的选项,如果链接到 /lib/libwrap.so.0 (0x00110000) 这个库文件上,才能受 tcp_wrapper 的控制。
当我们知道一个进程是否能够接受 tcp_wrapper 控制之后,如果能,我们就要自己定义规则了。
假如说想同时控制多个进程的话,进程之间用逗号隔开,如下
daemon1 daemon2:client1 client2
此条语句可以实现同时控制多个进程允许或拒绝多个用户列表访问。
如果主机上有多个网卡多个 IP 地址,又只想控制其中的一块网卡,则可用以下语句实现:
daemon_list@host:client
其中, @host 表示对于哪个 IP 地址而言是允许或拒绝用户列表访问的。
要注意的是,编辑 /etc/hosts.allow /etc/hosts.deny 文件后, tcp_wrapper 的规则会立即生效!
 

本文出自 “兜兜转转” 博客,转载请与作者联系!

你可能感兴趣的:(职场,休闲,tcp-wrapper)