配置ModSecurity防火墙与OWASP规则
中文译文参考:http://netsecurity.51cto.com/art/201407/446264.htm
英文原文参考:http://resources.infosecinstitute.com/configuring-modsecurity-firewall-owasp-rules/
根据最新实践调整里面的细节内容,图片内容未调整:
0x00 背景
ModSecurity是一个免费、开源的Apache模块,可以充当Web应用防火墙(WAF)。ModSecurity是一个入侵探测与阻止的引擎.它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.ModSecurity的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击.
OWASP是一个安全社区,开发和维护着一套免费的应用程序保护规则,这就是所谓OWASP的ModSecurity的核心规则集(即CRS)。我们可以通过ModSecurity手工创建安全过滤器、定义攻击并实现主动的安全输入验证.
所以,在这篇文章中,我们将配置ModSecurity防火墙与OWASP的核心规则集。我们也将学习如何可以根据我们的需要自定义OWASP的核心规则集或创建自己的定制规则。
0x01 安装过程
本文是在Centos环境中安装和配置的,步骤如下:
第1步
以root用户身份(或者sudo方式)登录到您的服务器,登录之后我们在安装ModSecurity之前需要安装一些依赖包,可以通过以下的命令安装:
yum install gcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel –y
第2步
安装依赖包后,我们将安装ModSecurity。我们可以通过运行以下命令进行安装:
yum install mod_security –y
现在ModSecurity已经成功地安装在系统中。
第3步
ModSecurity安装后,我们需要重新启动Apache服务器。我们可以通过下面的命令重启Apache服务器:
Services httpd restart
或
在/etc/init.d/httpd restart 或者 apachectl方式
现在,我们已经成功地在服务器中安装了ModSecurity,下一个步骤是下载和配置OWASP的ModSecurity规则。所以,我们必须将当前工作目录切换到/etc/httpd的。这可以通过cd命令来完成。
cd /etc/httpd.
第4步
正如我们在文章的前面所提到的,我们的ModSecurity安装是不完美的,但我们需要增加我们的规则集。这可以通过Github的网站来完成。Github上是一个开源的平台,让许多开发人员分享他们的项目和应用程序。通过git命令使用clone选项,可以下载Github服务器上的任何内容。因此,我们将导入预定义的OWASP的ModSecurity规则到我们的服务器。我们可以通过下面的命令做到这一点。
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
("https://github.com/SpiderLabs/owasp-modsecurity-crs.git")
执行该命令后,OWASP的ModSecurity规则将在owasp-modsecurity-crs目录下保存。可以通过ls命令如下进行查看。
现在,我们必须重新命名OWASP-MODSecurity-src文件夹到ModScurity-CRS。这可以通过mv命令来完成。
mv owasp-modsecurity-crs modsecurity-crs
我们可以通过运行ls命令验证。
第5步
我们必须将工作目录更改为modsecurity-crs。这可以通过cd命令来完成。
cd modsecurity-crs
crs-setup.conf.example是ModSecurity工作的主配置文件。默认情况下,它带有.example扩展名。要初始化ModSecurity,我们要重命名此文件。我们可以用mv命令重命名。
mv crs-setup.conf.example crs-setup.conf
之后,我们要在Apache的配置文件中添加模块。要装入新的ModSecurity模块,编辑Apache的配置文件/etc/httpd/conf/httpd.conf。我们需要在终端中输入以下命令。
vi /etc/httpd/conf/httpd.conf
复制/粘贴以下内容到文件的末尾并保存文件。
<IfModule security2_module>
Include modsecurity-crs/crs-setup.conf
Include modsecurity-crs/rules/*.conf
</IfModule>
我们将重新启动Apache服务器。
第7步
现在的ModSecurity已经成功配置了OWASP的规则,但能够按照我们的选择让它工作,我们将不得不作出一个新的配置文件与我们自己的规则,这就是所谓的白名单文件。通过这个文件,我们就可以控制整个防火墙,创建自己的ModSecurity规则。我们将在modsecurity.d目录中创建的。打开/通过下面的命令来创建这个文件。
vi /etc/httpd/modsecuirty.d/whitelist.conf
复制下面的规则并保存到该文件中。
#Whitelist file to control ModSec
<IfModule mod_security2.c>
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecDataDir /tmp
</IfModule>
现在,我们保存文件并重新启动Apache服务器。下面对各行的意义进行说明。
0x02 配置说明
1.SecRuleEngine
是接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。要设置不同的规则有以下几种。
SecRuleEngine On: 将在服务器上激活ModSecurity防火墙。它会检测并阻止该服务器上的任何恶意攻击。
SecRuleEngine Detection Only: 如果这个规则是在whitelist.conf文件中设置的,它只会检测到所有的攻击,并根据攻击产生错误,但它不会在服务器上阻止任何东西。
SecRuleEngine Off:: 这将在服务器上上停用ModSecurity的防火墙。
2.SecRequestBodyAccess: 它会告诉ModSecurity是否会检查请求。它起着非常重要的作用,当一个Web应用程序配置方式中,所有的数据在POST请求中。它只有两个参数,ON或OFF。我们可以根据需求设置。
3.SecResponseBodyAccess: 在whiltelist.conf文件,如果此参数设置为ON,然后ModeSecurity可以分析服务器响应,并做适当处理。它也有只有两个参数,ON和Off。我们可以根据求要进行设置。
4.SetDataDirectory: 在本文中,我们定义的ModSecurity的工作目录。该目录将作为ModSecurity的临时目录使用。
ModSecurity现在已经成功配置了OWASP的规则。现在,我们将测试对一些最常见的Web应用攻击。将测试ModSecurity是否挡住了攻击。
为了做到这一点,我们将尝试在一个存在存储性xss漏洞的网站上进行测试,我们已经配置ModSecurity。在一个网站中最常见的XSS漏洞的位置将是搜索框,用户可以在网站上搜索任何东西。如果恶意用户试图在搜索框中注入Java脚本或HTML脚本,它会在浏览器中执行。我们可以在搜索框中输入 。在正常情况下(当我们的服务器上的没有任何类型的应用程序防火墙),它会在网站显示一个弹窗上本。
如果在服务器上已经平配置ModSecurity,服务器会根据配置阻止XSS攻击,以及生成错误日志。
我们可以检查ModSecurity的错误日志文件。
在/var/log/httpd/error_log
我们可以通过下面的命令来检查文件的最后更新的行。
tail –f /var/log/httpd/error_log
ModSecurity核心规则集(CRS)提供以下类别的保户来防止攻击。
◆HTTP Protection (HTTP防御) - HTTP协议和本地定义使用的detectsviolations策略。
◆Real-time Blacklist Lookups(实时黑名单查询) -利用第三方IP信誉。
◆HTTP Denial of Service Protections(HTTP的拒绝服务保护) -防御HTTP的洪水攻击和HTTP Dos 攻击。
◆Common Web Attacks Protection(常见的Web攻击防护) -检测常见的Web应用程序的安全攻击。
◆Automation Detection(自动化检测) -检测机器人,爬虫,扫描仪和其他表面恶意活动。
◆Integration with AV Scanning for File Uploads(文件上传防病毒扫描) -检测通过Web应用程序上传的恶意文件。
◆Tracking Sensitive Data(跟踪敏感数据) -信用卡通道的使用,并阻止泄漏。
◆Trojan Protection(木马防护) -检测访问木马。
◆Identification of Application Defects (应用程序缺陷的鉴定)-应用程序的错误配置警报。
◆Error Detection and Hiding(错误检测和隐藏) -伪装服务器发送错误消息。
0x03 参考文章:
https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
http://spiderlabs.github.io/owasp-modsecurity-crs/
http://www.modsecurity.org/demo/crs-demo.html
http://www.atomicorp.com/wiki/index.php/Mod_security
https://github.com/SpiderLabs/owasp-modsecurity-crs
https://www.owasp.org/index.php?title=Projects/OWASP_ModSecurity_Core_Rule_Set_Project/Releases/ModSecurity_2.0.6/Assessment&setlang=es
原文地址:http://resources.infosecinstitute.com/configuring-modsecurity-firewall-owasp-rules/
配置ModSecurity防火墙与OWASP规则的更多相关文章
- [转] Linux下防火墙iptables用法规则详及其防火墙配置
from: http://www.cnblogs.com/yi-meng/p/3213925.html 备注: 排版还不错,建议看以上的链接. iptables规则 规则--顾名思义就是规矩和原则,和 ...
- Linux下防火墙iptables用法规则详及其防火墙配置
转:http://www.linuxidc.com/Linux/2012-08/67952.htm iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国法,家有家规 ...
- 通过配置Windows 防火墙允许使用TCP/IP协议远程访问数据库
原文:通过配置Windows 防火墙允许使用TCP/IP协议远程访问数据库 本文适用于:2005.2008.2008R2所有版本 为了可以通过TCP/IP协议远程访问SQLServer数据库,需要做以 ...
- Windows Server 2008 R2防火墙入站规则
一般服务器的端口都设置了外网无法访问,iis中创建的网站外网也是访问不了的,需要创建指定端口的入站规则后方可访问. 方法/步骤 服务器管理器-->配置-->高级安全windows防 ...
- 在ubuntu16.04中安装apache2+modsecurity以及自定义WAF规则详解
一.Modsecurity规则语法示例 SecRule是ModSecurity主要的指令,用于创建安全规则.其基本语法如下: SecRule VARIABLES OPERATOR [ACTIONS] ...
- CentOS下配置iptables防火墙 linux NAT(iptables)配置
CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/syscon ...
- netsh配置Windows防火墙(advfirewall)
有人可能会说,Windows防火墙有非常友好的用户界面,为什么要使用命令行界面来配置一个Windows防火墙?有 个人认为有一下原因(撇开有的人喜欢命令行不喜欢界面的 , o(∩_∩)o 哈哈) Fi ...
- 《linux就该这么学》课堂笔记12 网卡配置、防火墙配置
1.网卡配置(四种方法,选其一即可,配置后须重启网络服务使其生效) 1)修改配置文件./etc/sysconfig/network-scripts/ifcfg-网卡名称 2)nmtui [RHEL7] ...
- 工程师技术(一):启用SELinux保护、自定义用户环境、配置IPv6地址、配置聚合连接、配置firewalld防火墙
一.启用SELinux保护 目标: 本例要求为虚拟机 server0.desktop0 配置SELinux: 确保 SELinux 处于强制启用模式 在每次重新开机后,此设置必须仍然有效 方案: SE ...
随机推荐
- pyshp操作shapefile
ESRI的shp文件自1998发布技术文档以来,shp作为GIS文件的基本交换文件广为使用. 工作中使用shp文件的机会比较多,pyshp是Python操作shapefile的包. 先来说shp文件的 ...
- Unity3D中的第三人称镜头的脚本控制
原地址:http://blog.csdn.net/mobanchengshuang/article/details/27591271 好久没有敲Blog了,谢谢大家的留言.关注.私信等支持,但是我好像 ...
- 为 UWP 应用提供的 .NET 网络 API
[编者按]本文作者是 Windows networking 团队项目经理 Sidharth Nabar.在微软 Build 2015 大会上,.NET Core 5 作为开发 UWP(Universa ...
- iis下设置默认页
IIS设置设默认页 计算机-->右键管理-->服务器和应用程序-->Internet信息服务 -->网站-->你发布的网站名-->功能视图-->IIS大类里- ...
- RUST叫系统编程语言,而GO是网络编程语言
用GO你必须要搞清楚一点,GO不是面向CPU密集计算的,而是面向IO密集计算的!!!RUST才是面向CPU密集计算的语言,所以RUST叫系统编程语言,而GO是网络编程语言.GO跟JAVA的Spring ...
- Http Get Post put delete
HTTP POST GET 本质区别详解一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Htt ...
- 【HDOJ】1254 推箱子
来一发搜索.数据量比较小,这么玩儿都能ac.搞个优先队列.先扫描从起点可以到达箱子的上下左右中哪些位置,并针对这些位置进行bfs.所谓推,就是箱子和人同向移动一个单位.bfs的时候注意一些限制条件就好 ...
- Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞
漏洞名称: Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞 CNNVD编号: CNNVD-201311-422 发布时间: 2013-11-29 更新时间: 2013- ...
- 调试UnhandledExceptionFilter
kernel32!UnhandledExceptionFilter通过判断当前进程是否附加了调试器,如果附加,就把异常交给调试器,如果没有,就把异常交给进程的UnhandledExceptionFil ...
- weblogic配置数据源出错
Connection test failed. Listener refused the connection with the following error: ORA-12505, TNS:lis ...