Drupal与Linux服务器风险检测及安全加固(一)

在虚拟机里面搭建了一套Linux服务器风险检测与安全加固测试环境,然后把基于Drupal开发的站点放到Linux服务器上面运行,找好了一些渗透测试工具,模拟进行Linux服务器的风险检测。最后,根据扫描结果列出了几点系统安全加固办法,也记录了一些安全与监控工具的简单使用,方便以后更加熟悉这些工具。

1. 概述
搭建如下系统环境,使用常用测试方法与扫描工具进行系统风险检测,针对暴露的风险威胁制定对应的安全加固措施提议。

1.1 系统环境
 部署Web服务在Linux 64位操作系统上,一个Web服务器,关闭linux上的防火墙。搭建局域网环境,一台Ubuntu14作为linux平台机器,跑各种linux平台下的渗透测试工具;一台Windows7作为windows平台机器,跑各种windows平台下的渗透测试工具。分别对Linux系统进行风险检测测试。

1.2 检测对象 
检测对象:Linux操作系统、数据库、Web服务器、Drupal站点。

2.风险检测
使用一些安全测试的办法与工具对服务器进行风险检测,找出服务器的脆弱点以及存在的安全缺陷。

2.1 操作系统风险检测
针对服务器操作系统自身的安全测试,包括一些系统配置、主机漏洞扫描等等

2.1.1 登陆用户
 查看服务器操作系统当前用户是否为root用户,尽量避免使用root用户登录,启动其他服务程序,除非是一些需要root权限的安全工具,前提需要保证工具来源可信。终端需要 who 既可以查看当前登录用户。

2.1.2 主机安全审计
登录到Linux系统,此时切换到root用户,下载lynis安全审计工具,切换到lynis运行脚本目录,执行 ./lynis --check-all –Q 脚本语句,开始对本地主机扫描审计,等待扫描结束,查看扫描结果。

2.2.2 恶意代码检测
 登录到Linux系统,切换到root用户,使用命令行方式安装Clamav 杀毒软件,安装完毕需要更新病毒库,执行扫描任务,等待扫描结束获取扫描结果,根据扫描结果删除恶意代码病毒;
 登录到Linux系统,切换到root用户,下载Maldetect Linux恶意软件检测工具,解压缩后完成安装。运行扫描命令检测病毒,等待扫描结束获取扫描报告,根据扫描报告删除恶意病毒软件;

2.2.3 后门检测工具
 登录到Linux系统,切换到root用户,下载Chkrootkit后门检测工具包,解压缩后进入 Chkrootkit目录,使用gcc安装Chkrootkit,安装成功即开始Chkrootkit扫描工作,等待扫描结束,根据扫描结果恢复系统;
 登录到Linux系统,切换到root用户,下载RKHunter 后门检测工具包,解压缩后进入 RKHunter 目录,执行命令安装RKHunter ,安装成功即开始启用后门检测工作,等待检测结束,根据检测报告更新操作系统,打上漏洞对应补丁;

2.2 Drupal站点风险检测
使用下面工具扫描Web站点:nikto、wa3f、sqlmap、safe3 … …

2.2.1 Web服务器信息
扫描Web站点的信息:操作系统类型、操作系统版本、端口、服务器类型、服务器版本、Web站点错误详细信息、Web目录索引、Web站点结构、Web后台管理页面 … 

2.2.2 数据库注入
测试sql注入,出现几个sql注入点

2.2.3 跨站攻击
测试xss攻击,出现几个xss注入点

2.2.4 手动逻辑测试
手动测试某些网页的输入表单,存在没有进行逻辑判断的表单,例如:输入邮箱的表单,对于非邮箱地址的输入结果,任然会继续处理,而不是提示输入错误,返回继续输入。

3. 安全加固
针对风险测试后得到的安全测试报告,修复系统存在的脆弱点与缺陷,并且进一步加强服务器的安全能力,可以借助一些安全工具与监控工具的帮助来实现。

3.1 系统安全加固
对服务器本身存在的脆弱性与缺陷性进行的安全加固措施。

3.1.1 系统权限
使用非root用户登录操作系统,使用非root用户运行其他服务程序,如:web程序等;
web权限,只有web用户组用户才能操作web应用,web用户组添加当前系统用户;
数据库权限,只有数据库用户组用户才能操作数据库,数据库用户组添加当前系统用户;

3.1.2 风险处理
根据安全审计、恶意代码检查、后门检测等工具扫描出来的结果,及时更新操作系统,针对暴露的漏洞打上补丁。对于发现的恶意代码病毒与后门程序等及时删除,恢复系统的完整性、可信行与可用性。

3.2  Web站点加固
 部署在服务器上的Web站点因为程序员编写代码时没有注意大多的安全问题,造成Web服务站点上面有一些容易被利用安全漏洞,修复这些漏洞以避免遭受入侵被破坏。

3.2.1 隐藏服务器信息
 配置当前服务器隐藏服务器信息,例如配置服务器,隐藏服务器类型、服务器的版本、隐藏服务器管理页面或者限制IP访问服务器管理页面、Web站点错误返回信息提供友好界面、隐藏Web索引页面、隐藏Web站点后台管理或者限制IP访问Web站点后台。

3.2.2 数据库注入过滤
 使用Web代码过滤sql注入或者使用代理服务器过滤sql注入,这里更加应该使用Web代码过滤sql注入,因为在页面即将提交给服务器之前过滤sql注入,比sql注入到达代理服务器时过滤,更加高效、节省资源,用户体验更好,处理逻辑更加简单。当然,这样处理会增加前端的负担。   

3.2.3 跨站攻击过滤
跨站攻击的过滤可以参照sql注入过滤方法,同样在Web代码过滤掉,提示表单输入非法,并且返回重新输入表单。

3.3 安全工具
 网络安全工具可以有效发现、防御网络攻击。同时,使用扫描或者审计性的安全工具更加可以清楚自身存在的安全缺陷与风险威胁。提前做好防御措施,避免遭到攻击破坏。

3.3.1 入侵检测
安装snort轻量级入侵检测系统,部署在网络的旁路,既可以监听流过的网络流量是否存在入侵攻击,也不会影响服务器的网络性能。

3.3.2 入侵防御
 把snort系统配置成入侵防御的模式,系统直连在服务器的网络路线上,充当服务器的安全网关,抵御网络攻击。当然,这样会对服务器的网络性能产生影响。

3.3.3 防火墙
 在服务器上或者在网关上配置防护墙,控制网络流量,过滤掉不必要的网络数据报文,之允许服务器上服务相关的流量通过。这里,把ping流量禁止掉,可以隐藏一些操作系统类型信息。当然,把防火墙部署在单独的网关上面,可以减轻服务器的负担,服务器可以使用全部资源支持当前运营的服务。

3.3.4 漏洞扫描
 使用openvas、nessus等漏洞扫描系统,定期更新漏洞库与扫描插件,也定期扫描服务器所在的网络,及时发现网络上的脆弱点以及服务器等主机存在的漏洞,修复暴露出来的问题,避免漏洞被入侵者利用,入侵网络系统。

\3.3.5 源代码审计
使用RATS、Infer、PyChecker等源代码审计工具,检测项目代码存在的漏洞缺陷,例如:空指针访问、资源和内存泄漏等等。生成检测报告,验证检测报告之后,把结果发送到软件开发工程师手里,软件开发工程师及时修复代码bug。

3.4 系统监控
这里应该包括网络监控,而网络监控已经在网络安全设备中体现了,这里就不必再次重复。

3.4.1 日志监控
 使用log_monitor 、Log Watcher等开源日志监控系统,监听Web服务等日志信息,对高频IP进行报警。如果,日志监控系统不存在自定义的功能需求,可以使用脚本来完成,获取我们关心的日志信息。

3.4.2 进程监控
使用monit、supervisord等开源进程监控系统,监听Web等服务进程是正常运行,也可以使用脚本周期性查看进程是否正在运行。

3.4.3 文件监控
 使用inotify、FileMonitor等开源文件监控系统,监听系统中重要的敏感文件,常见的用户、密码、权限、主机系统、网络配置、服务程序配置等文件:passwd、shadow、group、hosts等。同样,可以使用shell脚本来完成。

3.4.4运维监控
当项目的业务越来越庞大,人为去运维服务器已经是不可能了,需要把运维尽量自动化,部署open-falcon、Zabbix等运维监控系统,监控服务器网络、系统、服务等状态,出现问题及时报警,通知运维管理员,管理员接到通知尽快解决问题,保证服务器业务的正常运营。

3.4.5系统管理员操作
作为管理员需要掌握一些shell命令,来帮助自己查看系统是否运行在健康状态,及时发现系统的入侵操作痕迹。用户查看、日志查看、审计命令、进程查看、计划任务等。last、lastb、lastlog、who、cat、awk、sed、grep、crontab等