1.3 分级解析对Linux服务器的攻击

随着人们对安全问题的日益重视,网络安全已经不仅仅是技术问题,而是一个社会问题。企业应当提高对网络安全的重视,不应被各种商业宣传所迷惑,认为安装了防火墙、认证授权和入侵检测系统就可以保护网络免受各种攻击。实际上,并没有绝对安全的网络,也没有“无坚不摧”的安全解决方案。从辩证法的角度来说,安全是相对的。如果一味地只依赖技术工具,那就会越来越被动;只有运用社会和法律手段打击网络犯罪,才能更加有效。我国对于打击网络犯罪已经有了明确的司法规定,遗憾的是还没有得到大多数企业的重视,这也是本节的写作目的。

下面不仅从技术的角度解析攻击,还从社会的角度分析攻击者的特征、攻击原因、攻击目标等,攻击和安全防护是矛与盾的关系。安全与反安全之间就是—场长期战斗,了解攻击者是非常重要的。更重要的是根据攻击级别提出解决方案。

攻击是一种旨在妨碍、损害、削弱、破坏服务器安全的未授权行为。攻击的范围可以从服务拒绝直至完全危害和破坏服务器。

1.3.1 攻击者使用什么操作系统

攻击者使用的操作系统种类非常广泛。Macintosh是很少使用的平台,因为可用于Macintosh操作系统的工具不多,移植所需工具相当麻烦。Windows NT/2000/XP和UNIX是使用最多的平台,Linux也比较常见。同时可以看到越来越多的攻击者正在使用FreeBSD或NetBSD。

1.3.2 典型的攻击者有什么特征

(1)能用C、C++或Perl编写程序。大多数原始安全工具都是用这些语言中的一种或几种编写的,攻击者必须能够解释、编译和执行这些代码。更高明一些的攻击者则能够将那些不是专为特定平台编写的代码移植到自己的平台上。同样,他们也开发新的代码模块,以扩展如SATAN的工具(这些程序允许用户将编写的新工具集成进去)。不过随着J2EE平台的流行,Java成为新的工具。

(2)深入掌握TCP/IP知识。攻击者必须了解Internet是如何工作的。攻击者必须对TCP/IP的原始代码有所了解,如IP的组成、帧的封装步骤等。

(3)每周使用Internet多于72小时,攻击者不是临时用户。他们不仅了解自己的机器,而且对网络也了如指掌。攻击者必须有丰富的网络使用经验。

(4)至少熟知三种操作系统,其中一种操作系统毫无疑问是UNIX或Linux。

(5)大多数攻击者是(或曾经是)系统管理员或开发人员,具有开发客户服务器应用的经验。

1.3.3 攻击者典型的目标是什么

攻击者因不同原因而攻击不同类型的网络。我们经常能从媒体上了解到一些大公司或政府的网站遭到攻击。不过,实际上攻击者典型的目标大多是小型网络。防火墙的使用和维护费用昂贵且需要技术支持,小网络不可能用或只能用一些低级产品。攻击大公司、政府的网站会造成比较大的影响。

1.3.4 实施攻击的原因是什么

(1)恶意——他可能是某个公司的心怀不满的雇员,或许你曾在某个Usenet组激怒了他。

(2)娱乐——或许你曾经夸耀过你的系统的安全性,告诉别人它是如何坚不可摧,这些都是攻击者无法抗拒的挑战。

(3)获利——有人付给攻击者报酬,让他关掉某台机器或获取某公司的商业机密。

(4)好奇——许多攻击者纯粹由于好奇心的驱使,想享受一下攻击过程。

(5)政治——政治原因占攻击原因的很小比例(但是很重要的一种),他们搜寻杂志、新闻刊物中特别的论点,他们通过攻击来表达自己的政治观点和世界观。

1.3.5 攻击级别

系统攻击有许多种类,本节从攻击级别的角度进行说明。图1-6显示了攻击的6个等级,每一层代表一个进入目标网络的深度,我们称之为敏感级(Levels of sensitivity),箭头与层次相连的点标志了对应于每一破译技术的危险程度,我们将它称为攻击状态(States of attack)。

图1-6 攻击的6个等级

1.级别1

● A箭头:表示邮件炸弹的攻击。

● B箭头:表示简单拒绝服务攻击。

在级别1范围内的攻击基本上互不相关。包括拒绝服务攻击和邮件炸弹,这些攻击一般比较好制止,这是因为这些攻击是以垃圾信息方式进行的。在大多数情况下,只需应用排除模式设置就可以解决这个问题。拒绝服务攻击包括:简单拒绝服务攻击、分布拒绝服务攻击、DNS分布拒绝服务攻击和FTP攻击。

对于这四种攻击可以采用以下措施:

● 关闭不必要的服务。

● 限制同时打开的SYN半连接数目。

● 缩短SYN半连接的time out时间。

● 及时更新系统补丁。

拒绝服务攻击经常发生,解决此问题的最佳方法就是在inetd.sec文件DENY清单中加入入侵者源主机/网络名阻止入侵行为,除屏蔽网络连接外,还没有一种主动性的方法可以避免这种攻击。不过需要注意的是,如果证实了一次拒绝服务攻击,应该检查系统是否可能遭受其他攻击,拒绝服务攻击常常是电子欺骗的先行者(甚至是组成部分)。如果观察到某台机器特定端口上的一次全面的Flooding攻击,请观测这个端口,弄清这个端口是干什么用的,检查它限制什么服务。如果那种服务是内部系统的组成部分,那么要特别小心。那些貌似拒绝服务的攻击,事实上就是突破网络安全的开始。通常情况下,拒绝服务攻击会持续很长一段时间。

如果是同步Flooding攻击,这里有一些识别攻击者的方法。攻击者在每一次实施ping时,向目标报出了他的IP地址。虽然没有给出攻击者的E-mail地址,但我们可以追踪其最终源(注意,追踪程序将揭示攻击者出发的真实网络地址,这通常是反向追踪程序查找的最后一项内容)。

大多数拒绝服务攻击导致相对较低的危险,即便是那些可能导致重启的攻击也仅仅是暂时性的问题。这类攻击在很大程度上不同于那些想获取网络控制的攻击。

邮件炸弹的攻击也叫邮件水灾攻击,发生在当许多邮件被发送至一个目标,发送代理人被覆盖时,邮件水灾会破坏其他交流程序的稳定。用邮件来使一个系统蒙受灾难是残酷的,但却是有效的,攻击者的目的就是要破坏邮件服务器。诱发邮件水灾攻击的有趣方法之一是利用一些邮件申请的自动反应功能。一旦黑客发现对两个不同的系统能做出活跃的、自动的应答时,他就能指使一个邮件发送到另一个。因为两者都是对每个信息做出自动应答,他们制造了一个信息回馈孔,这会比其他系统收集到更多的邮件。至于邮件水灾,通常很容易追查到攻击者。此外,bozo files(kill文件)和排除模式配置基本上能阻止这些攻击。

2.级别2和级别3

● C箭头:表示本地用户获得非授权访问。

● D箭头:表示本地用户获得他们不该拥有的文件写入权限。

● E箭头:表示远程用户获得了非授权账号。

级别2和级别3包括诸如本地用户获取到了他们本不可以访问的文件的读写权限这类事件。当然,任何本地用户访问/tmp目录都具有危险性,它能够潜在地铺设一条通向级别3的路。在级别3,用户可以获取写访问权限(并由此过渡到级别4环境)。

级别2攻击是危险的,并很容易发展为级别3、级别4、级别5和级别6。如果运行这种网络,请立即取得上述访问控制设备,如果不照此进行,某些人想破坏网络仅仅是时间问题。如果有可能,请监控所有流经端口137~139的消息,其间将产生共享进程。

本地攻击的难度不太大。所谓本地用户(Local user),我们认为是相对而言的。在网络世界中,本地用户是在本地网络的任一台机器上有口令,因而在某一驱动器上有一个目录的用户(无论那个目录的服务目的是什么)。

由本地用户启动的攻击几乎都是从远程登录开始的。对于ISP,最好的办法是将所有shell账号放置于一个单独的机器上,也就是说,只在一台或多台分配有shell访问的机器上接受注册。这可以使日志管理、访问控制管理、释放协议和其他潜在的安全问题管理更容易些。还应该将存放用户CGI的系统区分离出来。这些机器应该隔离在特定的网络区段,也就是说,根据网络的配置情况,它们应该被路由器或网络交换机包围。其拓扑结构应该确保硬件地址不能超出这一特定区段。

针对这些利用访问控制营造所需环境的攻击,有两种涉及许可权的关键因素,每一种都能影响到级别2是否会升级到级别3、4或5。这些因素是:

① 端口的错误配置。

② 软件中的漏洞。

第一种情况的发生是没有正确理解许可模式,不是每一个UNIX或NT系统管理员都是专家,经验是非常重要的。

第二种情况更加普遍,任何操作系统都有漏洞。对此问题尚未有直接的解决办法,因为大多数这种漏洞在软件加载时并不出现。唯一的办法是订阅每一种与故障、漏洞、系统密切相关的邮件列表。

级别2和级别3的主要攻击方法是社会管理邮件(电子邮件攻击的一种):黑客会诱骗合法用户告知其机密信息或执行任务,有时黑客会假装为网络管理人员向用户发送邮件,要求用户提供系统升级的密码。

3.级别4

● F箭头:表示远程用户获得了特定文件的读权限。

级别4通常与外界能够访问内部文件相关。这种访问能做到的不只是核实特定文件是否存在,而且还能读这些文件。级别4还包含这样一些弱点,即远程用户无须账号就可以在服务器上执行有限数量的命令。由于服务器配置失误,有害CGI及溢出问题都可能引发这些漏洞大量出现。

密码攻击法是级别4中的主要攻击法,损坏密码是最常见的攻击方法。用户常常忽略他们的密码,密码政策很难得到实施。黑客有多种工具可以击破技术所保护的密码。一旦黑客拥有了用户的密码,他就拥有很多用户的特权。“密码猜想”是指手工敲入普通密码或通过编好的程序取得密码。一些用户选择简单的密码——如生日、纪念日或配偶名字,不遵循字母、数字混合的规则。对黑客来说要猜一串6个字生日数据不用花多长时间。最好的防卫方法便是严格控制进入特权。

4.级别5、级别6

● H箭头:表示远程用户获得了特定文件的写权限。

● G箭头:表示远程用户获得了根权限。

级别5和级别6产生于那些绝不应该发生的事被允许发生了的情况下。任何级别5和级别6的漏洞都是致命的。在这一阶段,远程用户可以读、写并执行文件(通常他们综合各种技术来达到这一阶段)。级别6表示攻击者拥有这台机器的超级用户或管理员许可权。换句话说,攻击者具有对机器的全部控制权,可以在任何时刻完全关闭甚至毁灭此网络。

级别5和级别6的主要攻击是TCP/IP连续偷窃、被动通道听取和信息包拦截。这些都是为进入网络收集重要信息的方法,不像拒绝服务攻击,这些方法有更多类似偷窃的性质,比较隐蔽、不易被发现。

TCP/IP连续偷窃指抓住连续数字,这些数字用来让黑客的信息包看起来合法化,当一个系统要求与其他系统对话,系统会交换TCP同时产生的数据,如果这些数据不是具有随意性的,黑客会收集这些数据的算法,被偷的突发事件会被用来把黑客伪装成一个或两个原始系统,允许他连接防火墙信息包的过滤器,这在连接IP时更有效。

一次成功的TCP/IP攻击能让黑客阻拦两个团体之间的交易,提供中间人袭击的良好机会,然后黑客会在不被受害者注意的情况下控制一方或双方的交易。

通过被动窃听,黑客会操纵和登记信息,也会从目标系统上所有可通过的通道找到可通过的致命要害。黑客会寻找联机和密码的结合点,认出申请合法的通道。

信息包拦截是指在目标系统中约束一个活跃的听者程序,以拦截和更改所有的或特别的信息的地址。信息可被改送到非法系统阅读,然后不加改变地送回给黑客。

1.3.6 反击措施

(1)级别1攻击的处理方法主要是:过滤进入地址并与攻击者的ISP联系。对防范拒绝服务攻击的方法感兴趣的读者请查看徐一丁先生的文章“分布式拒绝服务攻击(DDoS)原理及防范”,http://www-900.ibm.com/developerWorks/cn/security/se-ddos/index.shtml,此处不再赘述。

(2)级别2攻击可以在内部处理。根据Gartner调查表明,目前,70%的攻击仍然来自组织内部。基本做法就是冻结或清除攻击者的账号。级别2攻击者一般常伴随使用内部嗅探器,防范方法可以参考“防范网络嗅探”,http://www-900.ibm.com/developerWorks/cn/security/se-profromsniff/index.shtml

(3)对级别3、级别4和级别5、级别6攻击的反应,如果经历过高于级别2的攻击,问题就严重了。

● 首先备份重要的企业关键数据。

● 隔离该网络网段,使攻击行为仅出现在一个小范围内。

● 允许行为继续进行。如有可能,不要急于把攻击者赶出系统,为下一步做准备。

● 记录所有行为,收集证据。

收集的证据包括系统登录文件、应用登录文件、AAA(Authentication, Authorization, Accounting,即认证、授权、计费)登录文件、RADIUS(Remote Authentication Dial-In User Service)登录、网络单元登录(Network Element Logs)、防火墙登录、HIDS(Host-base IDS,基于主机的入侵检测系统)事件、NIDS(网络入侵检测系统)事件、磁盘驱动器、隐含文件等。

收集证据时要注意,在移动或拆卸任何设备之前都要拍照;在调查中要遵循两人法则,即在信息收集中要至少有两个人,以防止篡改信息;应记录所采取的所有步骤,以及对配置设置的任何改变,要把这些记录保存在安全的地方。

(4)进行各种尝试(使用网络的不同部分)以识别出攻击源。

(5)为了使用法律武器打击犯罪行为,必须保留证据。而形成证据需要时间,为了做到这一点,必须忍受攻击的冲击(虽然可以制定一些安全措施来确保攻击不损害网络)。对此情形,我们不但要采取一些法律手段,而且还要至少请一家权威的安全公司协助阻止这种犯罪。这类操作的最重要特点就是取得犯罪的证据,并查找犯罪者的地址,提供所拥有的日志。对于所搜集到的证据,应进行有效地保存。在开始时制作两份,一个用于评估证据,另一个用于法律验证。