网安全基础:防火墙
我们已经知道如果自己的密码﹐还有如何使用资料加密的手段来资料。但是如果您的电脑遭到入侵﹐密码档案和私有键值都被盗窃了﹐我们所作的努力不就白费了吗﹖系统遭到入侵,在今天的网来说已是施空见惯的了...^_^
我们已经知道如果自己的密码﹐还有如何使用资料加密的手段来资料。但是如果您的电脑遭到入侵﹐密码档案和私有键值都被盗窃了﹐我们所作的努力不就白费了吗﹖系统遭到入侵,在今天的网来说已是施空见惯的了...^_^只要您的机器有连上网,那就有被入侵的可能。因此,所有的网安全专家所给的意见都是一样的:最安全的设定就是拔掉网线!
那么,我们如何做到安全的网连线呢?除了小心还是小心!不过,我们还可以用技术手段来对网线线加以控制,以便将一些不必要的连线排除在外。这样的技术设备,就是所谓的“防火墙(FireWall)”了。
何谓防火墙﹖
Firewall一词,原本是建筑物上用来阻隔火灾的结构,也有说是位于引擎室与驾驶舱之间的汽车部件。网的火墙就是这么用途的啦﹕将的、不安全的连线阻隔在您的网之外。而我们通常说的火墙有两种﹕过滤性火墙(filter)和代火墙(proxy)。若没特别说明,我们一般所说的火墙是指过滤性火墙。
然而﹐从安全觉度来看,proxy比起filter来说,将更加可靠:因为它将内部与外部网完全区隔开来了,除非它帮您做连线代理,否则别想建立连线。而且,内部网对外部网而言,是完全的!除此之外,proxy也有其非常好用的地方﹐比方说我们可以利用单一的连线﹐如使用modem/adsl﹐然后让整个内部网连接外部资源﹐不仅节省硬体成本﹐而也无需支付多个ISP帐号与电话线。Proxy的功能就是“代理”﹐可以分为“程式代理”和“socks代理”,如无特指,一般是指程式代理。
前者可以说是为你代理所有应用软体的连线工作﹕当您需要连接外部资源的时候﹐您的请求是直接送给proxy﹐然后﹐proxy会帮您到真正的目的地去获取﹐然后再转送给您。而每一次的代理动作﹐它都会将资料保留一个备份﹐存在它的快取区去﹐如果再接获相同的请求(不管是原来的机器﹐还是另外别的机器发出的)﹐它就将存于快取里面的资料做为回复。有些聪明的proxy还能知道快取里面的资料是否和实际目的地的资料同步呢﹐如果发现实际目的地的资料经过更新﹐它就会再次复制进自己的快取去。
从的这个过程﹐我们可以看得出﹐proxy还可以提高网的存取速度哦﹐因为如果资料已经在快取里面了﹐其传送都在LAN里面进行﹐而无需经过复杂的由程序。同时﹐因为资料无需从外面重复传递﹐实际上﹐也令到网的流量减少许多。而且﹐通过proxy﹐我们也可以省下许多IP位址﹐因为其他机器尽可以使用私有IP就行了。目前正时兴的网咖(InternetCafe)﹐许多就是利用proxy来降低成本和提高www的浏览速度。另外﹐proxy还可以再经由上游proxy(或proxy阵列)连接internet﹐从而再可以提高效率和安全性。
而socks代理呢﹖就好象接线生那样﹐仅是将您的TCP连接由里面的接口搭至外面的接口而且。还记得在“网概念”里面提到的API吗﹖socks代理其实就是代理API请求而已﹐而真正处理工作的﹐还是发出请求的主机本身。
这里还要一提的是“NAT(NetworkAddressTranslation)”﹐它的工作原理也非常近似socksproxy﹐不过﹐它是利用转换封包的位址来达到目的。如果本地网主机要将一个封包送到外面网﹐当火墙收到这个封包的时候﹐就会启动IP伪装功能(maquerading)﹐将来源位址暂时转换成其本身位址﹐然后等到接到回应封包之后﹐再将位址进行还原(demasquerading)。在里面的机器根本就无需知道这个动作﹐一切都由火墙处理好了。这和Proxy一样﹐也可以节省大量的IP位址﹐而让使用私有IP位址的主机也能够存取internet了。因此,有人也将NAT称为IPProxy。
防火墙的运作原理
如果您对TCP与IP协定已经相当了解的话﹐尤其是IP封包和TCP封包格式﹐那么,您将会更容易了解(过滤性)防火墙的运作﹕火墙会对所有经过的封包进行检查﹐按照一系列规则(rule)﹐来决定封包的处理方式。火墙一般都会根据封包的来源和目的位址﹑协定﹑port﹑界面等因素进行判断﹐决定是否让封包通过。提醒一下:firewall只管放行与否,至于要送到哪里去,则是routing所负责的。
我们设定规则的时候常多样性的﹐也可以由一个chain导向另一个chian﹐直到符合我们的要求为止。下面让我们看一看一个非常阳春的规则设定例子﹕
当我们从一个chain跳到另一个自定义的chain的时候﹐如果自定义的chain没有将封包剔除的话﹐就会回到刚才的chain的下一个规则去﹐继续其后的规则检查。从上例中我们可以看到﹕只有从192.168.1.1传给192.168.1.2的TCP封包才能过关﹐其它诸如ICMP和UDP封包﹐及其他位址的封包一律会被挡掉。只要我们精心设计﹐不难设定出一个适合自己情形的不太松也不太紧的火墙的。
防火墙的设定技巧
从的防火墙运作来看﹐我们可以运用设定规则﹐将一些重要的主机起来﹐让其只允许特定的网存取﹐也就可以将大部份的网入侵者摈于门外。不过﹐对于那些绝顶骇客高手而言﹐还是会从您的设定漏洞攻破您的的﹐例如﹕他们通常会使用“取道”的方法﹐绕过那些被的位址﹐以及通过不断改变位址来逃避追踪。有些较优秀的火墙程式﹐可以自动检测一些骇客常用的方法﹐除了会对网管理员发出预警之外﹐还可以即时切断该等连线﹐和径等动作。
同时﹐利用不同系统来设定多个火墙﹐也能提高防御能力﹕除非骇客对所有系统都熟悉﹐否则﹐过了一道火墙﹐还是过不了第二道火墙﹔而且由于第一道火墙的屏隔﹐要探测第二道火墙的难度也高许多。当然﹐要设定的规则就更为复杂了﹐通常都会造成过于严厉而令到一些网资源无法使用﹐或降低了网的效能。
所以﹐设计一套完善的规则﹐其实是件极具挑战性的事情﹐其后也需要不断的测试以修补漏洞﹐这也常耗时的工作。如果对一个繁忙的网来说﹐事先的测试工作就显得非常重要了﹕您总不能在收到一大堆不能连线的投诉之后而关闭火墙作调试吧﹖
通常我们在设定火墙的时候﹐划分一个“非军事区(DMZ-DemilitarizedZone)”常好用的﹕
我们可以设定火墙﹐允许外部直接传入到DMZ的伺服器﹐但仅于某些特定的协定﹐如DNS﹑WWW﹑FTP﹑MAIL等﹐同时也允许内部网使用这些服务。但外部网是完全进入内部网的﹐而内部网则可以通过Proxy存取外部资源﹔我们也允许内部伺服器使用rsync协定来和DMZ的机器进行资料同步。一般我们不会将重要的资料存放在DMZ的机器﹐而且邮件也会在DMZ接收后由内部伺服器提取进来。这样﹐就算那里的机器被攻破了﹐也不至于损失太多。
至于如何一一设定﹐恐怕不是这里能够详细论述的了。