网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 网络攻防 > 安全防护 > 防火墙 > 看我简释iptables防火墙!  

看我简释iptables防火墙!

2000-01-16  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

一般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。) 网管联盟bitsCN_com
又假设,默认这六个门都是关的。生成如下代码。
###########################################################################
*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端口通过服务器
网管bitscn_com

-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号门,为此我们首先要进我家院子,然后再进我家门,最后走出我家门这样的过程。此操作是征对服务器本身的操作。

网管下载dl.bitscn.com


-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 网管bitscn_com
-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上。

网管u家u.bitsCN.com


-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 -p tcp --dport 80 -jACCEPT
为什么要加这句话呢,我的理解是这样的,
公网访问 _blank>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 。
网管联盟bitsCN_com

数据源 : 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
网管网www.bitscn.com

-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 -p tcp --dport 80 -jACCEPT
-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 网管u家u.bitscn@com
-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 中国网管联盟bitsCN.com
  # service iptables restart
以上就是我对iptables的初浅理解,里面的语句已在RedHat 9.0上测试通过。如有不当之处请通知我:QQ 3877900MSN hzjjr@msn.com



TAGs防火墙   -A   数据   服务器   访问   DROP   允许   我家   TCP80    
 上一篇:对高端防火墙未来发展趋势的探讨   下一篇:浅谈传统网络防火墙存在五大不足
看我简释iptables防火墙! 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: