您的位置: 网站首页 > 千军万马 > Linux操作系统 > 第10章 网络安全 > 【10.1 网络安全简介】

10.1 网络安全简介

 

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。本章简要介绍网络安全的相关知识以及Fedora 6涉及网络安全的应用服务——网络代理服务。

本章主要内容

&        网络安全简介

&        网络安全策略

&        防火墙技术

&        代理服务器

10.1  网络安全简介

随着计算机技术的飞速发展,信息网络已经成为社会发展的重要保证。信息网络涉及到国家的政府、军事、文教等诸多领域。其中存贮、传输和处理的信息有许多是重要的政府宏观调控决策、商业经济信息、银行资金转账、股票证券、能源资源数据、科研数据等重要信息。有很多是敏感信息,甚至是国家机密。所以难免会吸引来自世界各地的各种人为攻击(例如信息泄漏、信息窃取、数据篡改、数据添加/删除、计算机病毒等)。同时,网络实体还要经受诸如水灾、火灾、地震、电磁辐射等方面的考验。

10.1.1  攻击与攻击前的信号特征

攻击仅仅发生在入侵行为完全完成且入侵者已在目标网络内。但是更积极的观点是(尤其是对网络安全管理员来说),可能使一个网络受到破坏的所有行为都应称为攻击。即从一个入侵者开始在目标机上工作的那个时刻起,攻击就开始了。

通常,在正式攻击之前,攻击者先进行试探性攻击,目的是获取系统有用的信息,此时包括ping扫描、端口扫描、账户扫描、DNS转换以及恶性的IP Sniffer(通过技术手段法获取IP packet,获得系统的重要信息,来实现对系统的攻击,后面还会详细讲到),例如,特洛伊木马程序等,这时的被攻击状态中的网络经常会表现出一些信号和特征。例如:

·    日志中有人企图登录老的Sendmail系统就是比较明显的攻击的信息,即有人在端口25上发出了两三个命令,这些命令无疑是企图欺骗服务器将/etc/passwd文件的拷贝以邮件的形式发送给入侵者,另外show mount命令有可能是有人在收集计算机的信息。

·    大量的扫描应立即使root意识到安全攻击的出现。

·    某主机的一个服务端口上出现拥塞现象,此时应该检查绑定在该端口上的服务类型。淹没式和denial of service式的攻击通常是欺骗攻击的先兆(或是一部分)。

良好周密的日志记录以及细致的分析经常是预测攻击、定位攻击以及遭受攻击后追查攻击者的有力武器。察觉到网络处于被攻击状态后,网络安全管理员应该立刻按照操作规程进行记录,向主管领导汇报并采取相应的安全措施等处理。

10.1.2  常见的攻击类型

对计算机网络进行攻击的手段可以分为几个主要种类,它们的危害程度和检测防御办法也各不相同。经常使用的工具包括:NSSStrobeNetscanSATANSecurity Aadministrator’s Tool for Auditing Network)、JakalIdentTCPscanFTPScan等以及各种Sniffer(嗅探器)。广义上说,特洛伊木马程序也是收集信息攻击的重要手段。收集信息攻击有时是其他攻击手段的前奏。对于简单的端口扫描,敏锐的安全管理员往往可以从异常的日志记录中发现攻击者的企图。但是对于隐秘的Sniffertrojan(特洛伊木马)程序来说,检测就是件更高级和困难的任务了。

1.嗅探器(Sniffer)简介

Sniffer(嗅探器)是一种常用的收集有用数据的方法,这些数据可以是用户的账号和密码,可以是一些商用机密数据等等。Snifffer可以作为能够捕获网络报文的设备,ISSSniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。如图10-1所示为简单的Sniffer工具。

10-1  Sniffer工具

1Sniffer的工作原理。

通常在同一个网段的所有网络接口,都有访问物理媒体上传输的数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要有一个广播地址(代表所有的接口地址)。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:

·    帧的目标区域具有和本地网络接口相匹配的硬件地址。

·    帧的目标区域具有“广播地址”。

在接受到上面两种情况的数据包时,nc通过CPU产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。

Sniffer就是一种能将本地nc状态设成Promiscuous模式(网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据)状态的软件。当nc处于这种“混杂”方式时,该nc具备“广播地址”,它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包(绝大多数的nc具备置成promiscuous方式的能力)。

可见,Sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:Sniffer是极其安静的,它是一种消极的安全攻击。

通常Sniffer所要关心的内容可以分成以下几类:

·    口令:这是绝大多数非法使用Sniffer的理由,Sniffer可以记录到明文传送的useridpasswd。就算用户在网络传送过程中使用了加密的数据,Sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出用户的算法。

·    金融账号:许多用户很放心在网上使用自己的信用卡或现金账号,然而Sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、账号和pin

·    偷窥机密或敏感的信息数据:通过拦截数据包,入侵者可以很方便地记录别人之间敏感的信息传送,或者干脆拦截整个的E-mail会话过程。

·    窥探低级的协议信息:通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口IP地址、IP路由信息和TCP连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用Sniffer收集这些信息只有一个原因:他正在进行一次欺诈(通常的IP地址欺诈就要求用户准确插入TCP连接的字节顺序号,这将在以后整理的文章中指出)。如果某人很关心这个问题,那么Sniffer对他来说只是前奏,今后的问题要大得多。

2Sniffer的工作环境。

Sniffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。

嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:

·    标准以太网。

·    TCP/IP

·    IPX

·    DECNet

3)嗅探器的构成。

嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但也得不到什么支持。

嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。为了理解杂收模式是怎么回事,下面先解释局域网是怎么工作的。

数据在网络上是以很小的称为帧(Ftame)的单位传输的。帧由好几部分组成,不同的部分执行不同的功能。例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等。

帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。

每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。

在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。

如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。

4)嗅探器的危害。

嗅探器可能造成的危害:

·    嗅探器能够捕获口令。

·    能够捕获专用的或者机密的信息。

·    可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限。

事实上,如果用户在网络上存在非授权的嗅探器就意味着用户的系统已经暴露在别人面前了。

一般用户只嗅探每个报文的前200300个字节。用户名和口令都包含在这一部分中,这是用户关心的真正部分。简单地放置一个嗅探器并将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加用户能够攻击的范围。

5)如何防御Sniffer攻击。

防御嗅探器的攻击分为三个步骤。

发现Sniffer

Sniffer最大的危险性就是它很难被发现,在单机情况下发现一个Sniffer还是比较容易的,可以通过查看计算机上当前正在运行的所有程序来实现,当然这不一定可靠。

UNIX系统下可以使用下面的命令:ps-aux。这个命令列出当前的所有进程、启动这些进程的用户、它们占用CPU的时间以及占用多少内存等。

另一个方法就是在系统中搜索,查找可怀疑的文件。但入侵者用的可能是他们自己写的程序,所以这给发现Sniffer造成相当大的困难。还有许多工具能用来查看用户的系统会不会处于混杂模式,从而发现是否有一个Sniffer正在运行。但在网络情况下要检测出哪一台主机正在运行Sniffer是非常困难的,因为Sniffer是一种被动攻击软件,它并不对任何主机发出数据包,而只是静静地运行着,等待着要捕获的数据包经过。

抵御Sniffer

虽然发现Sniffer是非常困难的,但是仍然有办法抵御Sniffer的嗅探攻击。既然Sniffer要捕获用户的机密信息,那就让它捕获,但事先要对这些信息进行加密,黑客即使捕捉到了这些机密信息,也无法解密,这样,Sniffer就失去了作用。

黑客主要用Sniffer来捕获TelnetFTPPOP3等数据包,因为这些协议以明文在网上传输,用户可以使用一种叫做SSH的安全协议来替代Telnet等容易被Sniffer攻击的协议。

SSH又叫Secure Shell,在前文中已经介绍过,它是一个在应用程序中提供安全通信的协议,建立在客户/服务器模型上。SSH服务器分配的端口是22,连接是通过使用一种来自RSA的算法建立的。在授权完成后,接下来的通信数据用IDEA技术来加密。这种加密方法通常是比较强的,适合于任何非秘密和非经典的通信。

SSH后来发展成为FSSH,提供了高层次的、军方级别的对通信过程的加密。它为通过TCP/IP的网络通信提供了通用的最强的加密。如果某个站点使用FSSH,用户名和口令就不再重要了。目前,还没有人突破过这种加密方法。即使是Sniffer,收集到的信息将不再有价值。有兴趣的读者可以参看与SSH相关的书籍。

另一种抵御Sniffer攻击的方法是使用安全的拓扑结构。因为Sniffer只对以太网、令牌环网等网络起作用,所以尽量使用交换设备的网络可以从最大程度上防止被Sniffer窃听到不属于自己的数据包。还有一个原则用于防止Sniffer的被动攻击,一个网络段必须有足够的理由才能信任另一网络段。网络段应该从考虑具体的数据之间的信任关系上来设计,而不是从硬件需要上设计。一个网络段仅由能互相信任的计算机组成。通常它们在同一个房间里,或在同一个办公室里,应该固定在建筑的某一部分。注意每台机器是通过硬连接线接到集线器(Hub)的,集线器再接到交换机上。由于网络分段了,数据包只能在这个网段上被捕获,其余的网段将不可能被监听。

所有的问题都归结到信任上面。计算机为了和其他计算机进行通信,它就必须信任那台计算机。系统管理员的工作就是决定一个方法,使得计算机之间的信任关系很小。这样,就建立了一种框架,告诉用户什么时候放置了一个Sniffer,它放在哪里,是谁放的等。

如果局域网要和Internet相连,仅仅使用防火墙是不够的。入侵者已经能从一个防火墙后面扫描,并探测正在运行的服务。应该关心的是一旦入侵者进入系统,他能得到些什么。用户必须考虑一条这样的路径,即信任关系有多长。举个例子,假设用户的Web服务器对计算机A是信任的,那么有多少计算机是A信任的呢?又有多少计算机是受这些计算机信任的呢?也就是说确定最小信任关系的那台计算机。在信任关系中,这台计算机之前的任何一台计算机都可能对用户的计算机进行攻击并成功。用户的任务就是保证一旦出现Sniffer,它只对最小范围有效。

Sniffer往往是在攻击者侵入系统后使用的,用来收集有用的信息。因此,防止系统被突破很关键。系统安全管理员要定期地对所管理的网络进行安全测试,防止安全隐患。同时要控制拥有相当权限的用户的数量,因为许多攻击往往来自网络内部。

防止Sniffer的工具Antisniff

Antisniff是由著名前黑客组织(现在是安全公司)L0pht开发的工具,用于检测本地网络是否有机器处于混杂模式(即监听模式)。

一台处于混杂模式的机器意味着它很可能已被入侵并被安装了Sniffer。对于网络管理员来说,了解哪台机器正处于混杂模式以作进一步的调查研究是非常重要的。

Antisniff 1.X版运行在以太网的Windows NT系统中,并提供了简单易用的用户图形界面。该工具以多种方式测试远程系统是否正在捕捉和分析那些并不是发送给它的数据包。这些测试方法与其操作系统本身无关。

Antisniff运行在本地以太网的一个网段上。如果在非交换式的C类网络中运行,Antisniff能监听整个网络;如果网络交换机按照工作组来隔离,则每个工作组中都需要运行一个Antisniff。原因是某些特殊的测试使用了无效的以太网地址,另外某些测试需要进行混杂模式下的统计(如响应时间、包丢失率等)。

Antisniff的用法非常简便,在工具的图形界面中选择需要进行检查的机器,并且指定检查频率。对于除网络响应时间检查外的测试,每一台机器都会返回一个确定的正值或负值。返回的正值表示该机器正处于混杂模式,这就有可能已经被安装了Sniffer

对于网络响应时间测试的返回值,建议根据第一次返回的数值计算标准值,然后再对在flood和非flood两次测试时返回的结果有较大变化的机器进行检查。一旦这些机器退出混杂模式返回到正常操作模式下,Antisniff的下一次测试将会记录到混杂模式和非混杂模式的差值(正值)。

应该周期性地运行Antisniff,具体周期值根据不同的站点、不同的网络负荷、测试的机器数量和网站策略等而有所不同。

2.特洛伊木马(Trojan

就现在的网络攻击方式来说,木马攻击绝对是一种主流的手段。下面来介绍一下木马的防御。

1)木马的工作原理。

一般的木马程序都包括客户端和服务端两个程序,其中客户端是攻击者用于远程控制植入木马的机器,服务器端程序即是木马程序,攻击者要通过木马攻击用户的系统,并将程序植入到用户的计算机里面。

目前木马入侵的主要途径还是先通过一定的方法把木马执行文件弄到被攻击者的计算机系统里,利用的途径有邮件附件、下载软件中等手段,然后通过一定的提示故意误导被攻击者打开执行文件,比如故意谎称这个木马执行文件是用户朋友送给用户的贺卡,可能用户打开这个文件后,确实有贺卡的画面出现,但这时可能木马已经悄悄在用户的后台运行了。一般的木马执行文件非常小,大部分都是几K到几十K,如果把木马捆绑到其他正常文件上,用户很难发现。所以,有一些网站提供的软件下载往往是捆绑了木马文件的,用户执行这些下载的文件,也同时运行了木马。

木马也可以通过ScriptActiveXASP.CGI交互脚本的方式植入。

当服务端程序在被感染的机器上成功运行以后,攻击者就可以使用客户端与服务端建立连接,并进一步控制被感染的机器。在客户端和服务端通信协议的选择上,绝大多数木马使用的是TCP/IP协议,但是也有一些木马由于特殊的原因,使用UDP协议进行通信。当服务端在被感染机器上运行以后,它一方面尽量把自己隐藏在计算机的某个角落里面,以防被用户发现;同时监听某个特定的端口,等待客户端与其取得连接;另外为了下次重启计算机时仍然能正常工作。木马程序一般会通过修改注册表或者其他的方法让自己成为自启动程序。

2)特洛伊木马具有的特性。

特洛伊木马具有的特性主要有:

·    包含在正常程序中,当用户执行正常程序时,启动自身,在用户难以察觉的情况下,完成一些危害用户的操作,具有隐蔽性。

·    具有自动运行性。

·    包含具有未公开并且可能产生危险后果的功能的程序。

·    具备自动恢复功能。现在很多的木马程序中的功能模块已不再由单一的文件组成,而是具有多重备份,可以相互恢复。当用户删除了其中的一个后,它就会启动备份重新出现,令用户防不胜防。

·    能自动打开特别的端口。

·    功能的特殊性。通常的木马功能都是十分特殊的,除了普通的文件操作以外,还有些木马具有搜索cache中的口令、设置口令、扫描目标计算机的IP地址、进行键盘记录、远程注册表的操作以及锁定鼠标等功能。

3)木马的种类。

木马主要有破坏型、密码发送型、远程访问型等9种。

·    破坏型:唯一的功能就是破坏并且删除文件。

·    密码发送型:可以找到隐藏密码并把它们发送到指定的信箱。

·    远程访问型:最广泛的是特洛伊木马,只需有人运行了服务端程序,如果客户知道了服务端的IP地址,就可以实现远程控制。这个程序可以实现观察“受害者”正在干什么,当然这个程序完全可以用在正道上,比如监视学生机的操作等等。

·    键盘记录木马:这种特洛伊木马是非常简单的。它们只做一件事情,就是记录受害者的键盘敲击并且在LOG文件里查找密码。

·    DoS攻击木马:随着DoS攻击越来越广泛的应用,被用作DoS攻击的木马也越来越流行起来。当入侵了一台机器,给它种上DoS攻击木马,那么以后这台计算机就成为DoS攻击的最得力助手。被控制的计算机数量越多,发动DoS攻击取得成功的机率就越大。所以,这种木马的危害不是体现在被感染计算机上,而是体现在攻击者可以利用它来攻击别的计算机,给网络造成很大的伤害并带来损失。

·    代理木马:黑客在入侵的同时掩盖自己的足迹,谨防别人发现自己的身份是非常重要的。因此,给被控制的计算机种上代理木马,让其变成攻击者发动攻击的跳板就是代理木马最重要的任务。通过代理木马,攻击者可以在匿名的情况下使用TelnetICQIRC等程序,从而隐蔽自己的踪迹。

·    FTP木马:这种木马可能是最简单和古老的木马了,它的唯一功能就是打开21端口,等待用户连接。现在新FTP木马还加上了密码功能,这样,只有攻击者本人才知道正确的密码,从而进入对方计算机。

·    程序杀手木马:该木马的功能就是关闭对方机器上运行的防木马程序,让其他的木马更好地发挥作用。

·    反弹端口型木马:反弹端口型木马的服务端(被控制端)使用主动端口,客户端(控制端)使用被动端口。木马定时监测控制端的存在,发现控制端上线立即弹出端口动连结控制端打开的主动端口;为了隐蔽起见,控制端的被动端口一般开在80,即使用户使用扫描软件检查自己的端口,发现类似TCP UserIP:1026 ControllerIP:80-
ESTABLISHED的情况,稍微疏忽一点,用户就会以为是自己在浏览网页。

4)被感染后的紧急措施。

如果用户的计算机不幸中了木马,这里给用户提供3条建议:

·    所有的账号和密码都要马上更改,例如拨号连接、ICQmIRCFTP、个人站点、免费邮箱等等,凡是需要密码的地方,都要把密码尽快改过来。

·    删掉所有硬盘上原来没有的内容。

·    更新杀毒软件检查一次硬盘上是否有病毒存在。