TCP_wrappers是linux上一种特殊的防火墙, TCP 封包会先经过所谓的 IP 过滤机制( IP Filtering ),这是 Linux 提供的第一层保护,他可以将你不想要的来源 IP (经由 TCP 封包的 Head 资料)先当掉再说!如果可以通过的话,在就是要通过TCP_wrappers过滤.如果上面两个都通过了,再就根据每个服务访问控制的设定决定客户机能得到不同的权限和信息..
TCP_wrappers防火墙主要涉及到两个文件/etc/hosts.allow和/etc/hosts.deny,这两个文件被整合到xinetd中去了.我们需要安装tcp_wrappers这个套件,因为这两个文件本身就是tcp_wrappers的设定文件.也就构成了一个基础的防火墙.
tcp_wrappers设定tcp封装的包是否可以进入/etc/hosts.allow和/etc/hosts.deny中,如果一个服务是受到 xinetd 或 TCP_Wrappers 的控制时,那么该服务就会受限于 hosts.allow 与 hosts.deny 的管理了!你的首先判断一下某个服务是否可以使用tcp_wrappers防火墙.vsftpd . telnet .sendmail、sshd、tcpd、xinetd、gdm、portmap都可以使用。很多服务在/etc/xined.d/目录中,可以对服务进行规则的设置...查看一个服务是否可以用tcp_wraper控制.
我们以ftp服务和telnet为咧,有一点得说明,机器名不只是/etc/sysconfig/network中定义,还有/etc/hosts,这两个文件中的机器名必须一致,否则即使你开启了telnet,别人也无法telnet进去...当时我就犯了这个错误.让我郁闷好长时间,终于发现问题所在..我服务器IP:192.168.0.195先安装一个xinetd包,然后安装ftp包和telnet包.接下来我们开始看/etc/hosts.allow文件..
[root@station195 Server]# rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
[root@station195 Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
[root@station195 Server]# rpm -ivh telnet-0.17-39.el5.i386.rpm
[root@station195 Server]# rpm -ivh telnet-server-0.17-39.el5.i386.rpm
编辑hosts.allow文件,写入一行vsftpd:192.168.0.0/255.255.255.0 EXCEPT 192.168.0.192
再编辑/etc/hosts.deny文件,加入一行vsftpd:ALL,然后执行此命令
[root@station195 ~]# chkconfig --level 35 vsftpd on
[root@station195 ~]# service vsftpd restart
我们还可以让别人登录服务器时的消息发给服务器,这就用到spawn命令....编辑hosts.allow文件....写入一句in.telnetd:ALL:spawn /bin/echo `date` %c %d | /bin/mail -s "somebody access our ftp." root
意思是说当有主机访问服务器时会向管理员发封邮件内容就是somebody access our ftp ...%c提取客户机的信息,%d是守护进程的名字...当我们用客户机来telnet服务器后,服务器自动向自己发个邮件,我们可以在服务器上使用mail命令查看内容...
Date: Thu, 25 Feb 2010 14:35:47 +0800
From: root <root@station195.example.com>
To:root@station192.example.com
Subject: somebody access our telnet.
Thu Feb 25 14:35:47 CST 2010 192.168.0.192 in.telnetd
我们还可以给对方造成一种假象,提示对方输入用户名和密码,输入都正确,但是进不去...这个会让人很郁闷是不是很好玩啊....下面就要用到twist命令了..我教你怎么玩...so easy..就那ftp为列...
编辑hosts.allow文件...写入一句
vsftpd:ALL:twist /bin/echo " welcome to server."
当在次访问FTP时就会提示输入用户名和密码,即使输正确了.但是你进不去的...
还可以返回给客户一句话,比方说在hosts.allow中写入
vsftpd:ALL:twist /bin/echo `date` "connection refused by %s."
再次访问ftp时,直接会退出来,返回的信息...
C:\>ftp 192.168.0.195
Connected to 192.168.0.195.
Thu Feb 25 15:15:41 CST 2010 connection refused byvsftpd@192.168.0.195.
Connection closed by remote host.
也可以将spawn和twist命令一起用...还在hosts.allow中插入一句话
vsftpd:ALL:spawn /bin/echo `date` %c to %s denied. >>/var/log/tcpwrapper.log:twist /bin/echo "attempt log to %s failed."
当登录服务器时会将返回想信息定向到tcpwrapper.log中..
Thu Feb 25 15:32:44 CST 2010 192.168.0.200 tovsftpd@192.168.0.195denied.
C:\>ftp 192.168.0.195
Connected to 192.168.0.195.
attempt log tovsftpd@192.168.0.195failed.
Connection closed by remote host.
我们还可以定义欢迎信息...banners,这儿就不详细讲述了很简单.这儿我讲hosts.allow文件最多.因为很多规则我们可以在这一个文件中定义.系统会先读取/etc/hosts.allow文件内容,当匹配不到规则的时候就会读取hosts.deny文件的内容了.建议初学者写规则时分在两个文件中写,熟练后再写在一个文件里...TCP_wrapper很重要,会经常用到那两个配置文件做访问控制用...喜欢linux的朋友要学好了^-^