根据知名互联网服务研究公司 Netcraft 对 2018 年 2 月活跃网站的统计表明,Apache 的市场占有率为 42.72%,为最高市场占有率的 Web 服务器软件。对于 Apache 的安全,我们将重点聚焦在使用 HTTPS 加密和使用 ModSecurity 加固以应对应用代码中可能出现的注入漏洞和跨站脚本漏洞。
使用 HTTPS 加密网站
2015 年 12 月 25 日,一份《六公司关于抵制流量劫持等违法行为的联合声明》的出炉让运营商劫持问题浮出了水面。今日头条、美团大众点评网、360、腾讯、微博、小米科技等六家互联网公司共同发表了一份《六公司关于抵制流量劫持等违法行为的联合声明》,呼吁有关运营商严格打击流量劫持问题,并保留进一步采取联合行动的可能。声明指出,困扰互联网行业多年的流量劫持问题对互联网公司、普通用户的正当利益均造成了严重的损害,劫持流量者提供的信息服务,由于完全脱离相关法律监管,放任这种非法劫持的泛滥,将带来无法挽回的恶果。六家公司希望“社会各界充分重视流量劫持这一问题的严重性,采取共同措施抑制劫持,共同打造一个健康、诚信、有序的市场环境。”
这里所说的劫持问题,是指运营商对正常的网站请求结果进行了篡改,以达到注入商业广告获取利益或者节省运营商之间网间计算费用的目的。这其实是中间人攻击(Man-in-the-Middle Attack,MITM)的一种形式。
应对这种中间人攻击的最有效手段就是使用 HTTPS 加密网站通讯。使用 HTTPS 加密网站通讯还可以有效的应对网络上的嗅探(Sniffing)。
HTTPS 所使用的 SSL 证书的种类主要有以下三类:
企业型(Organization Validation,OV)SSL 证书。浏览器上有绿锁、安全和 https 的标记。对申请公司单位做严格的身份审核验证,保护内外部网络上敏感数据传输,是中小型企业应用、电商等服务的最佳选择。由 CA 机构人工审核材料。
增强型(Extended Validation,EV)SSL 证书。浏览器上有绿锁、安全和 https 的标记,并显示完整的单位名称。对申请者做严格的身份审核验证,信任等级高。推荐有严格安全要求的大型企业使用。CA 机构人工审核材料。
域名型(Domain Validation,DV)SSL 证书,只验证网站域名所有权的简易型证书,能起到加密传输的作用,但无法向用户证明网站的真实身份,适合个人网站、企业测试。
其中,企业型 SSL 证书支持绑定带 1 个通配符()的域名。例如:.example.com、.test.example.com 均为泛域名,包含同一级的全部子域名;举例 1:.example.com 支持 test.example.com,不支持 test.test.example.com;举例 2:*.test.example.com 的证书,不支持 test.example.com。
全球权威 CA 机构的 SSL 数字证书品牌有 GlobalSign、Symantec、GeoTrust、Comodo 以及 RapidSSL 等多家。如果希望申请免费域名型 SSL 证书,则可以向Comodo和Let’s Encrypt提出申请。
在 Apache 中配置 HTTPS 比较简单,直接在其配置文件(一般为 httpd.conf)中加入如下内容即可:
其中,SSLCertificateFile 为从 CA 机构获得的其签发的公钥证书;SSLCertificateKeyFile 为私钥。
配置完成后,重启 Apache 即可进行验证。
使用 ModSecurity 加固 Web
在本章的 8.2 部分介绍了主要的网站漏洞分类。其中,对于注入漏洞和跨站脚本漏洞,除了在编程过程中加以预防以外,还可以使用 Web 应用防火墙(Web Application Firewall,WAF)加以辅助防御。Web 应用防火墙和传统的网络防火墙不同,它不是作用在网络层和传输层,而是工作在应用层,也就是通过对应用层内容进行分析和判断而做出放行或者禁止的动作。
ModSecurity是一款优秀的开源 Web 应用防火墙框架,被广泛部署在大中小各种规模的网站中。
ModSecurity 可以做什么
ModSecurity 是一个工具包,它用于实时的 Web 应用监控、记录日志和访问控制。它不会强制告诉你做什么,而是由你决定用这些特性做什么。以下是一些最重要的使用场景:
实时应用安全监控和访问控制
ModSecurity 的核心能力是它给了你实时访问和检查 HTTP 通信流的能力。这对于实时安全监控来说已经足够了。你也可以可靠的用它来阻止 HTTP 请求。
记录完整 HTTP 通信流
就为安全目的记录日志来说,Web 服务器传统上做的很少。默认情况下,它们记录的日志极少,甚至在大量调谐后你依然不能够获得所需要的全部东西。ModSecurity 赋予你记录任何东西的能力,包括原始的事务数据,而这对于取证来说是至关重要的。
持续的被动式安全评估
大部分情况下,安全评估被当作是一项主动调度的活动–会组建一支独立的团队来执行模拟的攻击。持续的被动式安全评估是实时监控的变种,它聚焦在系统本身的行为上。它是一个早期告警系统,在被攻破之前,它可以检测到很多异常行为和安全脆弱点的迹象。
Web 应用加固
ModSecurity 常用于减少攻击面,也就是你可以选择性的缩减希望接收的 HTTP 特性(例如,请求方法、请求头部、内容类型等)。
用于其他用途
现实常常对我们提出更多的要求–可能是安全的需求,也可能是其他需求。而使用 ModSecurity 常常可以更灵便的满足这些需求。例如,有些人把 ModSecurity 用作 Web 服务路由器(Web Service Router),而这是利用了 ModSecurity 可以解析 XML 和应用 XPath 表达式并用于代理模式的能力。
ModSecurity 部署模式
ModSecurity 支持两种部署模式:嵌入模式和反向代理模式。这两种模式各有利弊,选用哪种模式取决于你的架构环境:
嵌入模式(Embedded)
因为 ModSecurity 是 Apache 的一个模块,你可以把它加载到任何兼容的 Apache 版本中。2.0.x 和 2.2.x 系列的 Apache 版本都是兼容的。对于那些架构已经确定好或者已经在使用中的情况来说,使用嵌入模式来部署 ModSecurity 是一个很好的选项。嵌入模式不但不会引入新的故障点(Points of Failure),而且也可以随着底层 Web 基础设施的伸缩而无缝伸缩。嵌入模式部署的最主要挑战是,ModSecurity 和 Web 服务器共享计算资源。
反向代理模式(Reverse Proxy)
反向代理其实是 HTTP 路由器,它被设计成部署在 Web 服务器和其客户端之间。当你安装了一台专用的 Apache 反向代理并且增加了 ModSecurity 模块,那么你就得到了一台网络 Web 应用防火墙–你可以用其来保护同网络的任何数量的 Web 服务器。很多安全实践者倾向于使用独立的安全控制层,这样一来你可以把它和被保护对象完全隔离开来。就性能来说,独立部署的 ModSecurity 有专属的计算资源,那么这意味着你可以做更多的事情(例如,配置更加复杂的规则)。这种部署模式最大的缺陷是,你引入了新的故障点。而解决这个新的故障点的方法是,使用两台或者更多台反向代理服务器的集群来提供高可用(High-Availability,HA)的架构设置。
ModSecurity 规则集
ModSecurity 本身只是 Web 应用防火墙引擎,它自身提供的防护是微乎其微的。为了使 ModSecurity 发挥最大的防护价值,必须为其配置高效的规则集。我们经常使用的 ModSecurity 规则集分为开源的 OWASP ModSecurity 核心规则集(Core Rule Set,CRS)(版本 3)和来自 Trustwave SpiderLabs 的商业规则集:OWASP ModSecurity 核心规则集(Core Rule Set,CRS)(版本 3)。
OWASP ModSecurity 核心规则集项目的目标是提供一组极易可插拔的通用攻击检测规则,它为任何 Web 应用提供基础级别的安全防护。最新的 3.0 版本提供的攻击防护类别如下:
HTTP 协议防护
实时黑名单查找
HTTP 拒绝服务(Denial of Service)防护
通用 Web 攻击防护,包括以下:SQL 注入(SQL Injection,SQLi)防护;跨站脚本(Cross Site Scripting,XSS)防护;本地文件包含(Local File Inclusion,LFI)防护;本地文件包含(Remote File Inclusion,RFI)防护;PHP 代码注入(PHP Code Injection)防护;Java 代码注入(Java Code Injection)防护;Httpoxy 漏洞防护;Shellshock 漏洞防护;Unix/Windows Shell 注入防护;会话固定(Session Fixation)防护;校本化/扫描器/机器人检测;
错误检测和隐藏
OWASP ModSecurity 核心规则集的官方网站是:https://coreruleset.org。
Trustwave SpiderLabs 的商业规则集
Trustwave SpiderLabs 的 ModSecurity 规则集是基于来自真实世界的调查、渗透测试和安全研究得来的情报而制作出来的。规则集由 SpiderLabs 研究团队每日发布更新,以确保客户能够及时收到关键的安全更新。该规则集提供的防护主要有:
虚拟补丁
根据 IP 信誉进行防护
基于 Web 的恶意软件检测
Webshell/后门检测
僵尸网络攻击检测
HTTP 拒绝服务攻击检测
文件附件的防病毒扫描
通过以下链接https://ssl.trustwave.com/web-application-firewall可以购买 Trustwave SpiderLabs 的商业规则集。
关注 Apache 漏洞情报
这个网站是官方维护的 Apache 安全报告平台,其中会列出相关版本中存在的各种不同危害级别的漏洞。笔者建议 Apache 使用人员重点关注该漏洞情报,并及时评估和升级 Apache 版本。
本文内容来自作者图书作品《Linux 系统安全:纵深防御、安全扫描与入侵检测》,点击购买。
评论