Liunx 架站技术专题  

简易 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/

(来源:鸟哥私房菜)


Linux 架站文件
网络基础架构
局域网络设定
连上 Internet
常用网络指令
网络问题解决
限制联机 port
up2date 升级套件
动态 DNS 技巧
简易 Router
认识网络安全
NAT Server
简易防火墙
Telnet, ssh
NFS Server
DHCP Server
DNS Server
Proxy Server
Mail Server
Web Server
SAMBA Server
旧文件 Red Hat 6.1 (Very Old)
   

站内技术专题搜索


强力搜索

关键字:
全国各地培训机构免费咨询热线:800-830-5807  网站投诉电话:86-755-83441580
常年法律顾问:郑凡律师 本站已申请法律保护,盗版或抄袭本站者将受到严厉的法律制裁,举报盗版本站者属实重酬
《中华人民共和国电信与信息服务业务经营许可证》编号粤ICP备05089709 2004中国商业网站100强
《深圳市软件企业协会》成员 《深圳市软件行业协会》理事单位 《中国互联网行业协会》成员 《广东互联网协会》成员
深圳市拓普思信息科技有限公司  版权所有