首页 安全基础 网络安全 安全协议 病毒分析 防火墙 OS安全 无线安全 Web安全 PKI与PMI 入侵检测 经典案例
安全审计 设备安全 安全管理 安全标准 法律法规 隔离网闸 DB安全 XML安全 开源项目 资源下载 安全论坛 备份恢复
 当前位置:首页>>防火墙>>iptables>>正文
数据包过滤技术+ipchains
文章出处:   发布时间:2005-06-12   点击:0
 

  作者:swap(慕容小雨)   

  大家都知道,防火墙技术的几大类型,不外是数据包过滤和ip过滤+ids……WINDOWS下的东东,相必大家都早已熟悉,比如NORDON和我们的天网,以及各大安全公司的自家产品!相对来说freeLINUX世界,这些东西大家了解都比较少,SO今天慕容就拿"无辜"ipchains 诠释ing 
  
防火墙和ids系统的大多特征,不外是规则的定义。linux中,允许一个数据包进入/禁止进入系统,都决定于规则是否允许。其实ipchains也不外如so 网络编程和网络协议的实现都离不开tcpudp,这里tcp/ipudp的图形mod我就不画出来了,大家自己都最好看看(推荐tcp/ip的三卷)linux中,执行数据关检验工作的工具被叫做ipchians(其实就是将ip和数据关的英文复数形式缩写在一起的),相信大家在默认安装linux时候都装了此工具,如果没有,可以到http://www.rustcorp.com/ipchians下去down,或者干脆找google的麻烦啦

一:编译和安装 
#所载目录/usr/local/src中,  汗,现在的ipchians版本不知道是多少了,我的linux比较old,拿redhat6.0开刀的,大家最好用新的 
[root@swapbox src]#tar -xvzf ipchians-1.3.9.tar.gz 
               #cd ipchians-1.3.9 
               #make;make install 
               ……………………详细不再叙述,老套ing 
二:数据校验过程图 

  输入数据      |-------|   是    |              |       |------------- |  否   |--------|    |---|   |---| 
-  ------------|合法吗?|-------->|数据关校验     |------>|判断是否真实数据|----->|转发数据关|--->|出关|-->|传输| 
               |-------|         |<规则1><规则2>.|       | ------------|      |<规则1,2,>|   |----|   |---| 
                                                              | 
                                                              | 是 
                                                           |----| 
                                                           |执行 | 
                                                           |----| 
三:操作 
参数 
--------------------------------------------------------------------------------------------- 
-A   被选中数据关末尾添加一个/多个规则。如加的规则适合多个ip/port的组合,许把这些新规则添加到每个种组合 
-D   对应上面参数,删除一个/多个规则。 
-R   被选中数据关中转换一个规则。如源/目的地址名匹配多个数据项,替换无效,ipchians将会返回一个出错信息。 
-I   给定规则编号中,插入规则 
-L   列出数据关中,已经设置好的全部规则 
-F   类似-D参数,清空被选中数据关已经设置好的规则 
-Z   对ipchians对计数器清0 
-N   建立一个新的数据关 
-X   删除一个数据关 
-P   某指定的数据关设置为缺省的检验状态 
--------------------------------------------------------------------------------------------- 
参数关系 
-------------------------------------------------------------------------------------------- 
Chian      ipchian程序的一个执行副本将要对之进行控制的数据关名字,缺省下:输入数据关,转发和输出数据关 
Rulespec   规则定义, 
Rulenum    准备对之进行设置的规则的编号(假设该规则号已经存在) 
Target     如果系统kernel发现一个数据包匹配了本数据关中某个规则,将安装此处定义采取行动。 
           常用target有:accept,reject,deny(其中deny命令比较温和,拒绝包的同时,还象发信方返回一个icmp信息,嘿嘿) 
Options    可用在每一个规则中的附加可选参数 
---------------------------------------------------------------------------------------------- 
例子: 
[roor@swapbox]#ipchian -A chian rulespec options 
[roor@swapbox]#ipchian -D chian rulespec options 
[roor@swapbox]#ipchian -P chian target options 
................... 
四:规则定义 
rule specification -------->缩写rulespec  是由一系列彼此独立的命令行参数组成的,如下: 
-p protocal 定义本规则将对哪些类型的ip数据包起作用。包括/etc/protocols文件中的协议,还可使用数字值来代表那些没有/etc/protocols 
   文件里列出的协议。如在protocol前加一个(!)作前缀,就表示"非"。如"-p !icmp"就是代表"除icmp之外的所有协议" 
-s source/mask port 定义本规则将匹配什么样的源ip地址。例如:"-is 192.168.42.0/24 1024:65535"定义192.168.42.0网络中 
   任何主机的1024到65535范围内的端口。同样前加(!)都不表示"非"。例如:"-s !192.168.42.7" 
--source-port port 在没指定ip地址情况下定义一个端口(端口范围)port1:port2 ----下限:上限。 
  比如:"--source-port 0:1023" 
-d destination/mask port  与-s参数选项的作用完全一样,只是本参数用来定义目的ip地址而非源地址。 
--destination-port port 与--source-port参数完全一样,用来定义目的端口而非源端口 
--icmp-type typename 对icmp数据包设置一个规则。例如:"ipchains -h icmp"即可看到一个各种类型的清单。 
-j target 定义规则匹配时将要采取的行动为target,比如,accept,deny等 
-i interface 定义此规则将对哪一个接口设备起作用,比如eth0,eth1等,"-i !ppp1" 
-f 设置规则作用于任何数据包分段,因为不可能每个分段都包含ip分段头信息,so分段ing!可联合i来使用,比如,我们准备拒绝除 
  eth0外的所有设备的数据分段,"!-f -i eth0 -j ALLOW" 
-------------------------------------------------------------- 
附加可选参数(linux下什么都好,就是tmmd的参数和命令太多,还是GUI的世界快乐) 
-b  设置本规则起双向作用 
-v  版本啦 
-n 给出数字方式输出,普通模式下,列出所有规则/使用-v来改变规则都会十所有ip地址名字被解析。 
-l  kernel内记录所有匹配规则的数据包 
-x  使用-l操作打印规则数字。默认情况下,精确到最接近1000或者1000000 
-y  只匹配syn的数据包,ack或者FIN位被设置的数据包不在考虑范围内。tcp表中的syn位是用来初始化一个连接的。 
五:应用事例 
1.使来自192.168.1.8的连接被丢弃,但允许从本地连接, 
[roor@swapbox]#ipchian -A input tcp -s 192.168.1.8 -j DENY -Y 
2.阻断任何对8080端口的连接,并记录所有尝试连接, 
[roor@swapbox]#ipchian -A input -p tcp --destination-port 8080 -j DENY -l 
3.除端口123外任何来自swap.feelids.com的所有数据包。许2次匹配 
[roor@swapbox]#ipchian -A input -p tcp -s swap.feelids.com 123 -j ACCEPT 
[roor@swapbox]#ipchian -A input -p tcp -s swap.feelids.com -j DENY 
六:安全对策/解决方案 
ipchains的包过滤技术有一些很不错的功能,比如,日常所碰到的"死亡之ping"或者其他包轰炸等,而且可过滤掉本网络内不需要的服务! 
过滤ping 
[roor@swapbox]#ipchian -A input -p icmp -j DENY -f 
过滤服务,比如:portmapper(111的port),telnet(23),ftp(21),比较"流氓"的finger(79),auth身份验证(113),x-windows(6000-6010)等 
hoho,好象东东太多了,so,拿脚本来实现吧 
可用vi ipchains-filter.sh 
或者emacs ipchians-filer.sh 来实现 
#!/bin/sh 
# firewall for ppp0 on tcp ports filter 111 123 23 21  79 113 and 6000-6010 
#deny any incoming icmp echo-reply packets 
#get loged, chmod 0755 ipchains-filter.sh | ipchains-filter.sh a+x ipchains-filter.sh &./ipchians-filter.sh 
#use,It's my soal,  script baby.........i love you 
IPC=/sbin/ipchians 
$IPC -F input 
$IPC -A input -p tcp --destination-port 111 -j DENY -l  -i ppp0 
$IPC -A input -p tcp -s swap.feelids.com 123 --destination-port 123 -j ALLOW -l  -i ppp0 
$IPC -A input -p tcp --destination-port 123 -j DENY -l  -i ppp0 
$IPC -A input -p tcp --destination-port 23 -j DENY -l  -i ppp0 
$IPC -A input -p tcp --destination-port 21 -j DENY -l  -i ppp0 
$IPC -A input -p tcp --destination-port 79 -j DENY -l  -i ppp0 
$IPC -A input -p tcp --destination-port 113 -j DENY -l  -i ppp0 
$IPC -A input -p tcp --destination-port 6000:6010 -j DENY -l  -i ppp0 
^-^ 
注意:-l是为了在syslogd中加一条log地! 
再加一个脚本 remove-ipchians.sh 
vi remove-ipchains.sh 
#!/bin/sh 
#chmod 0755 remove-ipchians.sh 
#remove all of the input files form the firewall 
/sbin/ipchians -F input 
^-^ 
------------------------------------------------> 
  好累ing,暂时就写到这里吧,学校被封了,夸张的是哥们那有linux玩,so,写点拙作出来,因为怎么看关于ipchians的paper都好少而这个东东虽然好用,又满累人的,算是送给admin们的礼物吧!写的不好和不对了,扔点eggs(反:写好有什么奖励没?咚,谁扔鸡蛋了?) 
 怎么算也是swap的一"帆"累人的笔记,copy时候给点面子,嘿嘿,把偶大名也++喽!

作者:
[返回顶部↑]  [推荐好友] [查看评论]  
用户名: 新注册) 密码: 匿名评论 [查看评论]  发表评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 
↑文章搜索
  关键字:  
  范  围:  
  开始搜索  
※相关文章※
 

◎防火墙脚本
◎netfilter/iptables 简介
◎linux下nat服务
◎iptables中文man文档
◎iptables设置一例
◎iptables的状态检测机制
◎iptables-1.1.9指南(超经典

 
※热点文章※
  ·Linux 2.4中netfilter框架
·透明防火墙架设的完全攻略
·建立一个带宽、线程可控的
·用iptables实现NAT
·防火墙之基础篇(iptable)
·iptables应用之动态DNS
·怎样用ipchains构建防火墙
 

关于我们 | 征搞启示 | 版权信息 | 联系我们 | 友情链接

版权所有:中国信息安全组织 © 2003-2005 Power by DedeCms