📄 0250simple_firewall.htm
字号:
<center><img src="0250simple_firewall_files/firewall-02.jpg" nosave="" height="208" width="590"><br><font color="#000066">图三、LAN 里面加设防火墙的配置</font></center> <li><font color="#000099">在防火墙后端的主机设定:</font></li><br>还有一种更有趣的设定,那就是将提供网络服务的服务器放在防火墙后面,这有什么好处呢?如下图四所示,Web,Mail 与 FTP 都是透过防火墙连到 Internet 上面去,所以,底下这四部主机在Internet 上面的 Public IP 都是一样的!(这个观念我们会在 <a href="http://linux.vbird.org/linux_server/0320nat.php">NAT主机</a>的时候再次的强调)只是透过防火墙的封包分析后,将 WWW 的要求封包转送到Web 主机,将 Mail 送给 Mail Server 去处理而已(透过 port 的不同来转递)。好了,因为四部主机在Internet 上面看到的 IP 都相同,但是事实上却是四部不同的主机,而当有攻击者想要入侵您的FTP 主机好了,他使用各种分析方法去进攻的主机,其实是『防火墙』那一部,攻击者想要攻击您内部的主机,除非他能够成功的搞定您的防火墙,否则就很难入侵您的内部主机呢!不过,这种架构下所进行的设定就得包含port 的转递,对于新手来说,设定上有一定的难度,鸟哥个人不太建议新手这么做,还是等以后有经验之后再来玩这种架构吧!<br> <center><a name="fig_04"></a><img src="0250simple_firewall_files/firewall-03.jpg" nosave="" height="276" width="457"><br><font color="#000066">图四、架设在防火墙后端的主机服务器</font></center></ul> <br>上面就是目前比较常见的几种防火墙的配置方法。那么如何进行封包的抵挡设定呢?<font color="#000000">再来复习一下一个数据封包的内容,如下图所示:</font><br><font color="#000000"> </font><center><img src="0250simple_firewall_files/0250simple_firewall_2.jpg" nosave="" height="184" width="153"><br><font color="#000066">图五、一般数据封包所含有的基础信息</font><br> </center>由于防火墙可以分析网络上传送过来的数据封包,并取得分析该资料封包的表头数据,亦即可以分析上面图示中的目的地与来源地的IP, port, 是否主动联机等等的其它信息!所以经由分析这些资料后,我们不难发现抵挡的方法可以有几个动作:<br> <ul><li><font color="#000066">拒绝让封包进入主机的某些 port </font>:</li><br>这个应该不难了解吧!例如您的 port 20-21 这个 FTP 相关的 port ,您只要开放给内部网络的话,所以不对Internet 开放,那么当 Internet 来的封包想要进入您的 port 20-21 的话,就可以将该数据封包丢掉!因为我们可以分析的到该封包所带有的port 号码呀!<br> <li><font color="#000066">拒绝让某些来源 IP 的封包进入</font>:</li><br>例如您已经发现某个 IP 主要都是来自攻击行为的主机,那么只要来自该 IP的资料封包,就将他丢弃!这样也可以达到基础的安全呦!<br> <li><font color="#000066">拒绝让带有某些特殊旗标( flag )的封包进入</font>:</li><br>最常拒绝的就是带有 SYN 的主动联机的旗标了!只要一经发现,嘿嘿!您就可以将该封包丢弃呀!<br> <li><font color="#000066">分析硬件地址(MAC)来提供服务:</font></li><br>如果您的局域网络里面有比较捣蛋的但是又具有比较高强的网络功力的高手时,如果您使用IP 来抵挡他使用网络的权限,而他却懂得反正换一个 IP 就好了,都在同一个网域内嘛!同样还是在搞破坏~怎么办?!没关系,我们可以死锁他的网络卡硬件地址啊!因为MAC 是焊在网络卡上面的,所以您只要分析到该使用者所使用的 MAC 之后,可以利用防火墙将该MAC 锁住,呵呵!除非他能够一换再换他的网络卡来取得新的 MAC,否则换 IP 是没有用的啦!<br> </ul>当然还有很多的技巧,这里我们就不多提了!底下好好的来谈一谈怎样建置一个简单的firewall 主机吧!此外,我预计使用两层防火墙,分别是 iptables 与 TCP_Wrappers,其中,两者的相关性为:<br> <center><img src="0250simple_firewall_files/0250simple_firewall_3.jpg" nosave="" height="88" width="467"><br><font color="#000066">图六、封包进入主机的流程</font></center> <br>也就是说,资料封包会先经过 iptables 才会经过 TCP_Wrappers 的作用!</ul><ul><hr width="100%"><a name="firewall_limit"></a><font color="#000099">防火墙的使用限制</font><br> <br>什么?!设定防火墙之后还不安全啊?!那当然啦!谁说设定了防火墙之后您的系统就一定安全?!那可不一定啊!防火墙虽然可以防止不受欢迎的封包进入我们的网络当中,不过,某些情况下,他并不能保证我们的网络一定就很安全。举几个例子来谈一谈:<br> <ul><li><font color="#000099">防火墙并不能很有效的抵挡病毒或木马程序</font>:假设您已经开放了WWW 的服务,那么您的 WWW 主机上面,防火墙一定得要将 WWW 服务的 port 开放给Client 端登入才行吧!否则您的 WWW 主机设定了等于没有用对吧!也就是说,只要进入您的主机的封包是要求WWW 数据的,就可以通过您的防火墙。那好了,『<font color="#000066">万一您的WWW 服务器软件有漏洞,或者本身向您要求 WWW 服务的该封包就是病毒在侦测您的系统</font>』时,您的防火墙可是一点办法也没有啊!因为本来设定的规则就是会让他通过啊!尤其前一两年的Nimda 病毒就是攻击 WWW 主机的,他是透过入侵 WWW 主机的 80 port ,呵呵!所以说,防火墙对于病毒并不能很有效就是了。</li><br> <li><font color="#000099">防火墙对于来自内部 LAN 的攻击较无承受力</font>:一般来说,我们对于LAN 里面的主机都没有什么防火墙的设定,因为是我们自己的 LAN 啊,所以当然就设定为信任网域了!不过,LAN 里面总是可能有些网络小白啊,虽然他们不是故意要搞破坏,但是他们就是不懂嘛!所以就乱用网络了。这个时候就很糟糕,因为Firewall 对于内部的规则设定通常比较少,所以就容易造成内部员工对于网络误用或滥用的情况。为了避免这种情况的发生,呵呵!身为系统管理员的您</li></ul> <br>所以啦,在您的 Linux 主机实地上网之前,还是得先:<br> <ul><li><font color="#000066">关闭几个不安全的服务;</font></li><li><font color="#000066">升级几个可能有问题的套件;</font></li><li><font color="#000066">架设好最起码的安全防护--防火墙--</font></li></ul><font color="#000000"> </font><br><font color="#000000">其它相关的讯息请到 <a href="http://linux.vbird.org/linux_server/0240network-secure-1.php#secure_basic">认识网络安全--主机防护计划</a>里面去看一看怎么增加自身的安全吧!</font></ul><hr width="100%"><a name="iptables"></a><font size="+1" color="#000099">Linux的封包过滤机制</font><ul>终于可以谈到主题了!^_^!底下我们就要来谈一谈,什么是 Linux 的封包过滤机制!<br> <br><hr width="100%"><a name="iptables_kernel_version"></a><font color="#000099">Linux核心版本与防火墙机制</font><br> <br>Linux 在封包过滤机制是慢慢演进形成目前的 iptables 的,在核心不为 2.4的时代,使用的防火墙机制是不同的!<br> <ul><li><font color="#000066" face="SimSun">Version 2.0:使用 ipfwadm 这个防火墙机制;</font></li><li><font color="#000066" face="SimSun">Version 2.2:使用的是 ipchains这个防火墙机制;</font></li><li><font color="#000066" face="SimSun">Version 2.4:主要是使用 iptables这个防火墙机制,而为了兼容于 ipchains ,因此在 Version 2.4 版本中,同时将ipchains 编译成为模块,好让使用者仍然可以使用来自 2.2 版的 ipchains 的防火墙规划。</font></li></ul> <br>由上面的说明中,可以知道 Linux 上面的防火墙机制是依据不同核心而变的,而因为目前我们看到的新的Linux 版本之核心都是 2.4.xx 版本,所以使用的防火墙机制当然就是以 iptables为准了。此外,还要特别留意的是,核心为 2.4 版本的 Linux 同时支持 ipchains这个在核心 2.2 版的防火墙机制,然而不幸的是,『<b><font color="#000066" face="SimSun">iptables与 ipchains 两者不能同时执行!</font></b>』,所以如果您发现您的系统已经在执行ipchains 了,那么就得将 ipchains 这个模块移除之后,才能够使用 iptables,反之亦然喔!<br> <br>无论如何,在核心为 2.4.xx 的系统上面,还是比较建议使用 iptables ,因为iptables 功能比较强大而且在规则设定上面比较简单,此外,还具有其它支持的外挂模块,而虽然2.4 同时支持 ipchains ,不过在 2.2 上面支持 ipchains 的模块都不再 2.4 上面存在了,所以,当然选择功能更强的iptables 咯。那么如何知道我的 Linux 核心版本?呵呵!使用 <a href="http://linux.vbird.org/linux_basic/0440processcontrol.php#uname">uname</a>这个指令就对了!<br> <br><hr width="100%"><a name="iptables_fllow_table"></a><font color="#000099">iptables的表格与封包进入的流程</font><br> <br>只要是防火墙机制,通常都是以『<font color="#000066">针对封包的分析规则来规范每种封包的通过与否,以及应该进行的动作</font>』,同样的道理,iptables的工作方向,必须要<font color="#000066">依规则的顺序来分析</font>封包,举个简单的例子,假设我有十条防火墙规则好了,那么当Internet 来了一个封包想要进入我的主机,那么防火墙会怎么分析这个封包呢?我们以底下的图示来说明好了:<br> <center><a name="fig_07"></a><img src="0250simple_firewall_files/iptables-01.jpg" nosave="" height="266" width="323"><br><font color="#000066">图七、封包过滤的规则动作</font></center> <br>上面图七的 Rule 是规则的意思,『<font color="#000066">这些规则是有顺序的</font>』,至于Action 则是动作的意思,通常针对封包的动作有 ACCEPT/DROP (接受/丢弃) 两种动作。什么是『规则的顺序呢』?让我们看一下上面的例子,<font color="#000066">当TCP 封包通过了 Rule 1 ,刚好符合 Rule 1 的规定,那么 TCP 封包就会进行 Action1 ,而不会理会 Rule 2 以后的规则了</font>!而如果 TCP 不符合 Rule 1 的规定,那么就会进入第二条规则(Rule 2) 来检查,....一直到 Rule 10 的时候,该 TCP 封包都没有符合的规则可以进行,那么此时就会以『<font color="#000066">预设动作( 封包政策, Policy )</font>』来让 TCP 封包进行通过与否的动作。所以啦,当您的规则的顺序排列错误时,就会产生很大的困扰!怎么说呢?我们再举个例子好了,假设您的Linux 主机提供了 WWW 的服务,那么自然就要针对 port 80 来启用通过的封包规则,但是您发现IP 来源为 192.168.100.100 老是恶意的尝试入侵您的系统,所以您想要将该 IP拒绝往来,最后,所有的非 WWW 的封包都给他丢弃,就这三个规则来说,您要如何设定防火墙检验顺序呢?<br> <ol><li><font color="#000066">Rule 1 先抵挡 192.168.100.100 ;</font></li><li><font color="#000066">Rule 2 再让要求 WWW 服务的封包通过;</font></li><li><font color="#000066">Rule 3 将所有的封包丢弃。</font></li></ol> <br>这样的排列顺序就能符合您的需求,不过,万一您的顺序排错了,变成:<br> <ol><li><font color="#000066">Rule 1 先让要求 WWW 服务的封包通过;</font></li><li><font color="#000066">Rule 2 再抵挡 192.168.100.100 ;</font></li><li><font color="#000066">Rule 3 将所有的封包丢弃。</font></li></ol>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -