tcp-wrappers
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
#匹配顺序 hosts.allow,匹配成功则放行,不再匹配hosts.deny,反之才会去匹配hosts.deny,若二者冲突则以hosts.deny为准 以下内容摘自博客:http://wordpress.facesoho.com/server/linux-tcp_wrappers.html 简单介绍一下tcp-wrapers 一. 首先检查某种服务是否受tcp_wrappers 管理 ldd `which sshd` grep | libwrap 如果有这个链接,说面某个服务接受tcp_wrappers管理 二. 与tcp_wrappers相关的文件有 /etc/hosts.allow /etc/hosts.deny 三. 工作原理 1. 当有请求从远程到达本机的时候 首先检查/etc/hosts.allow 如有匹配的,就默认允许访问,跳过 /etc/hosts.deny这个文件 没有匹配的,就去匹配/etc/hosts.deny 文件,如果有匹配的,那么就拒绝这个访问 2. 如果在这两个文件中,都没有匹配到,默认是允许访问的 四. 这两个文件格式 服务列表 :地址列表 :选项 A. 服务列表格式:如果有多个服务,那么就用逗号隔开 B. 地址列表格式: 1. 标准IP地址:例如:192.168.0.254,192.168.0.56如果多于一个用,隔开 2. 主机名称:例如:www.baidu.com, .example.con匹配整个域 3. 利用掩码:192.168.0.0/255.255.255.0指定整个网段 4. 网络名称:例如 @mynetwork C. 选项: 主要有allow 和 deny 这两个选项 D. 其它的特定格式 ALL :指代所有主机 LOCAL :指代本地主机 KNOWN :能够解析的 UNKNOWN :不能解析的 PARANOID : 五. 扩展选项: spawn : 执行某个命令 [spawn原意是产卵] vsftpd : spawn echo “login attempt from %c”to %s” | mail –s warning root twist : 中断命令的执行: vsftpd : twist echo “login attempt from %c to %s ” | mail –s waring root 六. 一个例子 在/etc/hosts.allow文件中指定下面的内容 vsftpd: 192.168.0. in.telnetd, protmap: 192.168.0.8 在/etc/hosts.deny中指定一下文件 ALL: .cracker.org EXCEPT trusted.cracker.org vsftpd,protmap: ALL sshd: 192.168.0. EXCEPT 192.168.0.4 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包. [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 可以让登录服务器时的消息发给服务器,用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 [email protected] Thu Feb 25 14:35:47 2010 Date: Thu, 25 Feb 2010 14:35:47 +0800 From: myaccount <[email protected]> To: [email protected] Subject: somebody access our telnet. Thu Feb 25 14:35:47 CST 2010 192.168.0.192 in.telnetd 还可以给对方造成一种假象,提示对方输入用户名和密码,输入都正确,但是进不去. 下面就要用到twist命令[中文是 曲解] 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 [email protected]. 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 [email protected] denied. C:\>ftp 192.168.0.195 Connected to 192.168.0.195. attempt log to [email protected] failed. Connection closed by remote host. 还可以定义欢迎信息banners