分享
 
 
 

Linux防火墙入门:ipchains入门

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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)

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 eth

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有