From Fedora Project Wiki

Line 11: Line 11:
== CLI(命令行接口) ==
== CLI(命令行接口) ==
=== 对 iptables 的更改即时生效 ===
=== 对 iptables 的更改即时生效 ===
下面的过程可以在防火墙运行的情况下改变防火墙策略。
{{admon/caution|警告|不当的 iptables 规则可能会破坏 Fedora 系统的网络连接。}}
阅读 man 手册中关于 iptables 的部分(man iptables)来获取深入的解释和高级复杂的规则实例。
{{admon/important|需要超级用户权限|这些命令必须要有超级用户权限才能执行,请使用 sudo 或者 su 来获取超级用户权限。}}


==== 列出现有规则 ====
==== 列出现有规则 ====
使用 <pre>iptables -L</pre> 命令可以查看当前正在使用的 iptables 规则。
{{admon/note|端口数值|使用 -L 选项列出的端口数值是其对应的服务名称而不是端口号。如果要看端口号,请包含 '''-n''' 选项。
<pre>iptables -L -n</pre> }}
{{admon/note|查看计数器|使用 -L 选项列出的规则并不包含匹配的计数。使用 '''-v''' 选项来显示匹配计数。
<pre>iptables -L -v</pre> }}
允许已经建立及其相关的连接、icmp 请求、所有本地数据和 ssh 通讯的 iptables 规则例子:
<pre>[root@server ~]# iptables -L
Chain INPUT (policy DROP)
target    prot opt source              destination       
ACCEPT    all  --  anywhere            anywhere            state RELATED,ESTABLISHED
ACCEPT    icmp --  anywhere            anywhere           
ACCEPT    all  --  anywhere            anywhere           
ACCEPT    tcp  --  anywhere            anywhere            state NEW tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target    prot opt source              destination       
Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination </pre>
注意规则是按顺序匹配的,只要有匹配的规则便不会再往下接着检查。因此,举个例子来说,如果一条规则拒绝 ssh 连接,其后又有一条规则允许 ssh,那么就会应用拒绝 ssh 的规则,后面允许 ssh 连接的规则就不会应用,也就无法起到作用。


==== 追加规则 ====
==== 追加规则 ====
Line 23: Line 61:


==== 清空规则 ====
==== 清空规则 ====


=== 使规则永久生效 ===
=== 使规则永久生效 ===

Revision as of 09:39, 23 February 2014

在这篇文档里里我们将主要举例介绍三种编辑 iptables 规则的方式:

  • CLI: iptables 命令行接口和系统配置文件 /etc/sysconfig/iptables.
  • TUI 基于文本的接口: setup 或 system-config-firewall-tui
  • GUI: system-config-firewall

需要注意的是本篇文章只是说明了如何编辑已有 iptables 规则,并不包含开始的创建规则链。

CLI(命令行接口)

对 iptables 的更改即时生效

下面的过程可以在防火墙运行的情况下改变防火墙策略。


警告
不当的 iptables 规则可能会破坏 Fedora 系统的网络连接。

阅读 man 手册中关于 iptables 的部分(man iptables)来获取深入的解释和高级复杂的规则实例。

需要超级用户权限
这些命令必须要有超级用户权限才能执行,请使用 sudo 或者 su 来获取超级用户权限。


列出现有规则

使用

iptables -L

命令可以查看当前正在使用的 iptables 规则。

端口数值
使用 -L 选项列出的端口数值是其对应的服务名称而不是端口号。如果要看端口号,请包含 -n 选项。
iptables -L -n
查看计数器
使用 -L 选项列出的规则并不包含匹配的计数。使用 -v 选项来显示匹配计数。
iptables -L -v

允许已经建立及其相关的连接、icmp 请求、所有本地数据和 ssh 通讯的 iptables 规则例子:


[root@server ~]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

注意规则是按顺序匹配的,只要有匹配的规则便不会再往下接着检查。因此,举个例子来说,如果一条规则拒绝 ssh 连接,其后又有一条规则允许 ssh,那么就会应用拒绝 ssh 的规则,后面允许 ssh 连接的规则就不会应用,也就无法起到作用。

追加规则

删除规则

插入规则

替换规则

清空规则

使规则永久生效

TUI(基于文本的接口)

GUI