电脑技术学习

FreeBSD连载(74):安全问题

dn001

安全问题

  当要维护网络安全的时候,需要加以了解的关键问题就是网络漏洞可能存在于位于何处。只有了解攻击者会从何处入 手,才能采取相应的措施加强系统的安全。下面部分针对可能存在的安全漏洞进行了简单的概括,这些地方都是网络安全需要 注意的方面。

  • 物理安全性:网络窃听与地址欺骗

  物理安全性的安全性非常重要,但这个问题中的大部分内容与网络安全无关,例如如果服务器被盗窃了,其上面的硬 盘就能被窃贼使用物理读取的方式进行分析读取。这只是一个极端的例子,更一般的情况可能是非法使用者接触了系统的控制 台,重新启动计算机并获得控制权,或者通过物理连接的方式窃听网络信息。

  最近国内报告了几例 “黑客” 事件,攻击者通过将物理线路连接到目的线路上,并利用对这些专有的计算机系统 的了解来窃取信息。事实上这种攻击方式不能算一个真正的网络攻击,并不用说网络黑客了。

  在物理安全方面,与网络相关的问题主要在于传输数据的安全性。由于TCP/IP协议是一种包交换网络,各个数 据包在网络上都是透明传输的,将经过各个不同的网络,由那些网络上的路由器转发,才能到达目的计算机。由于数据包都是 直接经过这些网络,那么这些网络上的计算机都有可能将其捕获,从而窃听到正在传输的数据。这个物理上的传输安全问题对 网络安全非常重要,因为当前的TCP/IP协议本身并没有对安全传输进行考虑,很多应用程序,如telnet、ftp 等,甚至使用明文来传递非常敏感的口令数据。获取网络上流过全部数据的方法通常被称为网络分析(sniffing)。

  由于物理网络的传输限制,并不是在网络上的任意位置都能捕获数据包信息的。对于最常用的以太网,较老的共享式 以太网能在任意一个位置窃听所有流经网络的信息包,而新式的交换式以太网能够在交换机上隔离流向不同计算机的数据,因 此安全性更高。然而无论怎样的网络,路由器总是一个非常关键的位置,所有流入流出网络的数据都经过这个特殊的计算机, 如果攻击者在路由器上进行窃听就会造成非常严重的安全问题。

  交换式以太网并不能保证不能百分之百不被窃听,高明的窃听者能通过欺骗以太网交换机来完成窃听的任务,然而这 需要针对具体交换机的弱点进行攻击,事实上很难进行。

  防范窃听的方法是对传输的数据进行加密,最简单的情况下就不要使用明文来传输重要的认证信息。在FreeBSD 下可以使用Kerberos认证保证口令传输不被窃听。更进一步,可以使用支持加密传输的应用程序传输重要的数据, 如ssh。在数据要通过的不安全网络上设定虚拟专用网也能解决这个问题。当前,从IP层支持数据安全的协议为IPSec ,FreeBSD下也有一个开发组KAME是支持IPSec的(KAME的网址位于http://www.kame.net/ )。以后会有越来越多的应用程序支持IPSec,不再有传输安全的问题。

  涉及物理安全性的另一个问题是网络地址欺骗,很多网络服务将安全性依赖于区分不同计算机的方式,可信任的计算 机能够访问网络资源,不可信任的计算机被拒绝访问。然而非法入侵者可以通过欺骗的方式,使得目的计算机认为它是可信任 的计算机,从而达到入侵的目的。

  网络地址欺骗可以分为两种,一种为假冒其他计算机网卡的硬件Mac地址,这样就能使得这台计算机能完全冒充另 外那台计算机,突破依赖于MAC地址的访问限制。很多网卡可以通过驱动程序更改MAC地址,操作系统也能通过软件的方 法更改其驱动程序中保存的MAC地址。因此MAC地址是不可靠的,不能依赖于它来保护具备敏感性的数据信息。显然,假 冒MAC地址方法只能存在于同一个局域网之中,不能跨越网络。

  然而对TCP/IP来讲,通信还是主要依赖于IP地址,因此更普遍的地址欺骗还是要通过假冒IP地址的方法进 行的。对于任何操作系统来讲,更改IP地址非常简便。在同一个子网当中,更改IP地址之后,它就能假冒那台被信任计算 机。然而在同一个子网之外,假冒IP地址就需要更复杂的技术,首先它需要了解假冒的IP数据包是否能发送到目的计算机 上,这需要依赖于它和目的计算机的路由器的设置,很多的路由器不能分辨IP数据包是否是从正确的子网发送出来的(或者 没有屏蔽这些非法的IP数据包),这样假冒的IP数据包就能到达目的计算机。由于假冒的IP数据包中的IP地址与发送 的计算机不相符,因此回应的数据包不会返回假冒IP地址的计算机,这样就需要假冒的计算机只能依靠猜测来攻击目的计算 机。

  在地址欺骗中,如果要被假冒的计算机正在运行,势必要发生冲突。入侵者为了避免出现这些问题,可能会首先攻击 要被假冒的计算机,使其当机或超负荷运行,而不能响应服务请求。然后才能无妨碍的进行攻击过程。

  • 操作系统安全性:软件BUG和后门

  任何软件系统都可能存在种种系统漏洞,提供相应服务的同时也就可能暴露某个问题。由于FreeBSD继承了非 常成熟的BSD代码,以及采用了开放源代码的策略,FreeBSD是非常安全的系统,然而这也不能绝对保证系统中没有 问题存在。而那些不公开代码的商业软件,由于测试远远少于开放代码的软件,就可能存在更多的问题。因而,入侵者就能利 用这些漏洞来侵入计算机,或者利用这些漏洞破坏计算机。

  但还没有登录入这台计算机的攻击者,他们会扫描这台计算机的端口,以寻找这台计算机提供的网络服务,然后从这 些网络服务出发,寻找提供这些网络服务的系统守护进程的漏洞,进而入侵系统。

  事实上Internet网络中充斥着这些端口扫描程序,在国内,大部分端口扫描程序是用来寻找代理服务器的, 由于国内网络的现状(CERNET中出国访问按流量收费),这些行为虽然也是为非法使用代理服务器做准备,然而也是值 得原谅的。

  对于已经进入这台计算机的入侵者,由于一般情况下入侵者进入系统只能获得普通用户的权限,并不能控制系统。入 侵者需要获取更大的权利,来控制整个系统。Unix下root用户具备最大的权限,能完成所有可以执行的操作,因此就 是入侵者攻击的目标。能获得root用户的权限的基本方法是通过执行root用户拥有的、并且具备SetUID属性的 执行程序,一般这些程序只完成特定操作,或者也要预先验证用户的身份,因此入侵者并不能直接得逞。然而如果这些SetUID 的程序存在漏洞,那么入侵者可以通过缓冲区溢出等手段,使这些程序执行入侵者设定的非正常操作,来达到获得root 身份的目的。此外,得到root身份还能通过系统驱动程序的漏洞、以root用户权限执行的守护进程漏洞等方法达 到目的。

  SetGID的程序不能使入侵者得到root权限,但可以使入侵者得到其他非法权限,使得入侵者能完成更多的 操作,为获得root权限起到辅助作用。

  除了这些利用软件漏洞的方法之外,入侵者还可以通过欺骗用户,使其执行入侵者的程序,来达到获得非法权限的目 的。这些入侵者的程序是一些特洛伊木马程序,它模仿正常程序的行为,但暗中窃取了口令等重要的数据。入侵者常常设定特 洛伊木马来获得更大的权限。

  为了预防这些安全问题,需要尽量减少计算机提供的服务数量,不必要的服务就不要提供。同时尽量减少系统中存在 的SetUID、SetGID程序的数量,不要执行未经验证的程序,尤其不能以root身份执行。

  一些软件能比系统提供的软件提供更详细的访问记录和更细致的访问限制,以增加网络安全性。例如tcp wrapper ,sudo等。另一些软件能自动分析计算机提供的服务中存在的漏洞,因而能帮助系统管理员及时弥补被发现的漏 洞。如Satan、Cops等。

  • 服务阻塞

  服务阻塞技术并不一定要利用系统的漏洞,它可能只利用了系统提供的正常功能。很多情况下,提供服务并没有对使 用服务的使用者占用的资源进行限制,允许用户使用尽可能多的资源。这因为服务器信任使用它的用户,然而恶意的攻击者能 通过自己不停的申请并占用系统资源,使得服务器不能正常向外提供正常服务,或者当机。

  在操作系统中也存在这种攻击方式,例如一个用户不断占用磁盘空间,直至系统空间被填满,其他需要空间的用户就 不能正常工作。或者一个用户不断生成子进程,直至系统进程表被填满,其他用户无法启动进程为止。

  优秀的系统和服务程序,应该考虑到这些问题,因此也可以认为这种问题属于软件设计考虑不周,然而这毕竟与软件 漏洞还是有所不同。如果一个服务程序过多的考虑了各种资源的限制,其效率和可用性都会大大减低的。

  在服务阻塞方面的网络攻击方法被外部入侵者常用的是IP-SYN攻击,它能使计算机的TCP/IP堆栈处于拥 塞状态,而无法正常相应其他请求。

标签: