分享
 
 
 

简释iptables防火墙

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

一般LINUX防火墙(iptalbes)的运用无非是用nat 表(PREROUTING、OUTPUT、POSTROUTING)和filter表 (FORWARD、INPUT、OUTPUT)。我们只有知道了数据的流向才能正确的配置防火墙。现用一个相对比较直观的图形解释数据的走向。(此处只作 最基本的iptables数据流走向说明。)

上图是你的家,蓝色的圈是你家院子,有两扇大门①⑥进出,你家有两个房间,分别为eth0和 eth1房间,每个房间有两 个门可以进出②③④⑤。旁边是张三和李四的家,张三家和李四家之间的往返必须要过你家院子。

现假设,eth0网卡IP为:192.168.5.1链接内网,eth1网卡IP为:218.100.100.111链接互连网。

再假设,“张三家”为一个局域网,“李四家”为互连网。进我家院子用PREROUTING,出我家院子用FORWARD,进我家门 用INPUT,出我家门用OUTPUT。(当我们的操作是征对服务器本身而言的话,如SSH操作,此时肯定会用到PREROUTING、INPUT和OUTPUT,当数据 只是通过服务器去访问别的机器时会用到PREROUTING和FORWARD。)

又假设,默认这六个门都是关的。生成如下代码。

###########################################################################

*nat

################################

:PREROUTING DROP [0:0]

:OUTPUT DROP [0:0]

:POSTROUTING DROP [0:0]

################################

-F

-Z

-X

### 以后要新增语句请在此处增加。

-L ?v

COMMIT

################################################

*filter

##############################

:INPUT DROP[0:0]

:FORWARD DROP[0:0]

:OUTPUT DROP[0:0]

##############################

-F

-Z

-X

### 以后要新增语句请在此处增加。

-L ?v

COMMIT

##########################################################################

1、 局域网用户通过服务器共享上网 (即从张三家到李四家)

1)首先进①号门,再从⑥号门走出。

-A PREROUTING ?p tcp --dport 80 ?j ACCEPT #允许TCP 80端口通过服务器

-A FORWARD ?p tcp --dport 80 ?j ACCEPT #允许TCP80 端口转发

-A FORWARD ?p tcp --sport 80 ?j ACCEPT #允许接收对方为TCP80端口反回的信息

2)其次,由于我们上网打的是域名,为此有一个公网DNS服务器为我们服务,那当然也要允许内网机器与DNS服务器的数据转发。DNS用UDP 53 或者 TCP 53端口。两者用其一个就行。

-A PREROUTING ?p udp --dport 53 ?j ACCEPT

-A FORWARD ?p udp --dport 53 ?j ACCEPT

-A FORWARD ?p udp --sport 53 ?j ACCEPT

3)再次,由于局域网的私有地址在公网上是不被允许的,所以在出公网前应该把其地址转为服务器地址进行伪装。

-A POSTROUTING ?s 192.168.5.0/24 ?j SNAT --to 218.100.100.111

2、允许局域网和公网可以访问服务器的SSH

假设SSH采用默认端口TCP 22 。此要求相当于要进我的家的TCP 22号门,为此我们首先要进我家院子,然后再进我家门,最后走出我家门这 样的过程。此操作是征对服务器本身的操作。

-A PREROUTING ?p tcp --dport 22 ?j ACCEPT

-A INPUT ?p tcp --dport 22 ?j ACCEPT

-A OUTPUT ?p tcp --sport 22 ?j ACCEPT

3、 允许内网机器可以登录MSN和QQ。

(MSN和QQ默认是不允许登录的)QQ一般来说可以从TCP 80、8000、443及UDP 8000、4000登录,而MSN可以从TCP 1863、443登录。我们登录 MSN和QQ的过程就象上网一样,也是去访问远程服务器的指定端口,故而我们只用数据转发即可。

-A PREROUTING ?p tcp --dport 1863 ?j ACCEPT

-A PREROUTING ?p tcp --dport 443 ?j ACCEPT

-A PREROUTING ?p tcp --dport 8000 ?j ACCEPT

-A PREROUTING ?p udp --dport 8000 ?j ACCEPT

-A PREROUTING ?p udp --dport 4000 ?j ACCEPT

-A FORWARD ?p tcp --dport 1863 ?j ACCEPT

-A FORWARD ?p tcp --sport 1863 ?j ACCEPT

-A FORWARD ?p tcp --dport 443 ?j ACCEPT

-A FORWARD ?p tcp --sport 443 ?j ACCEPT

-A FORWARD ?p tcp --dport 8000 ?j ACCEPT

-A FORWARD ?p tcp --sport 8000 ?j ACCEPT

-A FORWARD ?p udp --dport 8000 ?j ACCEPT

-A FORWARD ?p udp --sport 8000 ?j ACCEPT

-A FORWARD ?p udp --dport 4000 ?j ACCEPT

-A FORWARD ?p udp --sport 4000 ?j ACCEPT

4、 让内网机器可以收发邮件。

接收邮件是访问远程服务器的TCP 110端口,发送邮件是访问TCP25端口。用数据转发即可。

-A PREROUTING ?p tcp --dport 110 ?j ACCEPT

-A PREROUTING ?p tcp --dport 25 ?j ACCEPT

-A FORWARD ?p tcp --dport 110 ?j ACCEPT

-A FORWARD ?p tcp --sport 110 ?j ACCEPT

-A FORWARD ?p tcp --dport 25 ?j ACCEPT

-A FORWARD ?p tcp --sport 25 ?j ACCEPT

5、 内部机器对外发布WEB。

要把内网机器192.168.5.179的WEB对外发布的话,相当于是从外网访问内网。与第1步操作的局域网共享上网相同,只是访问的方向改变了。 不是从内网访问外网,而是从外网访问内网。

当公网访问服务器218.100.100.111时,防火墙把它映射到内网的192.168.5.179的TCP80上。当内网机器访问服务器218.100.100.111时,防 火墙把它映射到内网的192.168.5.179的TCP80上。

-A PREROUTING ?i eth0 ?p tcp ?d 218.100.100.111 --dport 80 ?j DNAT --to-destination 192.168.5.179:80

-A PREROUTING ?i eth1 ?p tcp ?d 218.100.100.111 ?dport 80 ?j DNAT --to-destination 192.168.5.179:80

(以上两句必须写在 ?A PREROUTING ?p tcp --dport 80 ?j ACCEPT 前面。)

TCP 80端口的转发在第1步就已做过,此处就不用重复制作了。另外在

-A POSTROUTING ?s 192.168.5.0/24 ?j SNAT --to 218.100.100.111 之后加上一句:

-A POSTROUTING ?o eth1 ?s 0/0 ?j SNAT --to 192.168.5.1

为什么要加这句话呢,我的理解是这样的,

公网访问 http://218.100.100.111时:(假设公网上用户的IP为199.199.199.199,端口12345为随机的产生的。)

数据源 : ip:199.199.199.199 sport:12345

数据目标: ip:218.100.100.111 dport 80

此时,通过-A PREROUTING ?i eth0 ?p tcp ?d 218.100.100.111 --dport 80 ?j DNAT --to-destination 192.168.5.179:80 告诉 199.199.199.199,您要访问的真正地址应该是192.168.5.179:80,然后我们通过-A POSTROUTING ?p tcp --dport 80 ?j ACCEPT 目标地址 218.100.100.111:80伪装成 192.168.5.179:80 。

数据源 : ip:199.199.199.199 sport:12345

数据目标: ip:192.168.5.179 dport 80

当192.168.5.179返回数据时:

数据源 : ip:192.168.5.179 sport:80

数据目标: ip:199.199.199.199 dport 12345

数据经过 -A POSTROUTING ?s 192.168.5.0/24 ?j SNAT ?to 218.100.100.111 后,

数据源 : ip:218.100.100.111 sport:80

数据目标: ip:199.199.199.199 dport 12345

6、 完整的iptables配置

###########################################################################

*nat

################################

:PREROUTING DROP [0:0]

:OUTPUT DROP [0:0]

:POSTROUTING DROP [0:0]

################################

-F

-Z

-X

-A PREROUTING ?i eth0 ?p tcp ?d 218.100.100.111 --dport 80 ?j DNAT --to-destination 192.168.5.179:80

-A PREROUTING ?i eth1 ?p tcp ?d 218.100.100.111 --dport 80 ?j DNAT ?to-destination 192.168.5.179:80

-A PREROUTING ?p tcp --dport 80 ?j ACCEPT

-A PREROUTING ?p udp --dport 53 ?j ACCEPT

-A PREROUTING ?p tcp --dport 22 ?j ACCEPT

-A PREROUTING ?p tcp --dport 1863 ?j ACCEPT

-A PREROUTING ?p tcp --dport 443 ?j ACCEPT

-A PREROUTING ?p tcp --dport 8000 ?j ACCEPT

-A PREROUTING ?p udp --dport 8000 ?j ACCEPT

-A PREROUTING ?p udp --dport 4000 ?j ACCEPT

-A PREROUTING ?p tcp --dport 110 ?j ACCEPT

-A PREROUTING ?p tcp --dport 25 ?j ACCEPT

-A POSTROUTING ?s 192.168.5.0/24 ?j SNAT ?to 218.100.100.111

-A POSTROUTING ?o eth1 ?s 0/0 ?j SNAT ?to 192.168.5.1

-L ?v

COMMIT

################################################

*filter

##############################

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

##############################

-F

-Z

-X

-A INPUT ?p tcp --dport 22 ?j ACCEPT

-A OUTPUT ?p tcp --sport 22 ?j ACCEPT

-A FORWARD ?p tcp --dport 80 ?j ACCEPT

-A FORWARD ?p tcp --sport 80 ?j ACCEPT

-A FORWARD ?p udp --dport 53 ?j ACCEPT

-A FORWARD ?p udp --sport 53 ?j ACCEPT

-A FORWARD ?p tcp --dport 1863 ?j ACCEPT

-A FORWARD ?p tcp --sport 1863 ?j ACCEPT

-A FORWARD ?p tcp --dport 443 ?j ACCEPT

-A FORWARD ?p tcp --sport 443 ?j ACCEPT

-A FORWARD ?p tcp --dport 8000 ?j ACCEPT

-A FORWARD ?p tcp --sport 8000 ?j ACCEPT

-A FORWARD ?p udp --dport 8000 ?j ACCEPT

-A FORWARD ?p udp --sport 8000 ?j ACCEPT

-A FORWARD ?p udp --dport 4000 ?j ACCEPT

-A FORWARD ?p udp --sport 4000 ?j ACCEPT

-A FORWARD ?p tcp --dport 110 ?j ACCEPT

-A FORWARD ?p tcp --sport 110 ?j ACCEPT

-A FORWARD ?p tcp --dport 25 ?j ACCEPT

-A FORWARD ?p tcp --sport 25 ?j ACCEPT

-L ?v

COMMIT

##########################################################################

7、 其它注意事项

1)在使用iptables防火墙之前,必须先打开IP转发功能。

# echo “1” > /proc/sys/net/ipv4/ip_forward

2)以上内容(第6步生成的内容)保存到 /etc/sysconfig/iptables文件中。

3)每修改一次iptables文件后,都要重启iptalbes

# service iptables restart

以上就是我对iptables的初浅理解,里面的语句已在RedHat 9.0上测试通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有