西元前12世纪,希腊与特洛伊的一场战争,造就了荷马(Homer)史诗中的两位英雄人物Achilles与Odysseus,其英雄救美的事迹留存于诗歌中让人永世赞叹;而这场战争最终决定性的胜利竟然是一只木马,这样富戏剧性的结局更让人不可思议,除了具军事教训意味外,着实也多了许多趣味性。如今这场战争却活生生地搬上了Internet舞台,虽然少了美女Helen助阵,不过精采的程度却不下于3000多年前的盛况,只不过整个场景都虚拟于网路中。
打造一道网路城墙
据荷马史诗记载,希腊联军共围剿特洛伊城达十年之久,当时没有现代的空中部队,因此整个防卫所倚靠的都是城墙!据说当时特洛依城城墙厚度达五公尺,在这么坚固城墙防卫下,希腊一直都无法将特洛依城攻下。
相对于特洛依城墙的厚度,到底一道网路的城墙要多「厚」才安全呢?在Internet中的城墙,我们称之?Firewall或是防火墙,主要的作用是将原本与Internet直接串联的私人网路,从中加以拦截,以进行网路交通过滤与管制。
这道网路虚拟的城墙强度虽然不能以实体厚度来衡量,但打造这道城墙同样要考虑到「是否地基够稳?」、「是否有钢骨结构?」、「城门卫兵是否尽责?」,此外这一整套控管机制「是否有品质保证?」,如此才能评断Firewall是否足以抵御外侮!如(图一)。
稳固的地基--Secure OS
高楼平地起,因此打好地基是建造一道坚固城墙的基础!如何打造Firewall的稳固地基?在电脑系统里,Firewall不能独立存在,必须倚靠在作业系统(OS)上,因此作业系统就是Firewall的地基。作业系统的稳固与否,在于安全性上是否有保障?从以下几个方向来设计作业系统,相信就能有稳固牢靠的地基︰
1. 以安全的角度出发,来设计作业系统
作业系统是电脑应用环境的基础,因此要使用所有的电脑程式需要安装有作业系统。一般的作业系统设计来满足所有的应用环境,因此出发点是以「弹性」?考量,在此前提下,作业系统呈现的是「多而杂」,样样都可以做,不过却不见得都一定用得到;而以「安全」角度来设计的作业系统,设计的用途是专?Firewall用的,是个「小而美」的作业系统,因此可与Firewall紧密搭配,当然可以有效提升Firewall的强度。
2. 移除不需要的功能与指令
系统上存在的程式与指令愈多,漏洞也就像对地增加,骇客常常会利用作业系统上运作程式的漏洞,作?入侵的途径,并利用系统上可用的指令来破坏系统的运作。因此将不必要的程式与指令移除,骇客的攻击目标自然减少了!
3. 移除所有作业系统上既存的程式的漏洞
有些程式是必须存在作业系统上以利系统运作,而这些程式本身仍然可能遭受到骇客攻击,因此作?一个Firewall上的作业系统,就不能沿用一般作业系统上的运作程式,必须重新审视程式内容是否隐藏漏洞,一一移除漏洞后再重新设计,然后才供系统运作使用。
Firewall的「钢骨」结构
近两年来全世界各地接连发生了数起大地震,包括台湾的921大地震,均造成相当多的建筑物倒塌与伤亡损失,?了补强建筑物的耐震强度,建商无不采用「钢骨」结构来强化耐震度。而在Internet世界中,骇客的入侵手法日益精进,入侵事件更是与日俱增,就好比强震一波波朝Firewall袭击而来,因此有必要?Firewall建筑「钢骨」结构才能有效抵挡骇客的「强震」撼动!
1. 各程式具有独立的执行空间
各程式执行时不能彼此干扰,同时也不能共用相同目录,否则一旦某一支程式遭受入侵,其他程式也可能同时遭殃。因此各程式执行时所需的档案,如函式库或指令,都必须摆放在各自的目录中,不能有共用的情形。
2. 个程式以最少许可权执行
每一支程式的执行者许可权只够执行程式本身,同时不能任意切换目录,以防止许可权设定不当的破坏。
3. 所有权限资料设定唯读
?了确保Firewall系统的正常运作,避免骇客破坏正常运作的程式或资料,甚至防止骇客程式佯装成正常程式,将Firewall系统上的许可权资料设定?唯读,骇客就不能进一步进行破坏。
4. 没有超级使用者
一般作业系统中均存在一个超级使用者,掌控所有系统的权限,在Windows系统中叫做"administrator", Unix中叫做"root"。一旦骇客取得这个使用者帐号,即可对系统进行全面性破坏,例如中断Firewall的运作。因此Firewall上的作业系统应该没有超级使用者,才能有效避免骇客破坏Firewall的运作机制。
Firewall的进出管控
Firewall是设计用来管控所有进出的封包,而管控的机制因控管的程度而有所区别,我们称之为Firewall的控管层级,这就好比城门守卫,管制进出城门的人员。如 (图二)所示,目前Firewall的控管层级大致上区分为三层︰
Packet Filtering:
是最基本的Firewall控管,只管控到Network层级的封包内容,因此过滤速度是三种层级中最快速的,相对的对于管控的安全性是最差的。如(图三)。
举例来说,这就好像H君企图送杂志包裹给城内的A书店,Packet Filtering只检查H君的通行证,以及查询是否允许杂志包裹进入,如果答案是肯定的话就给予放行,否则给予阻挡。因此有可能H君所宣称的杂志包裹,实际上是邮包炸弹;同时也可能有人从中挟持H君的通行证,企图用伪冒身分闯关。
Stateful Inspection:
因为Packet Filtering不能有效地保证存取身分,因此有可能发生IP Spoofing的骇客事件,也就是伪冒身份的存取。 Stateful Inspection就是为了弥补此一缺失而改进的Packet Filtering技术,它位于MAC Layer,能持续追踪每一个开启port的连线,直到连线终止。如(图四)。
同前例,此时守卫在H君进入城门时验明正身后,一路上即予以监视录影,同时并联络A书店是否收到一件杂志包裹,直到H君送完包裹步出墙门后,整个监视过程才终止。因为一路上监视,因此能有效地防止H君被从中挟持而遭伪冒;虽然它能追踪包裹是否完整送达,但也可能宣称的杂志包裹其实是邮包炸弹!
Application Layer Gateway:
上述的两种控管机制,都无法完整管控整个封包传递过程,Application Layer Gateway顾名思义是能控管到达每个Application,也就是说Firewall需要了解每个Application到底在作些什么事?因此要控管HTTP,Firewall就必须为HTTP写一支控管程式,这支程式知道HTTP实际上的运作内容为何。因为每种应用程式都有相对应的控管程式,因此Application Layer Gateway的Firewall可以完整地管控每个进出的封包;同时与前两种控管机制不同的是,Application Layer Gateway会将连线存取的动作,转交由Firewall进行,而不是两端点间的直接连线。如(图五)。
《图五 Application Layer Gateway》 |
|
同前例,H君要送杂志包裹给A书店,城门守卫验明正身后会将包裹接下,同时打开包裹检查是否为杂志,确认后由守卫亲自将包裹送达A书店。如此就不用担心是否包裹被从中掉包,同时确认包裹内容。
木马屠城重返Internet时代
在特洛伊战争中,要不是特洛依人多事将木马拖入城内,也不会造成木马屠城的惨剧;不过在Internet的时代,Firewall城门是不能紧闭的,在某些程度上什至是欢迎大家光临的;Internet因为互联而得以蓬勃发展,控管只是要降低与外界的接触面,并不能完全阻隔。因此提供外界的连线存取是有必要的,而倚赖 Firewall的连线存取控管,是否就可以免于骇客入侵了呢?
答案是︰Firewall可以阻挡一些入侵行为,但是并不能完全抵挡。依连线控管层级来分析,采用Packet Filtering或Stateful Inspection控管机制的Firewall,可轻易被伪装成正常网路程式port号的后门程式欺瞒! Application Layer Gateway能阻挡的入侵行为最多,包含防止身分伪冒、封包调包以及确保协定内容的真实。但这些还是不够,因为即使传输内容合乎协定标准,但是封包内容传递至远端系统后,系统的反应却不见得是正常的。
就如同上述的例子,A书店如果是儿童书店,而收到的杂志内容却是光怪陆离,或是色情暴力,这样对于书店读者来说反应是负面的,其实并不应该收下这些杂志的。但因为守卫并不负责书刊分级,他只管将东西传送到目的地,A书店还是照单全收,书店也只好自行处理这些垃圾;有时也可能收到一大堆的垃圾杂志,堵住整间书店,以致不能正常营业!
而在Internet的环境中,各Internet Service的问题通常还更严重,我们称之为「弱点(Vulnerability)」或「漏洞」,骇客可以利用Internet Service的正常传输指令,夹带的却是系统所不能接收的内容,来达到入侵系统有弱点的主机的目的。一旦入侵到内部系统后,就有机会再入侵到其他系统。
(图六)就是一出网路木马屠城记,Firewall提供内部的Web与Mail供外界存取,Internet使用者使用标准的程式或指令来达到连线的目的;骇客却可以利用这些既已开启的通道,对内部Web Server与E-Mail Server进行破坏,且一旦破坏成功后,又转而破坏其他Unix与NT主机。
常见的系统入侵行为
在Firewall的保护伞后面,仍然会遭受外部入侵的行为有︰
1. 妨碍系统正常运作(Denial of Service),以让所有网路连线中断为目的。
2. Buffer Overflow︰利用程式设计的疏失,异常中断程式运作。通常会伴随"root exploit"或"backdoor"的攻击。
3. 撷取超级使用者权限(root exploit)以控制系统,并据此攻击内部其他机器。
4. 安装后门木马程式,共骇客随时进入系统用,同时主动搜集相关资讯传送给骇客。
网路需要全方位防卫
特洛伊城之所以久攻不破,是它有一道坚固的城墙,不会因城墙溃败而引来全面性的杀机;在Internet上我们也需要一道坚实的Firewall,以确保Firewall不会因被击溃,而导致企业内部数十乃至数百台的电脑的入侵危机!但木马屠城却给我们另一层的启示︰在外需要厚实的城墙抵挡,在内更须时时提高警觉,防止可疑份子的渗透破坏!
因此即使有了Firewall,也须要时时提防所有的连线是否隐藏破坏分子?也须审视是否系统脆弱地不堪骇客一击?同时更须设法提高系统的自卫能力。如此遇到木马时,也不至于被屠城了!而这些内部的防范,并非Firewall能力所及,往后的篇幅我将会为大家一一介绍。
(作者为咨安科技技术部经理,联络信箱 tyrone@secureuni.com;咨安科技为网路安全专业咨询顾问公司)