在人们的印象中,对于Windows服务器来说,其安全性往往比较低,存在各种可能被黑客利用的漏洞,因此,大家会想方设法提高其安全性。而对于Linux服务器来说,一般人都会觉得其安全性很高,出现漏洞较少,黑客很难对其进行攻击。
但是,实际情况却并非如此,因为Windows服务器在内网中应用的很多,而Linux服务器经常在Internet上提供各种服务,其在某种程度上来说更加容易受到黑客的攻击。如果Linux服务器存在漏洞或者配置不当的话,同样会遭到黑客的非法控制。这里就从不同的方面出发,分析了Linux系统下黑客的活动特点以及防御黑客之道。
从黑客攻击的手段上说,其实际上可以分为多个层次。例如网络层面,操作系统层面以及应用程序层面等。对于网络层面攻击,包括渗透进入局域网,发送大量非破坏性的网络包进行DoS攻击来拖垮目标服务器,针对交换网发起IP欺骗攻击,对局域网进行中间人攻击,来嗅探各种机密信息。利用DNS欺骗,冒充正常的服务器来蒙骗用户。对于局域网中采用明文通讯的数据,黑客可以毫不费力的进行拦截。即使对于采取简单方式加密的数据,黑客破解起来也不困难,从操作系统层面上说,其安全问题常常被大家疏忽。在大家的印象中,Windows系统存在众多的漏洞,实际上,Linux系统同样存在数量不少的BUG。为了提高系统安全性,需要及时为Linux系统打上各种补丁。
对于Linux来说,只要按照标准的操作进行配置,感染病毒的可能性很低。对于普通用户来说,其权限会受到系统严格控制,即使黑客获得了普通的权限,如果不进行提权的话,对系统也几乎造不成什么破坏。在Windows中,当木马侵入后查找起来很简单。但是对于Linux来说,如果木马隐藏到Kernel中或者库文件等不起眼的地方的话,那么查找起来就很困难。从应用程序层面上看,黑客会发起各种应用级别的攻击,例如大家熟知的SQL注入攻击,让黑客可以毫不费力的侵入网站。
不过现在在开发网站程序时,基本上都会对用户提交的数据进行过滤,来防范该种攻击。脚本攻击也是黑客常用的攻击伎俩,实际上,使用ASP、PHP、JSP等脚本语言开发的网站,不可避免的存在各种安全隐患。脚本是动态解释的,具有一定的安全风险,附带的参数比较复杂,黑客可以很容易的找到可以利用的漏洞。对于一个安全级别很高的网站来说,最好使用二进制方式搭建。例如可以将PHP脚本进行编译,形成可执行文件,让黑客无从修改。因为脚本是可以修改的,很容易被黑客利用。
例如对于一台服务器来说,管理员为其打上各种补丁,进行了严格的安全设置,从整体上确实没有漏洞。但是,在其上运行的网站的某个模块存在安全漏洞,导致黑客可以将自己设计的一段脚本上传到某个页面上,该脚本的作用是用来上传文件之用。这样,黑客就可以很容易的将木马上传到该服务器上,这样原本无懈可击的服务器被黑客彻底控制。因此说,如果在开发网站时,将程序脚本进行编译的话,黑客就无计可施了。因为网站由二进制文件组成,黑客自然无法对其修改。当然,任何软件都不可能坚不可摧,都存在这样或者那样的漏洞。对于互动式的网站来说,黑客可以从各种入口来寻找其BUG,进而有针对性的发起攻击。
了解黑客常用的攻击手段,就可以针锋相对的进行防御了。对于网络的保护,可以使用防火墙。对于位于不同地理位置的两个局域网之间的通讯,可以使用VPN通道连接在一个私有网络中。对于暴露在Internet上的主机,必须使用IDS入侵检测系统对其进行保护。除了使用硬件级的保护外,也可以使用Snort等软件,来检测常见的网络攻击行为。对于操作系统来说,运行尽可能少的服务,将无关的服务(尤其是和Internet相接触的)全部关闭,为系统打上各种补丁,及时修复各种BUG。当然,在打补丁之前,最好对其进行测试,因为有的补丁可能会对实际的生产环境造成影响,例如让应用程序无法正常运行等。
另外对于RedHat Linux来说,其使用的不是HotFix补丁,在安装时可能需要重启相关服务,这对实际的服务是有影响的。对于各种网络服务来说,尽量启用其安全特性,使其安全可靠的运作。例如对于HTTP,FTP,SMTP等服务来说,其使用的是明文通讯,安全性自然很差,使用SSL/TLS加密机制,可以有效提高其安全性。对于网络服务来说,都应该适应SELinux的包装。使用集中式认证,让用户和服务之间可以彼此信任,也可以提高系统的安全性。对于应用层的防护,需要保证开发的程序尽可能的少的存在漏洞,避免被黑客发现利用。利用应用层防火墙,可以有效监控各种敏感区域,发现并拦截异常的行为。
上面谈到了使用入侵检测系统,来保护系统安全安全。所谓的入侵检测,就是对正常运行的操作系统进行完整的记录,因为当黑客入侵时,往往从管理员不注意的地方下手,例如非法替换系统命令,让管理员在执行看似正常的命令时,其实运行的是黑客精心设计的程序。利用针对系统的原始的完整记录,就可以帮助管理员及时发现黑客的踪迹。例如发现操作系统的哪些文件发生了变化,是否被黑客恶意篡改等。
尤其对于二进制的可执行文件以及Shell脚本等对象,更要提防其被黑客非法替换。对于定时任务,Kernel模块等对象,也需要经常进行检测。当黑客试图对系统进行渗透时,往往会采用正向或者和反向的方式进行。对于前者来说,黑客会利用设置定时任务或者替换可执行文件的方式,当触发的时候,黑客预设的程序就会在系统中开启后门。对于后者来说,黑客会先在系统中植入木马,让其反向访问黑客控制的页面或者主机,来让黑客获得入侵接口等。黑客触发非法程序的方法有多种,例如设置定时任务,替换可执行文件,设置开机自动运行,嵌入到Kernel模块中触发等。
在企业版RedHat只内置了名为AIDE的软件,其全称为Advanced Intrusion Detection Environment,是一款很专业的入侵检测程序,其运行原理是当配置好系统后,将整个文件系统进行初始化并进行索引,将每个文件的哈希值存放到数据库中。在默认情况下,AIDE会监控所有的可执行文件和相关的配置文件,但是其不会监控所有文件。管理员怀疑存在安全隐患的话,可以利用AIDE对系统进行彻底检查,来了解其监控的系统关键文件(例如可执行文件,配置文件等)是否被修改过,而且AIDE记录的数据很难被伪造。以Root账户登录系统,执行“yum install aide”命令,来安装该软件。
执 行“vim /etc/aide.conf”命令,打开AIDE的配置文件。可以看到在默认情况下,其数据库存放在“/etc/lib/aide”目录下。原始数据库文件名称为“aide.db.gz”,新生成的数据库文件 名 称 为“aide.db.new.gz”。所谓原版数据库文件,是指AIDE初始化时,生成的文件信息记录文件。当进行安全检查时,必须再次进行扫描来创建新的记录数据,之后将两者进行比较,来发现可疑的变动信息。为了节省磁盘空间,AIDE会对数据库进行压缩处理。AIDE会对“/boot”,“/bin”,“/sbin”,“/lib”,“/opt”,“/usr”,“/root”等系统目录进行全面监控。当然,您可以将更多的目录添加进来,让AIDE对其全面监控。
在默认配置中,对于“/etc”目录只是进行权限监控,对其中的文件内容不进行检查。即在该目录下如果部署相应的配置文件,那么只有其权限发生变动,AIDE才对使用者进行报告。这主要是因为该目录下的文件变动比较频繁,所以对其全面监控作用有限。当然,对于该目录下的特定的配置 文 件(例 如“/etc/xxx.cfg NORMAL”)而 言,因 为其内容不会经常变动,可以将其添加进来。这样,如果黑客对其进行了修改,管理员就能及时发现。注意,对监控的对象,后面需要跟随“NORMAL”参数。注意其后面不要添加“PERM”参数,该参数表示只进行权限检测。
通过该配置文件,不拿看出系统的所有关键位置都处于AIDE的监控之中。当配置好系统后,执行“aide--init”命令,对全盘进行初始化,这需要花费一段时间。完毕后执行“ll /var/lib/aide”命令,显示新建立的“aide.db.new.gz”数 据库文件。进入该目录,执行“mv aide.db.new.gz aide.db.gz”,对其进行更名操作,将其作为原始的数据库文件。当系统运行一段时间后,管理员希望检查系统是否存在安全问题的话,可以执行“aide”命令,AIDE可以对系统进行扫描,创建新的数据库文件,之后将其和原始的数据库进行比对,发现其监控的系统关键点以及用户自定义监控点的变化情况。
如果发生变动(即使是很细微的变化),AIDE都会将其完整的显示出来,例如新增的文件,内容变动的文件,删除的文件等等。不仅如此,在报告信息中的“Detailed information about changes”列表中会针对每一个变化的文件,列出详细的变化信息,例如文件尺寸、创建时间、修改时间、哈希值(包括 MD5、RMD160、SHA256)等。尤其是同时显示多个算法的哈希值,让黑客根本无法对文件变动信息进行伪造。根据这些信息,就很容易发现系统是否黑客光临过。
当然,在实际使用AIDE时,是讲究方法技巧的。对于已经被黑客入侵的系统来说,不要直接在该环境中进行安全检查,防止被黑客精心设计的骗局欺骗(例如黑客可能非法替换可执行文件,甚至对AIDE进行替换等)。要进入一个干净的环境(例如救援模式,将本机硬盘挂载到正常的系统中等),即使进行救援模式等环境中,一定要切记不要运行其中的任何文件,不能给黑客以任何可乘之机。之后利用AIDE的原始数据库,就可以对其其进行安全检查。当检查出问题后,说明系统已经被黑客入侵,被注入木马等恶意程序的话,最好的解决方法就是重装系统,而不要尝试对其进行修复,当然,对于重要的数据而言,实现对其进行即使的备份,在系统完全恢复后,就可以对其进行恢复。