Linux下Iptables防火墙的使用
创始人
2024-07-23 05:10:57
0

  Linux系统Iptables防火墙使用手册:

  Linux 的内置firewall机制,是通过kernel中的netfilter模块实现的。Linux kernel使用netfilter对进出的数据包进行过滤,netfilter由三个规则表组成,每个表又有许多内建的链组成。通过使用iptables命令可以对这些表链进行操作,如添加、删除和列出规则等。

  一、Netfilter规则表—filter nat mangle

  filter,用于路由网络数据包。是默认的,也就是说如果没有指定-t参数,当创建一条新规则时,它会默认存放到该表内。

  INPUT 网络数据包流向服务器

  OUTPUT 网络数据包从服务器流出

  FORWARD 网络数据包经服务器路由

  nat,用于NAT表.NAT(Net Address Translation )是一种IP地址转换方法。

  PREROUTING 网络数据包到达服务器时可以被修改

  OUTPUT 网络数据包由服务器流出

  POSTROUTING 网络数据包在即将从服务器发出时可以被修改

  mangle,用于修改网络数据包的表,如TOS(Type Of Service),TTL(Time To Live),等

  INPUT 网络数据包流向服务器

  OUTPUT 网络数据包流出服务器

  FORWARD 网络数据包经由服务器转发

  PREROUTING 网络数据包到达服务器时可以被修改

  POSTROUTING 网络数据包在即将从服务器发出时可以被修改

  1.配置Iptables

  当数据包进入服务器时,Linux Kernel会查找对应的链,直到找到一条规则与数据包匹配。如果该规则的target是ACCEPT,就会跳过剩下的规则,数据包会被继续发送。如果该规则的target是DROP,该数据包会被拦截掉,kernel不会再参考其他规则。

  Note:如果从始至终都没有一条规则与数据包匹配,而且表末尾又没有drop all的规则,那末该数据包会被accept。Cisco则相反,在表末尾会因含deny all的规则。

  1.) Iptables的命令选项

  1.   iptables [-t tables] command option parameter target  
  2.  

  -A 在链尾添加一条规则

  -C 将规则添加到用户定义链之前对其进行检查

  -D 从链中删除一条规则

  -E 重命名用户定义的链,不改变链本身

  -F 清空链,删除链上的所有规则

  -I 在链中插入一条规则

  -L 列出某个链上的规则,如iptables –L INPUT 列出INPUT链的规则

  -N 创建一个新链

  -P 定义某个链的默认策略

  -R 替换链上的某条规则

  -X 删除某个用户相关的链

  -Z 将所有表的所有链的字节和数据包计数器清零

  2.) Iptables的命令参数

  -p –protocol

  应用于数据包的协议类型,可以是TCP UDP ICMP或ALL。!也可使用。

  当使用-p tcp时,还可使用其他可以选项,以便允许进一步定义规则。选项包括:

  --sport 允许指定匹配数据包源端口.port1:port ,表示port1和port2之间的所有端口

  --dport 目的端口,和--sport雷同。

  当使用-p !udp时,也有特殊的选项供使包括:

  --sport,--dport,与-p tcp 相同,只不过用以用于UDP包。

  使用-p icmp参数时,只有一个选项可用。

  --icmp-type,允许在过滤规则中指定icmp类型。

  -s –source 指定数据包的源地址。该参数后跟一个IP地址,一个带有sub-net mask的网络地址,或一个主机名。(不建议使用主机名)

  -d,- - destination 数据包的目的地址,同-s.

  -j,--jump 用于指定一个target,告诉规则将该匹配的数据包发送到该 target。Target可以是ACCEPT,DROP,QUEUE,RETURN.如果没有-j,那么不会对数据包进行任何操作,只是将计数器加1。

  -i - - in-interface ,对于INPUT FORWARD PREROUTING链,该参数指定数据包到达服务器时所使用的端口。

  -o - - out-interface,对于OUTPUT FORWARD POSTROUTING链,该参数指定数据包离开服务器时使用的端口。

  3.) Iptables的命令target

  创建规则的***一步是指定Iptables对数据包的操作。只要某一规则匹配该数据包,就不会再有别的规则的操作。内建的target有:ACCEPT DROP QUEUE RETURN。

  ACCEPT:允许数据包通过,到达目的地。

  DROP:拒绝数据包通过,丢弃该包。

  QUEUE:将数据包发送回到用户应用程序处理。

  RETURN:不再根据当前链的其他规则来检查数据包,而是直接返回,继续被发送到其目的地址,或下一个链。

  2.应用Iptables规则 (示例)

  允许WWW

  1.   iptables –A INPUT –p tcp –dport 80 –j ACCEPT  
  2.  

  该规则被添加到filter表的INPUT链,允许目的端口是80的数据包。

  在内部接口上允许DHCP

  1.   iptables –A INPUT –i eth0 –p tcp - - sport 68 - -dport 67 ACCEPT  
  2.  
  3.   iptables –A INPUT –i eth0 –p ucp - -sport 68 - -dport 67 ACCEPT  
  4.  

  以上同时允许TCP和UDP协议。

  3.保存和恢复Iptables

  保存Iptables

  使用iptables-save可将现行的iptables规则保存,

  iptables-save > iptables保存路径,如# iptables-save > /etc/iptables.up.rule

  恢复Iptables

  使用iptables-restore 可从配置文档恢复iptables表到现行iptables表.

  1.   iptables-restore < /etc/iptables.up.rule  
  2.  

#p#

  二、Ubuntu Server中的Iptables

  Ubuntu Server6.06中已经默认安装iptables,版本是1.3.3.默认状态是关闭。

  通过修改/etc/network/interfaces可将iptables打开:

  1.   auto lo  
  2.  
  3.   Iface lo inet loopback  
  4.  
  5.   auto eth0  
  6.  
  7.   iface eth0 inet dhcp  
  8.  
  9.   #添加以下内容  
  10.  
  11.   pre-up iptables-restore < /etc/iptables.up.rule  
  12.  
  13.   #call the restored rule when active the eth0  
  14.  
  15.   post-down iptables-save > /etc/iptables.up.rule  
  16.  
  17.   #restore the iptables rule when shutdown the interface eth0  
  18.  

  然后重新激活eth0即可。

  另外,可随时修改/etc/iptables.up.rule配置文件,来更改iptables的规则。Iptables.up.rule格式如下:

  1.   #Generated by iptables-save V1.3.3 on Tue Jul 31 14:18:44 2007  
  2.  
  3.   *filter  
  4.  
  5.   :INPUT ACCEPT [73:8213]  
  6.  
  7.   :FORWARD ACCEPT [0:0]  
  8.  
  9.   :OUTPUT ACCEPT [8:825]  
  10.  
  11.   -A INPUT –i lo –p icmp –j DROP  
  12.  
  13.   -A INPUT –i eth0 –p icmp –j DROP  
  14.  
  15.   COMMIT  
  16.  
  17.   #Completed on Tue Jul 31 14:10:44 2007  
  18.  

  注意:行与行之间不能有空行。

  三、总结:

  iptables表链中每条规则的顺序很重要,如果首条是accept all,那末所有的数据包都会被允许通过firewall,因此应当适当的安排规则顺序。通常的法则是:拒绝所有 允许少数。Linux下Iptables防火墙的使用就介绍到这里了。

【编辑推荐】

Iptables 配置指南

iptables常用命令及参数

Iptables 详细介绍

相关内容

热门资讯

如何允许远程连接到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...