• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

简易防火墙建置与流量统计之三

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: 互连网

软件测试论坛讨论

领测软件测试网

  第 4 章 封包过滤防火墙ipchains的操作规则


  § 4.1 ipchains规则


  首先列出 ipchains 的规则表出来:



 ipchains -L 


 


  分为三大部分:


  input chains:输入时的过滤规则例如:



 ipchains -A input -p tcp -s 192.168.1.3 -d
 192.192.69.36 www -j DENY


 


  禁止 192.168.1.3 的来源位址去存取目的地 192.192.69.36 的网页


  forward chain :执行 IP 伪装的规则例如:



 ipchains -A forward -s 192.168.1.0/24 -d 0.0.0.0/24 -j MASQ


 


  启动 192.168.1.0~255 的 IP 伪装


  output chain:输出时的过滤规则(与 input 相反)例如:



 ipchains -A output -p tcp -s 192.192.69.36 www -d 192.168.1.3 -j DENY


 


  功用与 input 相同,只不过来源地址、目的地位址要对换


  每个所设的规则必须要去符合情况,以及要做些什么(目标)。


  举例来说,你可能要去拒绝从 IP 位址 192.168.1.3 的 ICMP 的封包,所以在这里我们的条件必须是协定 ICMP 及来源位址必须是 192.168.1.3,目的地为 192.192.69.39 这台主机(若不设则为全部),目标是’DENY’。


  指令写法为:



 ipchains -A input -p icmp -s 192.168.1.3 -d 192.192.73.35 -j REJECT


 


  § 4.2 命令的用法


  增加新的规则 -A:


  我们增加(-A)’input’的规则,要指明封包的来源位址(‘-s 192.168.1.3’)及协定


  (‘-p ICMP’),及应该结果为拒绝(‘-j DENY’)。


  范例:



 ipchains -A input -s 192.168.1.3 -p icmp -j DENY


 


  说明:拒绝来自192.168.1.3的icmp封包。


  删除规则 -D:


  我们删除 ipchains 规则有两种方法,首先我们知道在’input’的规则中只有一个(刚刚上面所增加的),也是第一个,所以我们可以使用数字来删除.。


  范例:



 ipchains -D input 1


 


  说明:删除input规则中的第一条。


  第二种方法是跟增加新的规则差不多,只不过是增加(-A)换成了删除(-D),这种方法在你如果设定了很多的规则的时候很好用,你可以不必去数它到底是第几个,只要照打一遍就行了,当然必须要一模一样才行。


  范例:



 ipchains -D input -s 192.168.1.3 -p icmp -j DENY


 


  § 4.3 指定协定种类


  使用 '-p'来指定协定种类,其中协定分为 'TCP' (Transmission Control Protocol)、'UDP' (User Datagram Protocol)、'ICMP' (Internet Control Message Protocol)或是全部(all),在这的协定写法没有分大小写,能以数字代替协定。


  在 /etc/protocols 中有注明各种协定,其中 tcp 为 6,udp 为 17,icmp 为 1。


  TCP(传输控制协定):


  位于应用层,如果应用程序(http、ftp)需要可靠性高的资料传输方式,那么就可以采用 TCP,TCP 会去检查资料是否安全到达,否则就重新发送资料。将传输的资料以 TCP 格式成为资料段,交由网络层的 IP 协定去处理,每一段资料含有一个检查值,接收者用它来验证资料是否受损,如果接收的资料没有损坏,会传回确认回去;如果资料有损会便会丢弃。TCP 具有可靠性及连线性。


  UDP(使用者资料协定):


  位于应用层,让应用程序直接使用封包传送服务,如 IP 提供的传送服务,UDP 协定并不会去检查封包是否安全到达目的地,因此传送速度快,但却是一个不可靠、非连线性的封包协定。


  ICMP(网络控制讯息协定):


  属于网际层的一部分,利用 IP 封包的传送,发送它的讯息,ICMP 发送的讯息执行了如侦测远端机器是否运作(‘ping’)、资料流的控制(当封包到得太快来不及处理时,目的主机传回一个 ICMP 的来源抑制讯息给发送者,告诉资料来源暂时停止传送封包)。


  ICMP 并没有 port,但它还是有它的选项参数可以使用,用来选择 ICMP 的类型。


  我们可以指定 ICMP 的名称或是数字代表(可以执行 ipchains -h icmp 去列出详细的名字)。


  § 4.4 指定UDP和TCP的port


  指定来源和目的地的IP位址 -s -d :


  来源(-s)和目的地(-d)的表示法有3种:


  1. 使用完整的主称名称,例如:‘mouse.oit.edu.tw’ 或 ‘localhost’


  2. 使用IP位址,例如:‘192.192.73.36’


  3. 允许某范围的IP位址,例如:‘192.192.73.0/24’ 或 ‘192.192.73.0/255.255.255.0’ 两者是一样的,都是包含了192.192.73.0 ~ 192.192.73.255的IP位址。


  在斜线(‘/’)的数字代表了IP位址,‘/24’是255.255.255.0,‘/32’是 255.255.255.255,其中比较重要的是’0/0’,指全部。


  范例:



 ipchains -A input -s 0/0 -j DENY


 


  说明:


  ‘0/0’表示指定所有来源的 IP 位址都会被拒绝,你也可以不加’-s’参数,也是指定所有的来源 IP 位址。


  § 4.5 重要的指定目标


  除了去指定协定之外,还可以细分去指定它的 port


  例如:


  指所有来源位址的 port 80,其中 80 也可以用名字来表示’www’



 -p tcp -s 0.0.0.0/0 80 


 


  假如要 TCP 封包可以到达 192.168.0.1 的任何 port,但除了 www 这个 port:



 -p tcp -d 192.168.0.1 ! www


 


  其中惊叹号’!’放置的位址也可以这样指定:



 -p tcp -d ! 192.168.0.1 www


 


  也可以表示为不是 192.168.0.1 和 www 的 port:



 -p tcp -d ! 192.168.0.1 ! www


 


  § 4.6 log 记录 /var/log/message


  若你有加上’-l’选项的话,关于 ipchains 的讯息会被记录在 /var/log/message 档案中,在标准的 Linux 系统上,kernel 的输出讯息经由 klogd(kernel logging daemon)所记录。其中的记录为:



 Jul 18 11:38:28 www kernel: Packet log: input REJECT eth0 PROTO=1
   (1)           (2)  (3)     (4)   (5)   (6)   (7)   (8)
192.168.1.3:8 192.168.1.1:0 L=60 S=0x00 I=7476 F=0x0000 T=32
   (9)           (10)       (11)  (12)   (13)    (14)    (15)   


 


  ipchains记录:


  (1) 日期、时间


  (2) 主机名称


  (3) 使用 kernel 来记录


  (4) 指出从 ipchains 产生讯息


  (5) 所使用的规则:input


  (6) 规则的目标:REJECT


  (7) 封包所经过的网络卡界面:eth0


  (8) 协定号码:1(ICMP)、6(TCP)、17(UDP)


  (9) 来源 IP 位址和 port


  (10) 目的地 IP 位址和 port


  (11) 封包的长度


  (12) TOS(Type of service)


  (13) IP 的 ID


  (14) 资料段偏?


 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网