http://dev.csdn.net/develop/article/63/63416.shtm
简易 Firewall 架设
------------------------------------------------------------------------------------------------
1. 学习本章的必备技巧
2. 为何需要防火墙
3. 网管人员所需要具备的认知与能力
4. 简单的防火墙硬件配置与抵挡技巧
5. 防火墙规则的草拟
6. 简易说明 iptables 规则
7. 简易说明 TCP_Wrappers 设定
8. 其它相关测试
------------------------------------------------------------------------------------------------
学习本章的必备技巧:
欢迎各位来到鸟哥的『碎碎念时间』,呵呵!就是又要大家多念书啦!这一个章节中,我们会提到很多的基础防火安全措施与概念,请特别了解一下您的系统呀!还有那几个很常用到的指令基础也需要特别留意呀!不然的话,很容易搞的七荤八素的!切记切记!
· 学习 vi
· 认识 BASH Shell
· Shell scripts
· 系统目录配置
· 认识系统服务
· 网络基础
· 限制 Linux 对外联机的 port
· 认识 iptables 与 TCP_Wrappers
另外,还是一句老话啦!将 Linux 基础 学习一下吧!
返回页首
------------------------------------------------------------------------------------------------
为何需要防火墙:
· 缘起:
因为不希望常常在网络上面看到『唉呀!我依据某某网页的信息架设了一个 Linux 主机,为什幺过了一个星期之后,以 root 的密码无法登入我的主机?』,还有一种说法『唉呦!我的 Linux 主机为什幺无法查询登录文件了?为什幺被 ISP 警告说我的 mail server 被列为黑名单了,为什幺被侦测到说我有攻击人家?我都没有做坏事呀!?』呵呵!很伤脑筋对不对~没错啦!网络安全果然是很麻烦!又得要天天照顾他,又得要随时更新到最新版的套件!唉~麻烦吶!但是网络安全却又是一个网管人员的基本知识要求,一个具有良好的防火墙措施的主机,可以让一个网管人员过的更开心呀!
要晓得的是,我们是一般的小家庭,所以主机即使被 Cracker 入侵,只要在对方利用我们的 IP 干坏事之前就将主机给他关掉的话,还能稍微保护一下自己,但是若你是一的大型企业的主机,而且还提供有关信用卡啦,个人用户的信息啦等等的讯息时,那幺可不能说关机就关机的,这个时候怎幺办,如果你没有设定紧急应变手则,没有良好的登录档案分析习惯,也没有实时回报系统在帮你侦测你的主机,嘿嘿!那总损失除了金额之外,还包括公司的信誉,那可是很可怕的呦!由国外的分析可以发现,几乎主机被入侵之后,损失的除了金钱之外,还有主机维护的时间、软硬件重新设定的费用等等,相当可观的一笔费用呀~
所以啦!架设一部具有较为安全的主机,对我们来说,也是相当重要的,怎幺说呢?别以为我们是一般的 ADSL 小站就无所谓呦!等到真的被入侵之后,然后你的主机被利用来作坏事,然后利用你的主机作坏事的那个人又将他的登录信息杀掉,让人加找不到他,嘿嘿!到时候吃官司的可会是你!别以为 ADSL 拨接制的频宽不足呢!要使用你的主机来做事那也不需要多大的频宽,只要能连上 Internet ,只要能再藉由你的主机向外面扩散,嘿嘿!再怎幺小的频宽都有人会利用的!『千万不要小看系统的安全性~』
· Cracker 常见的入侵技术:
这里先提供几个可能的入侵方法,然后我们再来聊一聊怎样防备我们的主机呢:
· 使用工具程序入侵你的主机:
千万不要怀疑,目前网络上面有太多的入侵侦测型态的攻击软件了!只要你的主机上面的防护作的不够好,他就可以经由攻击软件提供的功能,将你的主机的 root 权限取得,进一步操纵你的主机!并且,为了怕被你的一些工具程序发现他的 PID,所以一般来说,他会去修改你的主机里面的几个档案,例如:who, w, last, top, ps, netstat, find 等等,让你永远找不到他是否在你的系统当中!怕了吧?!赶快做好防备工作!
· 蠕虫或木马程序 ( Trojan horse ):
取自木马屠城记的意思,木马程序会主动的将你的主机开一个后门 ( 可以想成是 port 被激活了 ),让攻击者可以轻轻松松的进出你的主机呢!那幺木马程序怎幺会在你的系统上面呢?很简单呀!如果今天你下载了一个不明程序,而且就安装了他,他就可能会常驻在你的内存当中了!所以不要随意安装不明来源的档案呀!例如前一阵的那个有名的某个软件,在自家的网站上面还被放置了有木马的程序在原套件中~呀!真可怕~另外,蠕虫也很可怕,他会自己繁殖长大,例如前一阵子相当有名的 Nimda 与 Code Red 病毒,会让你的网络频宽被吃光光!!
· DoS 攻击法 ( Denial of Service ):
这种攻击法也很要命,方法有很多,最常见的就属 SYN Flood 攻击法了!他会不断的送出资料封包来让主机等待响应,让你的主机不断的开启 port ,结果就是耗尽系统资源!阿!又是当机 !
· IP 欺骗:
这个是比较高竿的人搞出来的把戏,他把送到你主机的封包的文件头资料改过了,并宣告成为你内部网络的一份子!如果你没有挡掉这样的封包的话,那幺通常就会变成『接受他』!结果就是对方又可以轻而易举的进入你的主机了....唉!真难防~
· Port scan:
这个最讨厌了!因为目前很多的 distribution 为了自身测量自己的漏洞,都会附上类似 nmap 这一类的扫瞄软件!这种软件自己玩自己还无所谓,可以检查一下自己的主机开了哪些 port !但是一旦被使用来攻击别人的主机,那可就不好玩了....如果你有这种机会的话,也不要随意去侦测别人的主机呦!很是危险呢!
· 主机维护的几个重要法门:
呵呵!所以说,要来跟大家谈一谈如何架设一个简单的防火墙啦!请特别留意,在您的 Linux 主机实地上网之前,请先:
o 关闭几个不安全的服务;
o 升级几个可能有问题的套件;
o 架设好最起码的安全防护--防火墙--
其它相关的讯息请到 主机防护 A 计画 里面去看一看怎幺增加自身的安全吧!
返回页首
------------------------------------------------------------------------------------------------
网管人员所需要具备的认知与能力:
从上面的情况来看,嘿嘿嘿嘿!要作为一个称职的网管人员,还真是难呀!基本上,你必需要具备这些能力才行呢:
· 了解什么是需要保护的内容:
我的天吶,还要知道什么是需要保护的呀!?呵呵!没错,就是如此!由刚刚我们知道的主机入侵方法当中,不难了解,只要有人坐在你的主机前面,那么任何事都有可能会发生!因此,如果你的主机相当的重要,请『不要让任何人靠近!』你可以参考一下汤姆克鲁斯在『不可能的任务』里面要窃取一部计算机内的资料的困难度!!
o 硬件:能锁就锁吧!
o 软件:还包含最重要的资料呢!!
· 预防黑客( Black hats )的入侵:
这可不是开玩笑的,什么是黑客呀!这是因为原本在西部电影当中,坏人都是戴黑色帽子的,所以之前的人们就称网络攻击者为 Black hats 啦!在预防这方面的攻击者时,除了严格管制网络的登入之外,还需要特别控制原本你的主机中的人物!就我们小网站来说,不要以为好朋友就随便他啦!他说要指定密码是跟他的帐号相同比较好记,你就答应他!等到人家用他的密码登入你的主机,并破坏你的主机,那可就得不偿失了!如果是大企业的话,那么员工使用网络时,也要分等级的呢!
· 主机环境安全化:
没什么好讲的,除了多关心,还是多关心!仔细的分析登录档,常常上网看看最新的安全通告,这都是最基础的!还包含了以最快的速度更新有问题的套件!因为,越快更新你的套件,就越快可以杜绝黑客的入侵!
· 防火墙规则的订定:
这部份比较麻烦一些啦!因为你必需要不断的测试测试再测试!以取得最佳化的网络安全设定!怎么说呢?要晓得的是,如果你的防火墙规则订定得太多的时候,那么一个资料封包就要经过越多的关卡才能完整的通过防火墙,以进入到主机内部!嘿嘿!这可是相当的花费时间的!会造成主机的效能不彰!特别留意这一点呢!
· 实时维护你的主机:
就像刚刚说的,你必需要随时维护你的主机,因为,防火墙不是一经设定之后就不用在管他了!因为,再严密的防火墙,也会有漏洞的!这些漏洞包括防火规则设定不良、利用较新的侦测入侵技术、利用你的旧软件的服务漏洞等等!所以,必需要实时维护你的主机呀!这方面除了分析 log files 之外,也可以藉由实时侦测来进行这个工作!例如 Open Linux 里面的 PortSentry 就是蛮不错的一套软件呢!
· 良好的教育训练课程:
不是所有的人都是计算机网络高手,尤其虽然现在信息爆炸,但是仍然有很多的机会会遇到计算机白痴呀!这个时候,要晓得的是,我们对于内部网域通常没有太多的规范,那如果他用内部的计算机去做坏事怎么办?!有时候还是无心的~挖哩ㄋㄟ~所以说,需要特别的教育训练课程呀!
· 完善的备份计画:
天有不测风云,人有旦夕祸福呀!什么人都不知道什么时候会有大地震、我们也都不知道什么时候会突然的硬盘挂掉去~所以说,完善的备份计画是相当重要的!!这一部份请参考一下 Linux 主机备份 的内容吧!
反正呦,就是要花蛮多心力在上面的就是了!不然,真的会一天到晚接到你的主管、你的用户、你的客户哇哇大叫的呦!
返回页首
-----------------------------------------------------------------------------------------------
简单的防火墙硬件配置与抵挡技巧:
我们在 认识网络安全 那一篇里面提到了相关的网络危机,并且也分析了 TCP/IP 架构底下,封包的可能入侵方向,OK!那么接着下来,要了解的自然就是防火墙的设定啦!请特别留意,防火墙除了可以帮助我们抵御外来的主动联机之外,也可以帮我们控管网络流量,并且,在简单的局域网络规划中, Firewall 搭配 Router ( 就是 NAT 主机的架构 ) 也是相当常见的一种规划!这种规划对于内部私有网域的安全也有一定程度的保护作用呢!
好了,现在我们需要来做好基础的防火墙措施了,在这里,我们以最简单的 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/