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

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

Linux防火墙入门:ipchains入门

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 18次 | 进入软件测试论坛讨论

领测软件测试网
  ipchains 的规则链
  以下介绍 ipchains 的基本用法
  ipchains 中的指令,皆需要区分大小写。
  ipchains 把封包过滤规则分成四个类别,每一个类别可以是许多过滤规则的集合,称之为 "规则链"(chains),而封包过滤的过程,每个封包会进入其所属的链中,进行比对的动作,若某一条规则符合,就执行该规则所指定的目标动作(TARGET),如 DENY/REJECT/ACCEPT/MASQ/REDIRECT/RETURN;若不然,则继续下一条。
  若所有的规则都不符合,则由预设政策(policy),来决定该封包最后的命运。
  四种规则链,如下:
  ·input
  ·output
  ·forward
  ·使用者自订
  前三者,是内订就有的链。其特性,在课堂上说明之。
  ipchains 使用时的样板
  在设定 ipchains 的封包过滤规则时,有几个样板的动作,若先熟悉它们,往后就可自行套用,依此类推,很快地,您就可以进入这个天地之中。
  观察目前的设定
  在做设定时,通常我们会用指令来观察一下现况,作法如下:
  ipchains -L -n
  上述 -n 是指 不要进行 IP 反解的动作, 只显示数字 IP 即可, 以加快指令的速度。
  定义变数
  以下 $FW_IP 代表防火墙的第一片网卡的 IP,我们以下列来定义之。
  FW_IP="163.26.197.8"
  清除所有的规则
  一开始要先清除所有的规则,重新开始,以免旧有的规则影响新的设定。作法如下:
  ipchains -F
  选定预设的政策
  接着,要选定各个不同的规则链,预设的政策为何。作法如下:
  预设全部丢弃
  ipchains -P input DENYipchains -P output DENYipchains -P forward DENY
  或者,预设全部接受
  ipchains -P input ACCEPTipchains -P output ACCEPTipchains -P forward ACCEPT
  各个规则链的预设政策可独立自主的设定,不必受其它链的影响。
  以下练习,若目标为 DENY,则 policy 请设为 ACCEPT;若目标为 ACCEPT,则 policy 请设为 DENY,如此方可看出效果。
  开放某一介面
  开放 loopback 介面。作法如下:
  ipchains -A input -i lo -j ACCEPTipchains -A output -i lo -j ACCEPT
  因为 loopback 是 127.0.0.0/8,为 local 测试用途,因此开放。
  ipchains -A input -i eth1 -j ACCEPTipchains -A output -i eth1 -j ACCEPTipchains -A forward -i eth1 -j ACCEPT
  丢弃不合理的封包
  有些封包是不合理的,比如:它的来源,明明是私有IP,却在连接外部的网卡上,有进出的情况,如此明显是有人假造的,可能是有心者的入侵攻击,因此予以丢弃。作法如下:
  ipchains -A input -i eth0 -s 172.16.0.0/12 -j DENY(来自私有B Class IP,却欲进入 eth0)ipchains -A output -i eth0 -d 172.16.0.0/12 -j DENY(欲输出,目的地竟是私有 B Class IP)
  在此例中,eth0 是连接对外的网路介面。
  封包伪装(NAT)
  作法如下:
  echo 1 > /proc/sys/net/ipv4/ip_forwardipchains -A forward -i eth0 -s 172.16.0.0/16 -j MASQ
  上述指令将内部私有 IP 段: 172.16.0.0/16 伪装为 eth0 的 IP
  效果如下:
  Figure 13. client 和 server 连线图 (1)
   javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">
  NAT 的封包改写动作,其实很简单。我们以下图来加以说明:
  假设防火墙第一片网卡的 IP 是 163.26.197.21,内部网路某一主机 IP 是 192.168.1.8,今该内部 PC 欲观看外部网路某一Web站台(IP 是 211.22.33.44),其封包改写伪装的过程,如下图所示:
  Figure 14. NAT 机制下封包运作图
   
  NAT 的改写动作,不仅是在 IP 及 port 而已,另外像 checksum 等,都要重新计算。
  虚拟主机
  从一部主机的 port 转向到另一部主机的 port
  作法如下:
  ipchains -A input -p tcp -d $FW_IP 80 -j REDIRECT 8080redir --lport=8080 --caddr=172.16.0.101 --cport=80 &
  上面的意思是说:借用 8080 的 port,使原本要连至 163.26.197.8 Web Server port 80 的封包,转向到私有 IP 172.16.0.101 的 Web Server port 80,从而达到俗称 "虚拟主机" 的目的。
  redir 是 redir*.rpm 套件的主程式,为一种转 port 的工具,可在 ftp.tnc.edu.tw/pub/Sysop/firewall/ 下载。
  拒绝 ping
  有时想拒绝别人 ping 我们的主机。作法如下:(预设 policy 为 ACCEPT)
  ipchains -A input -i eth0 -p icmp -s any/0 8 -d $FW_IP -j DENY
  但我们想 ping 别人,因此接受回应。(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p icmp -s $FW_IP 8 -j ACCEPTipchains -A input -i eth0 -p icmp -s any/0 0 -d $FW_IP -j ACCEPT
  在此例中,$FW_IP 是连接对外的网路介面的 IP。
  开放 "别人"(如 163.26.200.4) 可以 ping 你
  ipchains -A input -i eth0 -p icmp -s 163.26.200.4 8 -d $FW_IP -j ACCEPTipchains -A output -i eth0 -p icmp -s $FW_IP 0 -d 163.26.200.4 -j ACCEPT
  在此例中,$FW_IP 是连接对外的网路介面的 IP。
  ICMP 有几个常用的 message type
  0 ping response(回应); 3 destination-unreachable ; 4 source-quench ; 5 redirect ; 8 echo-request(ping的要求) ; 11 time-exceeded ; 12 parameter-problem
  拒绝 traceroute
  有时想拒绝别人 traceroute 我们的主机。作法如下:
  注意: 预设 policy 是 ACCEPT 的情况下
  ipchains -A output -i eth0 -p icmp -s $FW_IP 3 -j DENYipchains -A output -i eth0 -p icmp -s $FW_IP 11 -j DENY
  上述作法,最主要的原因是:traceroute 会发出 udp 封包,使中途的主机产生 ICMP Time Exceeded 讯息 (icmp message type 是 11),最后的目的地则会产生 Destination Unreachable 讯息(icmp message type 是 3),因此把对外的 icmp 3 / icmp 11 给挡掉(不回应对方),就可使对方的 traceroute 失效。
  注意:traceroute 发出的封包,大部份情况下,会使用 32769:65535 (or 1024:65535) 及 33434:33523 这二段的 port 范围,但不是绝对的。因此,欲拒绝别人 traceroute,光只拦掉这二段 port,并不保险。
  上述 traceroute 的运作原理,可由以下记录档对照验证:
  在此记录档中,由 163.26.197.253 执行 traceroute 211.22.236.162,中途的路由器全都回应 icmp 11,而目的地 211.22.236.162 则回应 icmp3,每一个路由器之资讯取得,则使用 TTL 原理,皆可由下列记录档印证之。
  Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33435 L=38 S=0x00 I=58241 F=0x0000 T=1 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 163.26.197.254:11 163.26.197.253:0 L=66 S=0x00 I=13592 F=0x0000 T=30 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33436 L=38 S=0x00 I=58242 F=0x0000 T=1 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 163.26.197.254:11 163.26.197.253:0 L=66 S=0x00 I=13593 F=0x0000 T=30 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33437 L=38 S=0x00 I=58243 F=0x0000 T=1 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 163.26.197.254:11 163.26.197.253:0 L=66 S=0x00 I=13594 F=0x0000 T=30 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33438 L=38 S=0x00 I=58244 F=0x0000 T=2 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 10.162.66.250:11 163.26.197.253:0 L=56 S=0x00 I=28626 F=0x0000 T=29 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33439 L=38 S=0x00 I=58245 F=0x0000 T=2 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 10.162.66.250:11 163.26.197.253:0 L=56 S=0x00 I=28627 F=0x0000 T=29 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33440 L=38 S=0x00 I=58246 F=0x0000 T=2 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 10.162.66.250:11 163.26.197.253:0 L=56 S=0x00 I=28628 F=0x0000 T=29 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33441 L=38 S=0x00 I=58247 F=0x0000 T=3 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 10.162.82.250:11 163.26.197.253:0 L=56 S=0xC0 I=54471 F=0x0000 T=253 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33442 L=38 S=0x00 I=58248 F=0x0000 T=3 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 10.162.82.250:11 163.26.197.253:0 L=56 S=0xC0 I=54472 F=0x0000 T=253 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33443 L=38 S=0x00 I=58249 F=0x0000 T=3 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 10.162.82.250:11 163.26.197.253:0 L=56 S=0xC0 I=54473 F=0x0000 T=253 (#13)Feb 12 09:43:59 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33444 L=38 S=0x00 I=58250 F=0x0000 T=4 (#5)Feb 12 09:43:59 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 203.72.191.161:11 163.26.197.253:0 L=56 S=0xC0 I=28243 F=0x0000 T=252 (#13)Feb 12 09:44:04 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1040 163.26.200.1:53 L=73 S=0x00 I=21950 F=0x4000 T=64 (#5)Feb 12 09:44:14 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1040 163.26.200.1:53 L=73 S=0x00 I=21951 F=0x4000 T=64 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33445 L=38 S=0x00 I=58251 F=0x0000 T=4 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 203.72.191.161:11 163.26.197.253:0 L=56 S=0xC0 I=28452 F=0x0000 T=252 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33446 L=38 S=0x00 I=58252 F=0x0000 T=4 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 203.72.191.161:11 163.26.197.253:0 L=56 S=0xC0 I=28453 F=0x0000 T=252 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33447 L=38 S=0x00 I=58253 F=0x0000 T=5 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 192.192.162.1:11 163.26.197.253:0 L=56 S=0xC0 I=50061 F=0x0000 T=251 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1040 163.26.200.1:53 L=72 S=0x00 I=23471 F=0x4000 T=64 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=17 163.26.200.1:53 163.26.197.253:1040 L=72 S=0x00 I=493 F=0x0000 T=61 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1040 163.26.200.1:53 L=72 S=0x00 I=23481 F=0x4000 T=64 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=17 163.26.200.1:53 163.26.197.253:1040 L=72 S=0x00 I=494 F=0x0000 T=61 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33448 L=38 S=0x00 I=58254 F=0x0000 T=5 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 192.192.162.1:11 163.26.197.253:0 L=56 S=0xC0 I=50063 F=0x0000 T=251 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33449 L=38 S=0x00 I=58255 F=0x0000 T=5 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 192.192.162.1:11 163.26.197.253:0 L=56 S=0xC0 I=50066 F=0x0000 T=251 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33450 L=38 S=0x00 I=58256 F=0x0000 T=6 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 192.192.0.22:11 163.26.197.253:0 L=56 S=0xC0 I=8108 F=0x0000 T=250 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33451 L=38 S=0x00 I=58257 F=0x0000 T=6 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 192.192.0.22:11 163.26.197.253:0 L=56 S=0xC0 I=8109 F=0x0000 T=250 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33452 L=38 S=0x00 I=58258 F=0x0000 T=6 (#5)Feb 12 09:44:19 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 192.192.0.22:11 163.26.197.253:0 L=56 S=0xC0 I=8111 F=0x0000 T=250 (#13)Feb 12 09:44:19 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33453 L=38 S=0x00 I=58259 F=0x0000 T=7 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 211.22.226.250:11 163.26.197.253:0 L=56 S=0x00 I=0 F=0x0000 T=249 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33454 L=38 S=0x00 I=58260 F=0x0000 T=7 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 211.22.226.250:11 163.26.197.253:0 L=56 S=0x00 I=0 F=0x0000 T=249 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33455 L=38 S=0x00 I=58261 F=0x0000 T=7 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 211.22.226.250:11 163.26.197.253:0 L=56 S=0x00 I=0 F=0x0000 T=249 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33456 L=38 S=0x00 I=58262 F=0x0000 T=8 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 168.95.207.241:11 163.26.197.253:0 L=56 S=0xC0 I=46621 F=0x0000 T=248 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33457 L=38 S=0x00 I=58263 F=0x0000 T=8 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 168.95.207.241:11 163.26.197.253:0 L=56 S=0xC0 I=46622 F=0x0000 T=248 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33458 L=38 S=0x00 I=58264 F=0x0000 T=8 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 168.95.207.241:11 163.26.197.253:0 L=56 S=0xC0 I=46624 F=0x0000 T=248 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33459 L=38 S=0x00 I=58265 F=0x0000 T=9 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 168.95.53.193:11 163.26.197.253:0 L=56 S=0x00 I=41792 F=0x0000 T=56 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33460 L=38 S=0x00 I=58266 F=0x0000 T=9 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 168.95.53.193:11 163.26.197.253:0 L=56 S=0x00 I=41796 F=0x0000 T=56 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33461 L=38 S=0x00 I=58267 F=0x0000 T=9 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 168.95.53.193:11 163.26.197.253:0 L=56 S=0x00 I=41798 F=0x0000 T=56 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33462 L=38 S=0x00 I=58268 F=0x0000 T=10 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 211.22.236.162:3 163.26.197.253:3 L=56 S=0x00 I=58268 F=0x0000 T=141 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33463 L=38 S=0x00 I=58269 F=0x0000 T=10 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 211.22.236.162:3 163.26.197.253:3 L=56 S=0x00 I=58269 F=0x0000 T=141 (#13)Feb 12 09:44:20 mdfw kernel: Packet log: output ACCEPT eth0 PROTO=17 163.26.197.253:1038 211.22.236.162:33464 L=38 S=0x00 I=58270 F=0x0000 T=10 (#5)Feb 12 09:44:20 mdfw kernel: Packet log: input ACCEPT eth0 PROTO=1 211.22.236.162:3 163.26.197.253:3 L=56 S=0x00 I=58270 F=0x0000 T=141 (#13)
  若是在 policy 是 DENY 的情况下, 欲开放对外 traceroute,作法如下:
  (把自己发出 udp 封包的范围,由 32769:65535 放大到 1024:65535)
  ipchains -A output -i eth0 -p udp -s $FW_IP 1024:65535 -d any/0 33434:33523 -j ACCEPT
  然后,必须允许对方回应的 icmp 11 及 icmp 3 能进入我方:
  ipchains -A input -i eth0 -p icmp -s any/0 11 -d $FW_IP -j ACCEPTipchains -A input -i eth0 -p icmp -s any/0 3 -d $FW_IP -j ACCEPT
  在此例中,$FW_IP 是连接对外的网路介面的 IP。
  开放对外 telnet 连线
  作法如下:(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 23 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 23 -d $FW_IP 1024:65535 -j ACCEPT
  开放别人对你 telnet 连线
  作法如下:(预设 policy 为 DENY)
  ipchains -A input -i eth0 -p tcp -s any/0 1024:65535 -d $FW_IP 23 -j ACCEPTipchains -A output -i eth0 -p tcp ! -y -s $FW_IP 23 -d any/0 1024:65535 -j ACCEPT
  开放邮件转递
  允许对外部主机送信
  作法如下:(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 25 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 25 -d $FW_IP 1024:65535 -j ACCEPT
  开放外部邮件主机对你送信
  作法如下:(预设 policy 为 DENY)
  ipchains -A input -i eth0 -p tcp -s any/0 1024:65535 -d $FW_IP 25 -j ACCEPTipchains -A output -i eth0 -p tcp ! -y -s $FW_IP 25 -d any/0 1024:65535 -j ACCEPT
  开放对外部主机取用 POP3
  允许对外部 POP3 主机取信
  作法如下:(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 110 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 110 -d $FW_IP 1024:65535 -j ACCEPT
  开放对外部主机观看网页
  允许观看外部主机的网页内容
  作法如下:(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 80 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 80 -d $FW_IP 1024:65535 -j ACCEPT
  开放对外 FTP 连线
  作法如下:(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 21 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 21 -d $FW_IP 1024:65535 -j ACCEPT
  开放资料通道
  ipchains -A input -i eth0 -p tcp -s any/0 20 -d $FW_IP 1024:65535 -j ACCEPTipchains -A output -i eth0 -p tcp ! -y -s $FW_IP 1024:65535 -d any/0 20 -j ACCEPT
  Passive Mode FTP 资料通道(适用于浏览器)
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 1024:65535 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 1024:65535 -d $FW_IP 1024:65535 -j ACCEPT
  注意:在 Normal FTP Mode 下,建立资料通道时,是由 FTP Server port 20 回 call client 端喔。
  Figure 15. FTP 的运作模式
   
  右向箭号,代表主动发出封包;左向箭号,代表被动回应。
  Passive FTP Mode 图中,由 client 主动 call Server,以建立资料通道。
  开放对外 dns 查询
  作法如下:(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p udp -s $FW_IP 1024:65535 -d DNS的IP 53 -j ACCEPTipchains -A input -i eth0 -p udp -s DNS的IP 53 -d $FW_IP 1024:65535 -j ACCEPT
  若上述查询过程发生错误,会改用 tcp 封包来查询:
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d DNS的IP 53 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s DNS的IP 53 -d $FW_IP 1024:65535 -j ACCEPT
  允许 DNS 主机去查询 DNS 主机(peer-to-peer模式)
  ipchains -A output -i eth0 -p udp -s $FW_IP 53 -d DNS的IP 53 -j ACCEPTipchains -A input -i eth0 -p udp -s DNS的IP 53 -d $FW_IP 53 -j ACCEPTipchains -A output -i eth0 -p tcp -s $FW_IP 53 -d DNS的IP 53 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s DNS的IP 53 -d $FW_IP 53 -j ACCEPT
  开放对外 ssh 连线
  作法如下:(预设 policy 为 DENY)
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 22 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 22 -d $FW_IP 1024:65535 -j ACCEPT
  以下情况,连线时,ssh server 复制自己,而 client 端则重新指定一个特权通道的 port,该 port 由 1023 至 513 递减的方向去寻,直到找到一个可用的为止。此乃为了支援 .rhost 或 /etc/hosts.equiv
  ipchains -A output -i eth0 -p tcp -s $FW_IP 1020:1023 -d any/0 22 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 22 -d $FW_IP 1020:1023 -j ACCEPT
  上述指令意即:对外仅开放 4 个 client 支援 .rhosts 或 /etc/hosts.equiv 同时连线。
  Figure 16. SSH 的运作模式
  
  右向箭号,代表主动发出封包;左向箭号,代表被动回应。
  记录档功能
  只要在上述各指令档中,加上 -l 的选项,即可在 /var/log/messages 留下封包记录。
  
  
  

延伸阅读

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


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

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