欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

tcpwrappers--过滤TCP包头(/usr/sbin/tcpd)

程序员文章站 2022-04-22 10:14:56
tcpwrappers--过滤TCP包头(/usr/sbin/tcpd)   控制文件: 规则   匹配顺序: tcp-->tcpwrappers-->...

tcpwrappers--过滤TCP包头(/usr/sbin/tcpd)

 

控制文件:

规则

 

匹配顺序: tcp-->tcpwrappers-->hosts.allow--> hosts.deny,默认情况下这两个文件是空的,规则马上写马上生效.

1、如果在hosts.allow能够匹配到相应的规则,则允许,匹配到此结束。

2、如果在hosts.allow匹配不到相应规则,接下来匹配hosts.deny文件,如果匹配到则拒绝,匹配到此结束。

3、如果在hosts.allow和hosts.deny中都无法匹配到相应规则,则允许。

 

防火墙的规则设计思路:先在host.deny先拒绝所有,然后再hosts.allow逐个放开。

 

tcpwrappers过滤的依据:服务名字,其实就是服务对应二进制文件的文件名

 

vsftpd/httpd/postfix/samba/nfs/sshd/squid/xinetd

 

vsftpd: /usr/sbin/vsftpd

sshd: /usr/sbin/sshd

portmap: /sbin/portmap  --> rpcbind

xinetd: /usr/sbin/xinetd

 

查看vsftpd是否支持tcpwrappers

client-->vsftpd-(libwrap.so)->tcpwrappers

 

查看某个服务支持tcpwrappers过滤:

# rpm -ql tcp_wrappers |grep '\<libwrap.so\>'

/usr/lib/libwrap.so

 

查询xinetd服务是否支持tcpwrappers的过滤:

1.

# ldd `which xinetd `|grep wra

        libwrap.so.0 => /lib/libwrap.so.0 (0x00110000)

# ldd `which vsftpd` |grep wra

        libwrap.so.0 => /lib/libwrap.so.0 (0x003e1000)

2.strings

# strings /sbin/portmap |grep 'hosts.*'

/etc/hosts.allow

/etc/hosts.deny

------------------

实例1:

# service vsftpd start

为 vsftpd 启动 vsftpd:                                    [确定]

# chkconfig krb5-telnet on

# service xinetd restart

停止 xinetd:                                              [确定]

启动 xinetd:                                              [确定]

# netstat -tnlp |grep :21

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      2578/vsftpd         

# netstat -tnlp |grep :23

tcp        0      0 0.0.0.0:23                  0.0.0.0:*                   LISTEN      2635/xinetd         

------------

设置规则:

1.telnet只有192.168.0.254能访问

2.vsftpd192.168.0.0/24都能访问,除192.168.0.254

3.sshd 192.168.0.254,只要有登录则发邮件告知管理员

4.本机能够访问这三个服务.

 

# vim /etc/hosts.deny 

vsftpd: ALL

telnetd: ALL

sshd:   ALL

 

# vim /etc/hosts.allow 

in.telnetd:        192.168.0.254

sshd:           192.168.0.254: spawn echo "login attempt from %c to %s" | mail -s "information about sshd login attempt" root@baidu.com

vsftpd:         192.168.0.0/255.255.255.0 EXCEPT 192.168.0.254

ALL:            LOCAL .baidu.com

 

spwan 执行命令

%c 客户端地址

%s 服务器的地址

LOCAL 本地主机

 

hosts.allow和hosts.deny格式:

服务名字1, 服务名字2, ...: 客户机地址

[:动作]

 

1、如何找出名字

2、客户机地址:

ALL

network/mask  192.168.0.0/255.255.255.0 或 192.168.0.

127.

?

.uplooking.com

*.uplooking.com

EXCEPT

3、动作:

ALLOW

DENY 

 

*************************************************

[root@mail ]# vim /etc/hosts.deny 

 

vsftpd: ALL

in.telnetd: ALL

sshd:   ALL

 

[root@mail ]# vim /etc/hosts.allow 

 

in.telnetd: 192.168.0.254

vsftpd: 192.168.0.0/255.255.255.0 EXCEPT 192.168.0.254

sshd:   192.168.0.254: spawn echo "login attempt from %c to %s" | mail -s "information about sshd login attempt" root@baidu.com

ALL:    LOCAL, .baidu.com