巧用分离术保服务器安全
2015-12-03■
■
单位的一台服务器上安装的是FreeBSD系统,在其上开启了Apache服务程序,用来支持网站的运行。但是不久前,该机遭到了黑客的攻击,导致网站被恶意篡改。可能是因为Root账户密码设置得比较简单的原因,黑客破译了密码,进而对服务器各项设置进行了破坏,导致服务器运行异常。经过一番费力的修复操作,才让服务器恢复到正常状态。
在一般人眼中,Linux/FreeBSD类型的服务器安全性都比较高,不容易遭到黑客的侵袭,但是实际情况却不尽然。
不管什么系统或者服务器软件,都可能存在这样或者那样的漏洞。如果服务器配置存在问题,或者对服务器软件没有进行及时的更新和升级,就很容易遭到黑客的攻击。
一般来说,当某个漏洞被发现后,相关安全维护人员会第一时间在网上将其公布出来,如果网管员存在麻痹思想或者疏于管理,没有抢先升级软件或者打上相应的补丁,这就等于为黑客入侵打开了大门,轻则导致数据丢失,重则导致服务器瘫痪。
除了及时修复系统漏洞之外,还需要使用分离技术,将系统和各服务软件分离开来,也就是说,将在系统上运行的服务软件和系统本身分离,让他们之间断开联系,这样,当黑客对服务程序(例如Apache)攻击得手后,却无法对系统进行进一步的渗透。
通过对本例入侵实例的分析,不难看出,因为安装的Apache程序存在漏洞,而管理员却没有及时对其进行修补更新,黑客通过该漏洞乘虚而入获得了Web控制接口,通过尝试本地溢出获得了Root权限,因为Unix/Linux系统的账户密码信息存放在Shadow文件中,而该文件只有Root级别的账户才可以读写,通过破译Shadow文件,黑客获得了Root账户密码,从而获得了该机的控制权。
由此看出,黑客的入侵步骤是环环相扣的,如果将其中的一个环节切断,黑客就无法进一步入侵了。
基于这种考虑,如果将Apache服务程序和系统分离,黑客即使利用Apache漏洞入侵了服务器,也不会对系统本身构成威胁。至多将Apache相关数据破坏掉而已,而对系统的危害就大大减小了。
在Linux*FreeBSD系统的树形文件结构中,可以看到其中存在一个名为“web_jail”的目录,进入该目录,发现其内部结构类似于系统的树形目录。但是,在该目录中并没有存放系统中的相关文件,而是存放了和Apache相关的数据,包括Apache启动程序、库文件等。但是,我们可以将其视作存放Apache的小型系统。
因为FreeBSD是免费的Unix系统,对安全性比较重视,在默认安装的程序中,就包含了名为Jail的程序,其作用就是将特定对象“监禁”起来,让其只能在规定的范围活动。基于这种想法,可以使用Jail将该小型系统进行“监禁”,让Apache程序只能在该监禁区域活动。这样,当黑客通过Apache漏洞入侵成功后,却无法越出监禁区域进行进一步的入侵操作,这样就有效的保护了Linux/Unix系统的安全。
接下来就介绍如何使用Jail来创建监禁区域的,以Root身份登录系统,执行以下指令:
执行以上指令,在“web_jail”目录中创建与正常系统相似的树形结构。之后执行下列命令,复制HTTPF相关文件到Jail环境中,其中的Apachectl是一个Shell脚本文件,通过less命令查看其属性,发现其运行必须依赖Sh和Limits,所以必须将其全部复制到Jail环境中。
执 行“ldd /usr/local/sbin/httpd”命令,来查看当启动HTTPD服务时,都使用到了哪些库文件,之后将其复制到Jail监控区域中。
复制完所需的文件后,执行“chmod 777/web_jail/var/run/web_jail/var/log/web_jail/tmp/web_jail/dev/null”命令,将一些目录的权限设置为允许所有用户对其进行读写可执行操作。接着执行以下命令提取Root,www账户和组,将其放置到Jail环境中。
执 行“pwd_mkdbd/web_jail/etc/web_jail/etc/mester.password”命令,创建账户数据库,之后执行“ls/web_jail/etc”命 令,可 以看到生成的 group、master、password等文件。这样,针对Apache程序的监禁区域就创建完成了。当然,在该区域中启动Apache和正常环境下启动Apache存在一些不同,例如执行“apachectl start”命令,可以正常启动Apache,执行“ps aux”命令,可以查看各进程信息。
如果在Jail环境中启动Apache,可 以 执 行“jail u root/web_jail www.xxx.com 192.168.92.90/usr/local/sbin/apachectl start”命令,可以在指定的IP上启动Apache,并运行指定的网站。运行“ps aux”命令,在进程列表中看到于Root关联的进程ID为671,运行“lsof p671”命令,可以查看Apache访问的文件信息。将其与上述信息对比可以发现,在进程信息中的“STAT”列中后者显示一个“J”标记,这说明HTTPD运行在Jail环境中。在文件访问信息中,发现后者访问的文件位于“web_jail”目录中。如果访问网站正常的话,说明Jail环境已经成功运作了。如果使用jail出错,就说明有些库文件没有完整复制,只需按照提示信息将其复制到Web_Jail目录中就可以了。