今天我来为大家讲一下linux上一种特殊的防火墙TCP_wrappers防火墙, 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控制.
用此命令#ldd `which servername`.返回想信息中有很多lib开头的链接文件..那些事库文件,说明此服务受TCP_Wrapper规则控制...
先看一下#cat /etc/xinetd.conf |less,如果enable和disable都为yes,那就以拒绝优先..
only_from #定义只有哪些主机可以访问该服务.
no_access #定义哪些主机不能访问该服务.
当only_from和no_access定义的主机由包含的关系时,以小范围的为主,比方说,我在only_from中定义运行1.1.1.0网段主机可以访问,在no_access中定义1.1.0.0主机不能访问.这时而不是拒绝优先了,切忌.而是以only_from为准...
cps #定义限制连接进来的主机数目.
per_source #定义一台主机最大连接数目,通常和cps混用...
instance #定义最大连接数目,这个数目是指不同的主机连接进来的数目,而不是同一台主机连接进来的数目..
bind #定义指定监听的IP地址(后只跟IP地址,而不是网卡的名字.)
baner #定义欢迎信息,后面指定一个文件路径.此文件内容可自己定义..
socket_type = stream #定义使用tcp协议..
single_threaded #定义单线程
multi_threaded #定义多线程
我们以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
编辑/etc/xinetd.d/telnet将disable = yes改为disable = no(启动telnet,默认不会开启.)
[root@station195 Server]# service xinetd restart
[root@station195 Server]# chkconfig xinetd on
编辑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
当我们用192.168.0.192机器来访问服务器时发现访问不了.原因在于当客户端进行TCP请求时服务器首先读取hosts.allow文件.匹配192.168.0.0网段内所有主机除了192.168.0.192外...所以里面没有匹配到192.168.0.192,然后会读取hosts.deny文件vsftpd:ALL这个ALL中包含有客户端的192.168.0.192然后就被拒绝了.当换个IP(必须是192.168.0.0网段内的主机)再次访问服务器时就可以登录进去了...
我们还可以让别人登录服务器时的消息发给服务器,这就用到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命令查看内容...
From Thu Feb 25 14:35:47 2010
Date: Thu, 25 Feb 2010 14:35:47 +0800
From: root <>
To:
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 by .
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 to denied.
C:\>ftp 192.168.0.195
Connected to 192.168.0.195.
attempt log to failed.
Connection closed by remote host.
我们还可以定义欢迎信息...banners,这儿就不详细讲述了很简单.这儿我讲hosts.allow文件最多.因为很多规则我们可以在这一个文件中定义.系统会先读取/etc/hosts.allow文件内容,当匹配不到规则的时候就会读取hosts.deny文件的内容了.建议初学者写规则时分在两个文件中写,熟练后再写在一个文件里...TCP_wrapper很重要,会经常用到那两个配置文件做访问控制用...喜欢linux的朋友要学好了^-^
阅读(2625) | 评论(0) | 转发(0) |