⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0250simple_firewall.htm

📁 鸟哥LINUX 学习课本
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<br>此时,那个 192.168.100.100 『<font color="#000066">可以使用您的 WWW服务</font>』喔!因为只要他对您的主机送出 WWW 要求封包,就可以使用您的WWW 主机功能了,因为您的规则顺序定义第一条就会让他通过,而不去考虑第二条规则!这样可以理解规<font color="#000066">则顺序的意义</font>了吗?!现在再来想一想,如果Rule 1 变成了『将所有的封包丢弃』,Rule 2 才设定『WWW 服务封包通过』,请问,我的client 可以使用我的 WWW 服务吗?!呵呵!答案是『否~』想通了吗?! ^_^<br> <br>事实上,<a href="#fig_07">图七</a>就是 iptables 的『<font color="#000066">一张表格里面的一条链(chains)</font>』,您可以想象一下,<font color="#000066">iptables的规则都是写在『表格, table』里面的</font>,而每个表格又依据封包的行进路线,而可大略分为三条链:『<font color="#000066">进入、输出、转递</font>』等。在iptables 里面有两个经常用到的内建表格 (build-in table) ,分别是针对主机的filter 以及针对防火墙后端的主机设定的 nat 两个,这两个表格又分别具有三条链,分别是:<br> <ul><li><font color="#000066"><b>filter</b>:主要跟 Linux 本机有关,这个是预设的table 喔!</font></li><ul><li><font color="#000066">INPUT:主要与封包想要进入我们 Linux 本机有关;</font></li><li><font color="#000066">OUTPUT:主要与我们 Linux 本机所要送出的封包有关;</font></li><li><font color="#000066">FORWARD:这个咚咚与 Linux 本机比较没有关系,他可以封包『转递』到后端的计算机中,与nat 这个 table 相关性很高。</font></li></ul><font color="#000066"> </font><li><font color="#000066"><b>nat</b>:主要跟 NAT 主机的设定有关</font></li><ul><li><font color="#000066">PREROUTING:在进行路由判断之前所要进行的规则</font></li><li><font color="#000066">POSTROUTING:在进行路由判断之后所要进行的规则</font></li><li><font color="#000066">OUTPUT:与发送出去的封包有关</font></li></ul></ul> <br>所以说,如<a href="#fig_07">图七</a>的规则订定至少就会有六组吶!那么这六条链有什么相关性呢?这得需要由<font color="#000066">封包的行进路线</font>来说明:<br> <ul><li><b><font color="#000066">封包想要进入本机:</font></b></li><br>当有封包想要进入我们 Linux 本机时,该封包会经过两条链,分别得先通过nat 的 PREROUTING 链,再通过 filter 的 INPUT 链才能进入本机使用我们本机的资源。事实上,<font color="#000066">如果仅考虑本机的话,那么nat 的 PREROUTING 预设政策就给他通过,仅考虑 filter 的 INPUT 即可</font>;<br> <center><a name="fig_08"></a><img src="0250simple_firewall_files/iptables-02.jpg" nosave="" height="228" width="209"><br><font color="#000066">图八、进入本机封包所需通过的 table 与 chains</font></center> <li><b><font color="#000066">封包想要进入本机后端的计算机:</font></b></li><br>当封包想要进入本机后端的计算机时,也就是说,其实该数据封包不是要使用本机的资源,所以如同底下的图九所示,<font color="#000066">封包并不会进入本机喔</font>!而且,此时封包的流通与nat 的 PREROUTING, POSTROUTING 以及<font color="#000066"> filter 的 FORWARD</font>是有关系的!这点要特别特别注意啊!<br> <center><a name="fig_09"></a><img src="0250simple_firewall_files/iptables-03.jpg" nosave="" height="311" width="419"><br><font color="#000066">图九、进入本机后端的计算机时,封包所需通过的 table与 chains</font></center><li><b><font color="#000066">由本机发送的封包:</font></b></li><br>呵呵!iptables 不只可以管制由外而内的封包,同时也可以管制由内而外的讯息呢!当封包由本机传送出去时,会通过nat 与 filter 的 OUTPUT 链,还会有 POSTROUTING 的检查喔!事实上,<font color="#000066">如果不考虑我们本机后端的计算机,那么仅要使用filter 的 OUTPUT 链即可</font>!<br> <center><img src="0250simple_firewall_files/iptables-04.jpg" nosave="" height="311" width="190"><br><font color="#000066">图十、本机发送出的封包所需通过的 table 与 chains</font></center></ul> <br>一般来说,如果您的防火墙是设在 Linux 本机上面,并且您的 Linux 本机并没有启用NAT 的功能,那么您只需要考虑 filter 这个 table 的 INPUT 与 OUTPUT 这两条链就可以了!简化的很多喔!但是如果您的Linux 主机还有考虑到 NAT 的功能,那么 nat table 的 PREROUTING 与 POSTROUTING还有 filter table 的 FORWARD 就得需要好好的设定一番了!底下我们就来谈一谈,那么要怎么设定iptables 的规则语法吧!<br> <br><hr width="100%"><a name="iptables_synx"></a><font color="#000099">iptables的语法</font><br> <br>事实上, iptables 就是一个可以加载的模块,在开始进行 iptables 的设定之前,先确认一下,由于<font color="#000066">ipchains与 iptables 是不能同时存在的</font>,所以先检查一下 ipchains 是否不小心被加载到系统当中了呢?<br> <table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">lsmod</font></font><br><font size="-1" color="#ff6666" face="SimSun"># 若有发现ipchains 的字样,表示系统不小心加载了 ipchains 了,请使用:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">rmmod ipchains</font></font><br><font size="-1" color="#ff6666" face="SimSun"># 这样就能够移除ipchains 了!然后加载 iptables 吧!</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">modprobe ip_tables</font></font></td></tr></tbody></table> <br>上头的 ip_tables 就是 iptables 的模块了!加载之后,我们就可以使用 iptables的语法了!因为 iptables 的语法相当的多,所以底下我将这些语法分成规则清除、定义政策以及新增与插入规则三部分来说明:(<i><font color="#000066">注:防火墙的设定是相当重要的工作,另外,他的设定过程当中常常会有『测试』的意味在里面,因为是测试,有的时候我们会不小心『将自己的联机封包挡住了!』,导致无法联机,所以,『<b>设定防火墙的时候,尽量在本机前面设定,不要利用远程联机服务来设定,否则很容易产生自己将自己挡掉的重大问题</b>!』</font></i>)<br> <ul><hr width="100%"><a name="iptables_synx_clean"></a><font color="#000099">清除规则与观察规则</font><br> <br>iptables 在一开始的时候,应该是没有规则的,不过,可能因为您在安装的时候就有选择系统自动帮您建立防火墙机制,此时系统就会有预设的防火墙规则了!好了,无论如何,我们先来看看目前本机的防火墙规则是如何吧!?<br> <table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> iptables [-t tables] [-L] [-n]</font></font><br><font size="-1" color="#ff6666" face="SimSun">参数说明:</font><br><font size="-1" color="#ffffcc" face="SimSun">-t:后面接iptables 的 table ,例如 nat 或 filter ,如果没有 -t table&#160;</font><br><font size="-1" color="#ffffcc" face="SimSun">  的话,那么预设就是-t filter 这个 table 喔!</font><br><font size="-1" color="#ffffcc" face="SimSun">-L:列出目前的table 的规则</font><br><font size="-1" color="#ffffcc" face="SimSun">-n:不进行IP 与 HOSTNAME 的转换,屏幕显示讯息的速度会快很多!</font><br><font size="-1" color="#ff6666" face="SimSun">范例:</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> iptables -L -n</font></font><br><font size="-1" color="#ffffff" face="SimSun">Chain INPUT(policy ACCEPT)</font><br><font size="-1" color="#ffffff" face="SimSun">target&#160;&#160;&#160;&#160;prot opt source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;destination</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" color="#ffffff" face="SimSun">Chain FORWARD(policy ACCEPT)</font><br><font size="-1" color="#ffffff" face="SimSun">target&#160;&#160;&#160;&#160;prot opt source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;destination</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" color="#ffffff" face="SimSun">Chain OUTPUT(policy ACCEPT)</font><br><font size="-1" color="#ffffff" face="SimSun">target&#160;&#160;&#160;&#160;prot opt source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;destination</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" color="#ff6666" face="SimSun"># 仔细看到上面,因为没有加上-t 的参数,所以预设就是 filter 这个表格,</font><br><font size="-1" color="#ff6666" face="SimSun"># 在这个表格当中有三条链,分别是INPUT, OUTPUT 与 FORWARD ,而且因为</font><br><font size="-1" color="#ff6666" face="SimSun"># 没有规则,所以规则里面都是空的!同时注意一下,在每个chain 的后面 ()&#160;</font><br><font size="-1" color="#ff6666" face="SimSun"># 里面,会发现有policy 对吧!那就是『预设动作(政策)』咯!以上面来看,</font><br><font size="-1" color="#ff6666" face="SimSun"># 虽然我们启动了iptables ,但是我们没有设定规则,然后政策又是 ACCEPT,</font><br><font size="-1" color="#ff6666" face="SimSun"># 所以『任何封包都会接受』的意思喔!</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> iptables -t nat -L -n</font></font><br><font size="-1" color="#ffffff" face="SimSun">Chain PREROUTING(policy ACCEPT)</font><br><font size="-1" color="#ffffff" face="SimSun">target&#160;&#160;&#160;&#160;prot opt source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;destination</font><p><font size="-1" color="#ffffff" face="SimSun">Chain POSTROUTING(policy ACCEPT)</font><br><font size="-1" color="#ffffff" face="SimSun">target&#160;&#160;&#160;&#160;prot opt source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;destination</font></p><p><font size="-1" color="#ffffff" face="SimSun">Chain OUTPUT(policy ACCEPT)</font><br><font size="-1" color="#ffffff" face="SimSun">target&#160;&#160;&#160;&#160;prot opt source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;destination</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" color="#ff6666" face="SimSun"># 与 filter类似的, nat 这个表格里面有的则是 PREROUTING, POSTROUTING</font><br><font size="-1" color="#ff6666" face="SimSun"># 以及 OUTPUT三条链啊!</font></p></td>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -