很多网管都碰到过这样一些难堪的事,因为服务器的安全漏洞问题,导致其中数据的丢失、权限被非法取得、或者被那些刚刚懂得一点点网络安全知识的菜鸟们指出服务器有这样那样的缺点,被搞得很没面子。其实我也遇到过这样的问题。后来,随着工作中的研究和探讨,逐渐发现这些安全隐患的存在原因以及解决办法。在这里拿出来跟大家探讨一二。
网络服务器主要是指那些存放网站数据的WEB服务器、DATA服务器、DNS服务器和MAIL服务器而言。WEB服务器的问题已经说过不少了,在这里就主要谈谈DATA服务器、DNS服务器和MAIL服务器的问题。
A、DATA服务器
先来看看DATA服务器。它主要是存放数据库的服务器(废话)。以SQL数据库为例,从安全角度考虑,SQL服务器与BACKOFFICE组件中的所有程序一样,都是以Windows NT Server为基础,利用了Windows NT Server 自身拥有的安全性能。而且,当你将SQL服务器与Internet 相连时,为保证你数据的安全性和完整性,有些事情你需要特别考虑。
1. 支持SQL服务器的Internet Database Connector(简称IDC)的安全性在通常情况下,数据库的开发者在使用IDC来处理SQL服务器数据时,就应该考虑对你的数据库实施必要的保护措施。有哪些是必须要做到的呢!根据我的一些经验,以下几点是需要考虑的:
1) 使用NTFS分区。
2) 给予用户执行日常任务所必需的最低等级的访问许可权。
3) 强制执行口令和登录策略。
4) TCP/IP过滤。
5) 防火墙及代理服务器。
通过以上几步措施,你的SQL服务器已经具备初级的安全防范的功能。但是这些是远远不够的,因为高级的网络入侵者往往能够绕过这些防御。那么我们就需要进一步提高服务器的安全性能。用户必须得到访问.IDC和.HTX文件的许可权才能处理数据,如果你赋予匿名访问权,那么IUSR_计算机为匿名访问设定的账户必须拥有访问这些文件的许可权。
这里必须提出的是,Windows NT用户名必须严格符合SQL服务器综合性安全命名原则。下划线、美元符号和英镑符号都不允许使用(这意味着不能使用缺省的账户IUSR_计算机名进行SQL服务器访问 )。另外IDC文件对于SQL数据库有效用户口令的保护等措施也是很必要的。
2. IIS本身的安全性问题这个话题相信很多朋友看了都会感到很熟悉。在这里,我只想讨论一下IIS的SQL Web Assistant的问题。通过使用 SQL Web Assistant 也可以多少地保证你的 Microsoft Exchange 服务器、Internet信息服务器和SQL的安全。一般来讲,只要您正确使用配置好SQL Web Assistant,都能够比较理想地达到SQL数据库的安全保障。
B、DNS服务器
DNS服务器是Internet上其它服务的基础,它处理DNS客户机的请求:将名字与IP地址进行互换,并提供特定主机的其它已公布信息(如MX记录等)。一般而言,网管们碰到的大多会有以下几种情况。
1.名字欺骗。
当主机B访问主机A(同时也作为DNS服务器)如执行rlogin时,A接收到这个连接并获得发起本次连接主机B的IP地址。为验证本次连接的合法性,主机A就向本地DNS服务器逆向查询对应于这个IP地址的主机名字。当返回查询结果——主机名B为本机所信任的主机时,就允许来自B的远程命令rlogin。
下面我们再来看看主机D是如何利用验证漏洞来欺骗主机A的。当主机D也执行rlogin时,主机A同样要验证本次连接的合法性。如果A不能根据D的IP在本地DNS服务器中查询到对应的主机名时,就会向其它DNS服务器发出请求,最后终会找到DNS服务器C。
如果入侵者修改DNS服务器C中对应于自己IP地址的主机名为主机B时,主机A就会获得对应于D的IP地址的主机名是B的逆向查询结果,因此主机A认可本次连接。于是欺骗A成功。
2.信息隐藏。
当某个企业由于保密等原因的需要,给某些特定主机以特定的内部主机名,而这些主机密码又被入侵者获取时,存放保密数据的服务器主机就会完全暴露。
解决以上两个问题的办法主要有两种:
1)直接利用DNS软件本身具备的安全特性来实现;
2)以防火墙/NAT为基础,并运用私有地址和注册地址的概念。简而言之就是将内部DNS服务器和外部DNS服务器进行物理分开,内部DNS服务器解析私有的IP,而外部DNS则解析公开的IP。内部主机使用私有地址;对Internet服务的主机用NAT完成注册地址到其私有地址的静态映射;访问Internet的主机用NAT完成其私有地址到注册地址的动态映射。
C、MAIL服务器
MAIL服务器一直因其安全性而成为广大网友抱怨的对象。的确,从理论上讲,MAIL服务是一种不安全的服务,因为它必须接受来自INTERNET的几乎所有数据。Internet上,服务器间的邮件交换是通过SMTP协议来完成的。主机的SMTP服务器接收邮件(该邮件可能来自外部主机上的SMTP服务器,也可能来自本机上的用户代理),然后检查邮件地址,以便决定在本机发送还是转发到其它一些主机。Unix系统上的SMTP程序通常是Sendmail。有关Sendmail的安全问题重要的原因在于它是一个异常复杂的程序,而另一个原因是它需root用户特权运行。
解决的方法大致有三种:
1. 使用Unix系统自带的安全特性;
2. 使用代理;
3. 直接修改源码。
以上是对网络服务器安全问题及其解决办法的一些初步探讨。其实,关键的问题还是在于网络管理员对网络安全意识的建立和实施。因为多数网络安全事件的发生,都是因为网络管理员安全意识的缺乏和防范措施实施的不到位。