服务器的维护至关重要,稍有闪失即会使整个网络陷入瘫痪。目前,恶意的网络攻击行为包括两类:一是恶意的攻击行为,如拒绝服务攻击、网络病毒等,这些行为消耗大量的服务器资源,影响服务器的运行速度和正常工作,甚至使服务器所在的网络瘫痪;另外一类是恶意的入侵行为,这种行为会导致服务器敏感信息泄露,入侵者更是可以为所欲为,肆意破坏服务器。要保障网络服务器的安全就要尽量使网络服务器避免受这两种行为的影响。本文以基于Windows2003操作系统的服务器为例,介绍一些网站服务器安全维护的技巧。
1.转换角色,模拟可能的攻击
多数时候,我们若只是站在网站维护员的位置上思考问题,可能很难发觉网站服务器的漏洞。相反,维护员若能换个角度,把自身当作可能的攻击者,从他们的角色出发,揣测他们可能会运用哪些手段对哪些网站服务器的漏洞进行攻击,或许就可以发现网站服务器可能存在的安全漏洞,从而先行一步,修补漏洞,避免被木马或者病毒攻击,防患于未然。
从外网访问自身的网站服务器,执行完整的检测,然后模拟攻击者攻击自身的站点,看会有什么结果。这对于网站的安全性来说,无疑是一种很好的检测方法。自己充当攻击者,运用适当的扫描工具对网站服务器执行扫描,有些东西日常可能不会引起重视,但是运用黑客常用的工具执行扫描,就会发觉一些可能会被他们调用的服务或者漏洞。如在网站服务器安装的时候,操作系统会默认安装并启动一些不需要的服务,或者在服务器配置的时候,需要启动一些服务,但是事后没有及时关上,从而给不法攻击者留下攻击的机会。常见的如SNMP服务(基本网络维护协议),这个服务在系统安装完毕后默认是开启的。但是,这个服务可以为攻击者提供服务器系统的详细信息,如网站服务器采用了什么操作系统,开启了什么服务与对应的端口等重要信息,攻击者只要清楚这些基本的信息就能开展攻击。安全维护人员在日常工作中可能不会发觉这个问题,若借助黑客的扫描工具,就能发现问题所在。因此,在必要的时候可以换个角度,从攻击者的角度出发,猜测他们会采用什么攻击手段,防止出现当局者迷的情况。
2.合理的权限维护
大多时候,一台服务器不仅运行了网站的应用,而且还会运行诸如FTP服务器和流媒体服务器之类的网络服务。在同一台服务器上使用多种网络服务很可能造成服务之间的相互感染。也就是说,攻击者只要攻击一种服务,就可以运用相关的技能攻陷其他使用。因为攻击者只需要攻破其中一种服务,就可以运用这个服务平台从内部攻击其他服务,通常来说,从内部执行攻击要比外部执行攻击方便得多。
或许有人会说,不同的服务采用不同服务器就可以了。当然可以,但这样浪费很大,因为从性能上讲,在服务器上同时部署Web服务与FTP服务及流媒体服务的话,是完全可行的。为此,从成本考虑,我们使用一个服务器同时运行三种服务:一个是传统的网站服务;二是FTP服务;三是流媒体服务,因为该服务是mms模式的,互联网上也可以直接访问流媒体服务器,所以也就部署同一台服务器上。由于选用的服务器配置比较高,所以,运行这三个服务没有太大问题,性能也不会受到影响。但是这给网站安全维护者出了一个难题:两种、甚至两种以上的服务同时部署在一台服务器上,怎么才能保障安全、防止彼此相互感染呢?
通常采用的文件系统是FAT或者FAT32。NTFS是微软WindowsNT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。在NTFS文件系统里可以为任何一个磁盘分区单独设置访问权限,把敏感信息和服务信息分别放在不同的磁盘分区。这样,即使黑客通过某些方法获得服务文件所在磁盘分区的访问权限,还需要想方设法突破系统的安全设置才能进一步访问保存在其他磁盘上的敏感信息。我们采用Windows2003服务器,为了实现这个安全需求,把服务器中所有的硬盘都转换为NTFS分区。通常来说,NTFS分区比FAT分区安全性高很多。运用NTFS分区自带的功能,合理为它们分配相关的权限。如为这三个服务配置不同的维护员账户,不同的账户只能对特定的分区与目录执行访问。如此一来,即使某个维护员账户失窃,攻击者也只能访问某个服务的存储空间,而不能访问其他服务的。例如把网站服务装在分区D,而把FTP服务放在分区E。若FTP的账户信息泄露而被攻击,但是因为FTP账户没有对分区D具有读写的权利,所以,不会对网站服务器上的内容执行任何的读写操作。这样可以保障即使黑客攻陷FTP服务器后,也不会对网站服务器产生不良的影响。
此外,依员工上班时间来限定使用者登录网络的权限也是一个不错的方法。例如,上白天班的员工不该有权限在三更半夜登录网络。
3.脚本安全维护
实际工作中,许多网站服务器因为被攻击而瘫痪都是由于不良的脚本造成的。攻击者特别喜欢针对CGI程序或者PHP脚本实施攻击。
通常来说,使用网站需要传递一些必要的参数,才能够正常访问。这个参数可以分为两类,一个是值得信任的参数,另外一类是不值得信任的参数。某单位是自身维护网站服务器,而不是托管,把服务器放置在单位防火墙内部,以提高网站服务器的安全性。所以一般来说,来自防火墙内部的参数都是可靠的,值得信任的,而来自外部的参数基本上是不值得信任的。但是,并不是说不值得信任的参数或者来自防火墙外部的参数网站服务器都不采用,而是说,在网站服务器设计的时候,需要格外留心,采用这些不值得信任的参数的时候需要执行检验,看其是否正当,而不能向来自网站内部的参数那样照收不误。这会给网站服务器的安全带来隐患,例如,攻击者运用TELNET连接到80端口,就可以向CGL脚本传递不安全的参数。所以,在CGI程序编写或者PHP脚本编辑的时候,我们要留心,不能让其随便接受陌生人的参数。在接受参数之前,要先检验提供参数的人或者参数本身的正当性。在程序或者脚本编写的时候,可以预先参加一些判断条件。当服务器认为提供的参数不准确的时候,及时通知维护员。这也可以帮助我们尽早发觉可能存在的攻击者,并及时采取相应的防御措施。
4.做好系统备份
常言道,“有备无患”,虽然大家都不希望系统突然遭到破坏,但是做好准备是必须的。作好服务器系统备份,万一遭破坏的时候也可以及时恢复。
5.安装软件防火墙、杀毒软件
虽然我们已经有了一套硬件的防御系统,但是多一些保障会更好。关于防火墙、杀毒软件的论述已经很多,这里不再赘述。
6.开启事件日志
开启日志服务虽然对阻止黑客的入侵并没有直接的作用,但是它可以记录黑客的行踪,维护员可以分析入侵者在系统上做过什么手脚,在系统上留了哪些后门,给系统造成了哪些破坏及隐患,服务器到底还存在哪些安全漏洞等,以便有针对性地实施维护。