个人工具
登录
查看“IptablesHowTo”的源代码 - Ubuntu中文
页面
讨论
查看源代码
历史
搜索
导航
首页
最近更改
随机页面
页面分类
帮助
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息
查看“IptablesHowTo”的源代码
来自Ubuntu中文
←
IptablesHowTo
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
=== Tips 技巧 === ==== If you manually edit iptables on a regular basis 如果你经常手动编辑iptables ==== The above steps go over how to setup your firewall rules and presume they will be relatively static (and for most people they should be). But if you do a lot of development work, you may want to have your iptables saved everytime you reboot. You could add a line like this one in <code><nowiki>/etc/network/interfaces</nowiki></code>: 大多数人并不需要经常改变他们的防火墙规则,因此只要根据前面的介绍,建立起防火墙规则就可以了。但是如果您要经常修改防火墙规则,以使其更加完善,那么您可能希望系统在每次重启前将防火墙的设置保存下来。为此您可以在/etc/network/interfaces文件中添加一行: <pre><nowiki> pre-up iptables-restore < /etc/iptables.up.rules post-down iptables-save > /etc/iptables.up.rules </nowiki></pre> The line "post-down iptables-save > /etc/iptables.up.rules" will save the rules to be used on the next boot. "post-down iptables-save > /etc/iptables.up.rules"会将设置保存下来,以便下次启动时使用。 ==== Using iptables-save/restore to test rules 使用iptables-save/restore测试规则 ==== If you edit your iptables beyond this tutorial, you may want to use the <code><nowiki>iptables-save</nowiki></code> and <code><nowiki>iptables-restore</nowiki></code> feature to edit and test your rules. To do this open the rules file in your favorite text editor (in this example gedit). 使用iptables-save和iptables-restore可以很方便地修改和测试防火墙规则。首先运行iptables-save将规则保存到一个文件,然后用编辑器编辑该文件。 <pre><nowiki> # iptables-save > /etc/iptables.test.rules # gedit /etc/iptables.test.rules </nowiki></pre> You will have a file that appears similiar to (following the example above): 如果您根据前面的例子建立了防火墙规则,iptables-save将产生一个类似于如下内容的文件: <pre><nowiki> # Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006 *filter :INPUT ACCEPT [368:102354] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [92952:20764374] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 -A INPUT -j DROP COMMIT # Completed on Sun Apr 23 06:19:53 2006 </nowiki></pre> Notice that these are iptables commands minus the <code><nowiki>iptable</nowiki></code> command. Feel free to edit this to file and save when complete. Then to test simply: 文件内容其实就是各种iptables命令,只不过把命令名iptables省略了。您可以随意对这个文件进行编辑,然后保存。接着使用以下命令测试修改后的规则: <pre><nowiki> # iptables-restore < /etc/iptables.test.rules </nowiki></pre> After testing, if you have not added the <code><nowiki>iptables-save</nowiki></code> command above to your <code><nowiki>/etc/network/interfaces</nowiki></code> remember not to lose your changes: 之前您如果没有在<code><nowiki>/etc/network/interfaces</nowiki></code>文件中添加<code><nowiki>iptables-save</nowiki></code>命令,那么测试之后,别忘了把您所作的修改保存起来。 <pre><nowiki> # iptables-save > /etc/iptables.up.rules </nowiki></pre> ==== More detailed Logging 关于日志记录的更多细节 ==== For further detail in your syslog you may want create an additional Chain. This will be a very brief example of my /etc/iptables.up.rules showing how I setup my iptables to log to syslog: 您可以创建额外的规则链,以便在syslog中作更加详细的记录。以下是我/etc/iptables.up.rules文件中的一个简单例子: <pre><nowiki> # Generated by iptables-save v1.3.1 on Sun Apr 23 05:32:09 2006 *filter :INPUT ACCEPT [273:55355] :FORWARD ACCEPT [0:0] :LOGNDROP - [0:0] :OUTPUT ACCEPT [92376:20668252] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -j LOGNDROP -A LOGNDROP -p tcp -m limit --limit 5/min -j LOG --log-prefix "Denied TCP: " --log-level 7 -A LOGNDROP -p udp -m limit --limit 5/min -j LOG --log-prefix "Denied UDP: " --log-level 7 -A LOGNDROP -p icmp -m limit --limit 5/min -j LOG --log-prefix "Denied ICMP: " --log-level 7 -A LOGNDROP -j DROP COMMIT # Completed on Sun Apr 23 05:32:09 2006 </nowiki></pre> Note a new CHAIN called <code><nowiki>LOGNDROP</nowiki></code> at the top of the file. Also, the standard <code><nowiki>DROP</nowiki></code> at the bottom of the INPUT chain is replaceed with <code><nowiki>LOGNDROP</nowiki></code> and add protocol descriptions so it makes sense looking at the log. Lastly we drop the traffic at the end of the <code><nowiki>LOGNDROP</nowiki></code> chain. The following gives some idea of what is happening: * <code><nowiki>--limit</nowiki></code> sets the number of times to log the same rule to syslog * <code><nowiki>--log-prefix "Denied..."</nowiki></code> adds a prefix to make finding in the syslog easier * <code><nowiki>--log-level 7</nowiki></code> sets the syslog level to informational (see man syslog for more detail, but you can probably leave this) 可以看到,文件前面多了一条名为<code><nowiki>LOGNDROP</nowiki></code>的规则链。此外,INPUT链最后一条规则中的<code><nowiki>DROP</nowiki></code>被<code><nowiki>LONGDROP</nowiki></code>替代。并且在后面我添加了一些内容来描述报文所使用的协议,这可以让记录更容易理解。最后,在<code><nowiki>LOGNDROP</nowiki></code>链的末尾,报文被丢弃。 * <code><nowiki>--limit</nowiki></code> 对由此规则引发的记录事件的频率进行限制。 * <code><nowiki>--log-prefix "Denied..."</nowiki></code> 在每条记录前加上一个前缀,以便查找。 * <code><nowiki>--log-level 7</nowiki></code> 将记录的详细程度设为“informational”等级(详情请见man syslog,您也可以直接使用此处的设置)。 ==== Disabling the firewall 禁用防火墙 ==== If you need to disable the firewall temporarily, you can flush all the rules using 可以通过清除所有规则来暂时停止防火墙: (警告:这只适合在没有配置防火墙的环境中,如果已经配置过默认规则为deny的环境,此步骤将使系统的所有网络访问中断) <pre><nowiki> # sudo iptables -F </nowiki></pre>
返回至
IptablesHowTo
。