Iptables 配置指南
创始人
2024-07-23 03:01:44
0

iptables是IP信息包过滤系统,我们有必要知道iptables的配置过程!

  一、数据包经过防火墙的路径

  图1比较完整地展示了一个数据包是如何经过防火墙的,考虑到节省空间,该图实际上包了三种情况:

  来自外部,以防火墙(本机)为目的地的包,在图1中自上至下走左边一条路径。

  由防火墙(本机)产生的包,在图1中从“本地进程”开始,自上至下走左边一条路径

  来自外部,目的地是其它主机的包,在图1中自上至下走右边一条路径。

  

 

  图1

  如果我们从上图中略去比较少用的mangle表的图示,就有图2所显示的更为清晰的路径图.

  

 

  图2

#p#

  二、禁止端口的实例

  禁止ssh端口

  只允许在192.168.62.1上使用ssh远程登录,从其它计算机上禁止使用ssh

  #iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT

  #iptables -A INPUT -p tcp --dport 22 -j DROP

  禁止代理端口

  #iptables -A INPUT -p tcp --dport 3128 -j REJECT

  禁止icmp端口

  除192.168.62.1外,禁止其它人ping我的主机

  #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type echo-request -j ACCEPT

  #iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request –j ?DROP

  或

  #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT

  #iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP

  注:可以用iptables --protocol icmp --help查看ICMP类型

  还有没有其它办法实现?

  禁止QQ端口

  #iptables -D FORWARD -p udp --dport 8000 -j REJECT

#p#

  三、强制访问指定的站点

  

 

  图3

  要使192.168.52.0/24网络内的计算机(这此计算机的网关应设为192.168.52.10)强制访问指定的站点,在做为防火墙的计算机(192.168.52.10)上应添加以下规则:

  1. 打开ip包转发功能

  echo 1 > /proc/sys/net/ipv4/ip_forward

  2. 在NAT/防火墙计算机上的NAT表中添加目的地址转换规则:

  iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 202.96.134.130:80

  iptables -t nat -I PREROUTING -i eth0 -p udp --dport 80 -j DNAT --to-destination 202.96.134.130:80

  3. 在NAT/防火墙计算机上的NAT表中添加源地址转换规则:

  iptables -t nat -I POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000

  iptables -t nat -I POSTROUTING -o eth1 -p udp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000

  4. 测试:在内部网的任一台计算机上打开浏览器,输入任一非本网络的IP,都将指向IP为202.96.134.130的网站.

#p#

  四、发布内部网络服务器

  

 

  图4

  要使因特网上的计算机访问到内部网的FTP服务器、WEB服务器,在做为防火墙的计算机上应添加以下规则:

  1. echo 1 > /proc/sys/net/ipv4/ip_forward

  2. 发布内部网web服务器

  iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 80 -j DNAT --to-destination 192.168.52.15:80

  iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.15 --sport 80 -j SNAT --to-source 202.96.134.10:20000-30000

  3. 发布内部网ftp服务器

  iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 21 -j DNAT --to-destination 192.168.52.14:21

  iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.14 --sport 21 -j SNAT --to-source 202.96.134.10:40000-50000

  4. 注意:内部网的计算机网关要设置为防火墙的ip(192.168.52.1)

  5. 测试: 用一台IP地址为202.96.134.0段的计算机虚拟因特网访问,当在其浏览器中访问http://202.96.134.10时,实际应看到的是192.168.52.15的的web服务;

  当访问ftp://202.96.134.10时,实际应看到的是192.168.52.14上的的ftp服务

#p#

  五、智能DNS

  

 

  图5

  1. echo 1 > /proc/sys/net/ipv4/ip_forward

  2. 在NAT服务器上添加以下规则:

  在PREROUTING链中添加目的地址转换规则:

  iptables -t nat -I PREROUTING -i eth0 -p tcp --dpor 53 -j DNAT --to-destination 202.96.134.130

  iptables -t nat -I PREROUTING -i eth0 -p udp --dpor 53 -j DNAT --to-destination 202.96.134.130

  在POSTROUTING链中添加源地址转换规则:

  iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p tcp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-50000

  iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p udp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-50000

  3. 测试

  在内部网任一台计算机上,将DNS设置为任意的外网IP,就可以使用DNS测试工具如nslookup来解析DNS服务器202.96.134.130上的名称.

#p#

  六、端口映射

  见上节透明代理设置

  #iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128

  七、通过NAT上网

  典型NAT上网

  一般做为NAT的计算机同时也是局域网的网关,假定该机有两块网卡eth0、eth1,eth0连接外网,IP为202.96.134.134;eth1连接局域网,IP为192.168.62.10

  1. 先在内核里打开ip转发功能

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

  2.?使局域网用户能访问internet所要做的nat

  #iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to?202.96.134.134

  如果上网的IP是动态IP,则使用以下规则:

  #iptables -t nat -A POSTROUTING -o eth0 -s 192.168.62.0/24 -j MASQUERADE

  如果是通过ADSL上网,且公网IP是动态IP,则使用以下规则:

  #iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.62.0/24 -j MASQUERADE

  3. 使internet用户可以访问局域网内web主机所要做的nat

  #iptables -t nat -A PREROUTING -p tcp -d 202.96.134.134 --dport 80 -j DNAT --to-destination 192.168.62.10

  注:局域网内的客户端需将默认网关、DNS设为防火墙的IP

  在我们的网络机房实现NAT共享上网

  工作环境:上层代理192.168.60.6(4480),只授予教师机(192.168.62.111)使用该代理的权限

  目标:不使用squid代理上网,而是使用NAT的方式上网

  方法:

  1) 确保停止教师机(192.168.62.111)的squid或其它代理服务

  2) 客户端网关、DNS均指向192.168.62.111,浏览器代理设置为192.168.60.6(4480)。测试在当前情况下能否上网

  3) 在教师机(192.168.62.111)上添加如下iptables规则:

  #iptables -t nat -A POSTROUTING -p tcp -d 192.168.60.6/32 --dport 4480 -j SNAT --to-source 192.168.62.111:10000-30000

  解释:对于目的地为192.168.60.6、目的端口为4480的TCP包,在经过防火墙路由后,将其源地址转换为192.168.62.111,端口转换为10000-30000间的某个端口。

  4) 客户端测试能否上网

#p#

  八、IP规则的保存与恢复

  iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载

  使用命令iptables-save来保存规则。一般用

  iptables-save > /etc/sysconfig/iptables

  生成保存规则的文件 /etc/sysconfig/iptables,

  也可以用

  service iptables save

  它能把规则自动保存在/etc/sysconfig/iptables中。

  当计算机启动时,rc.d下的脚本将用命令iptables-restore调用这个文件,从而就自动恢复了规则。

通过文章的详细介绍,我们可以清楚的知道iptables的八大点配置过程,感兴趣的朋友快跟朋友一起分享吧!

【编辑推荐】

  • Iptables 详细介绍
  • 在Ubuntu Server 10.10上简单配置iptables
  • Linux安全性和netfilter/iptables
  • 如何用iptables来防止web服务器被CC攻击
  • 解决Linux iptables防火墙和vsftpd的问题
  • 15.4 iptables的工作原理
  • 9.1.2 iptables防火墙内核模块
  • 9.4.2 使用iptables配置源NAT

 

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...