好了,现在我们需要来做好基础的防火墙措施了,在这里,我们以最简单的 Router 上面 ( 亦即是 NAT 主机 ) 架设防火墙 ( 亦即上面的图标说明 ) ,那么所有的内部 PC 将透过这部 Linux 主机连接上网,这样设计的好处是:
· 安全维护在内部可以开放的权限较大!
· 安全机制的设定可以针对 Linux 主机来维护即可!
· 对外只看的到 Linux 主机,所以对于内部可以达到有效的安全防护!
再来复习一下一个资料封包的内容,如下图所示:
由于防火墙可以分析网络上传送过来的资料封包,并取得分析该资料封包的文件头资料,亦即可以分析上面图标中的目的地与来源地的 IP, port, 带有的其它信息等等!所以经由分析这些资料后,我们不难发现抵挡的方法可以有几个动作:
· 拒绝让封包进入主机的某些 port :
这个应该不难了解吧!例如你的 port 20-21 这个 FTP 相关的 port ,你只要开放给内部网络的话,所以不对 Internet 开放,那么当 Internet 来的封包想要进入你的 port 20-21 的话,那么就可以将该资料封包丢掉!因为我们可以分析的到该封包所带有的 port 号码呀!
· 拒绝让某些来源 IP 的封包进入:
例如你已经发现某个 IP 主要都是来自攻击行为的主机,那么只要来自该 IP 的资料封包,就将他丢弃!这样也可以达到基础的安全呦!
· 拒绝让带有某些特殊旗标( flag )的封包进入:
最常拒绝的就是带有 SYN 的主动联机的旗标了!只要一经发现,嘿嘿!你就可以将该封包丢弃呀!
当然还有很多的技巧,这里我们就不多提了!底下好好的来谈一谈怎样建置一个简单的 firewall 主机吧!此外,我预计使用两层防火墙,分别是 iptables 与 TCP_Wrappers ,其中,两者的相关性为:
也就是说,资料封包会先经过 iptables 才会经过 TCP_Wrappers 的作用!底下我们先来谈一下防火墙规则的草拟啰!
-----------------------------------------------------------------------------------------------
防火墙规则的草拟:
这里提一个蛮简单的防火墙规划,我的硬件联机如上面的图标所示的那样,网络设定为:
· 外部网络使用 ppp0:由于是拨接的,所以实际对外是 ppp0 这一个界面;
· 内部网络使用 eth0 :这个 eth0 使用在内部网络的连接上面,而且网域为 192.168.1.0/24 这个 C Class;
· 主机开放的服务:目前我的主机虽然只有开放 NAT ,但是未来还会增加一些服务,目前我假设我的主机预计会有的对 Internet 上面启用的服务有:
o NAT
o WWW
o SSH
o SMTP
o POP3
o IMAP
o DNS
o FTP, Telnet, DHCP, NFS 都只对内部网域开放!
我们草拟的规则为:『关闭所有的,开放特定的』的模式,但是在政策上面( Policy )则先选择 ACCEPT ,然后在最后一行才以 NEW, INVALID 的状态来关闭所有的服务之 port 啦!而众所皆知的, iptables 所订定的规则为一条一条分析比对下去的,所以我们在 安排防火墙的规则 上面就显得特别的重要了!为了预防某些动作被搞混乱了,加上未来我们要以这个简易的防火墙进行更进一步的设定规划,所以这里我们需要用一个简单的流程图来示意!特别留意:这里我们总共用了三个档案,我放置的目录在
/usr/local/virus/iptables 里面,文件名分别为:
· iptables.rule :设定规则的档案,包括清除防火墙规则、加载模块、设定一些服务的登入与否等等!
· iptables.deny :设定恶意 IP 或网段的档案,里面完全都是抵挡的 IP 段落语法!
· iptables.allow:可以想成是一些自己设定的后门啦!因为我们不知道哪一天会出到外头去!这个时候,一个严格的防火墙说不定会挡死自己,所以需要加上一些 IP 的开放啰!
注意:每次修改完了任何一个档案,要立刻生效的话,请执行 iptables.rule 即可!而整个的流程有点像底下这样:
上面是我个人建议的小小流程,原则上,内部与主机的开放度很高,因为 Output 与 Forward 是完全开放不理的!对于小家庭的主机是可以接受的,因为我们内部的计算机数量不多,而且人员都是熟悉的,所以不需要特别加以控管!但是:『在大企业的内部,这样的规划是很不合格的,因为你不能保证内部所有的人都可以按照您的规定来使用 Network !』也就是说『家贼难防』呀!因此,连 Output 与 Forward 都需要特别加以管理才行!
-----------------------------------------------------------------------------------------------
简易说明 iptables 规则:
关于 iptables 的语法,与基本的用法,我们在 认识网络安全 里面已经稍微提过了,这里不再重复提出!仅进行上面流程的一些 script 的说明!请注意,我们的档案基本上都放置在 /usr/local/virus/iptables 里面呢!先来看一下 iptables.rule 的规则内容是怎样呢?
再来看一下关于 iptables.allow 的内容是如何?假如我要让一个 140.116.44.0/24 这个网域进入我的主机的话,那么这个档案的内容可以写成这样:
请特别注意,若您有新的 port 或者是没有开启某些 port 的时候,请在您的 iptables.rule 里面的第 7 步骤,新增加其它的 port 的服务,这样就可以啦!不过,还是如同前面我们所说的,这个 firewall 仅能提供基本的安全防护,其它的相关问题,还需要再测试测试呢!此外,如果你希望一开机就自动执行这个 script 的话,请将这个档案的完整档名写入 /etc/rc.d/rc.local 当中,有点像底下这样:
三个档案可以按底下来取得:
iptables.rule
iptables.deny
iptables.allow
------------------------------------------------------------------------------------------------
简易说明 TCP_Wrappers 设定:
好了!基础的防火墙设备已经 OK 了!接着下来,我们要来探讨一下在 iptables 封包过滤完成之后,并且进入主机后,接下来的这一层 TCP_Wrappers !呵呵!他其实也很简单啦!相关的语法你可以先参考一下 认识网络安全 里面的说明,这个地方由于是在 iptables 之后,所以呢,我们可以针对可以进入主机的封包来进行控制!举个例子来说,像是 FTP 好了!当一个 TCP 封包进入我们的主机时:
1. iptables 会先去检验相关的设定,由上面的范例来看,来自 Internet 上面的封包将会被抵挡下来,而唯一能够进入的网段为内部的 192.168.1.0/24 这一个私有网段;
2. 来自内部私有网段关于 FTP 的封包进入后,开始来到 TCP_Wrappers 的分析,由于我们不会开放全部的人进入,假设只有 192.168.1.1~192.168.1.3 可以进入取用 FTP 的服务,所以就需要设定 /etc/hosts.allow 及 /etc/hosts.deny 的设定了!
大致上便是如此!此外,以 SSH 为例,如果你只想要让『信任的主机』登入的话,那么也可以在里头进行规划!好了!这里我们以私有网段 192.168.1.0/24 可以取用 Telnet 及 FTP 的 hosts 有 192.168.1.2, 192.168.1.10, 192.168.1.20 这三部计算机,及来自 Internet 上面可以取用 SSH 的主机为 xxx.yyy.zzz.qqq 这个主机,及 192.168.1.0/24 全部的计算机!则你的两个档案可以写成这样:
其中,还有更高竿的 /etc/hosts.deny 的写法,这是关于当有来自不明人士的 touch 时,会被记录下来该 IP 的方法啦!
如此一来,当有来自非你所规定的合法 IP 试图以 telnet, ftp 及 ssh 联机你的主机时,系统就会将该 IP 寄一份资料给 root 来留文件!不过,这有个伤脑筋的地方,万一该 IP 最后成功的登入你的主机之后,可能会将 root 的信箱砍掉,导致这个作用就没有效果了!所以,这个时候,请你将上面 root@localhost 改成另一个非主机的信箱来收信!这样会比较有安全上的保障啦! ^_^这个咚咚一设定完毕立刻就生效了!所以不用去理他也没关系!但是要随时注意一下你的设定是否正确呦!
------------------------------------------------------------------------------------------------
其它相关测试:
虽然这样一来就稍微建置好了你的防火墙了!但是谁都不知道到底这样的防火墙效果如何?所以,你需要花费更多的时间来进行测试呢!测试的步骤可以是:
1. 先由主机向外面主动联机试看看;
2. 再由私有网域内的 PC 向外面主动联机试看看;
3. 最后,由 Internet 上面的主机,主动联机到你的 Linux 主机试看看;
一步一步作下来,看看问题出在哪里,然后多多的去改进、改良!!基本上,网络上目前很多的资料可以提供你不错的参考了!这一篇的设定写的是很简单,大部分都还在介绍阶段而已!希望对大家有帮助!底下列出几个有用的防火墙网页,希望大家有空真的要多多的去看看!会很有帮助的!
中文网站:
http://www.study-area.org/linux/servers/linux_nat.htm
http://linux.tnc.edu.tw/techdoc/firewall/
http://www.linuxyes.com/tw/tutorial/iptables.html
http://www.linux.org.tw/CLDP/Packet-Filtering-HOWTO.html
http://www.linux.org.tw/CLDP/Firewall-HOWTO.html
英文网站:
http://www.linux-firewall-tools.com/linux/
http://www.netfilter.org/
http://www.linuxguruz.org/iptables/
http://www.netfilter.org/documentation/HOWTO//packet-filtering-HOWTO.html
http://www.interhack.net/pubs/fwfaq/
本文地址:http://com.8s8s.com/it/it32447.htm