Apache下ModSecurity的安装启用与配置
作者:mdxy-dxy 发布时间:2023-07-15 18:13:15
ModSecurity 是一个强大的包过滤工具,将检查每一个进入web服务器的包。它将根据内部规则,比较每一个包,并且确定是否需要禁止这个包或继续发送给web服务器。
1、下载
modsecurity-apache: http://sourceforge.net/projects/mod-security/files/modsecurity-apache/
modsecurity-crs: http://sourceforge.net/projects/mod-security/files/modsecurity-crs/0-CURRENT/
2、安装
1)启用 mod_unique_id 模块
2)验证服务器安装了最新版本libxml2函数库
3)停止Apache httpd
4)解压
gzip -d modsecurity-apache_2.6.3.tag.gz
tar xvzf modsecurity-apache_2.6.3.tar
gzip -d modsecurity-core-rules_2.6.tar.gz
tar xvzf modsecurity-core-rules_2.6.tar.gz
5)配置
./configure
6)编译并测试ModSecurity
make
make test
7)安装
make install
修改 http.conf,启用ModSecurity,在httpd.conf文件添加:
LoadFile /usr/lib/libxml2.so
LoadModule security2_module modules/mod_security2.so
8)重启apache
到这里已经安装了ModSecurity,你可以查看配置指令文档:http://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual
ubuntu上安装Apache2+ModSecurity及自定义WAF规则
虽然VPS使用了云WAF功能,但还是有点小担心,为了双重保险,决定使用modsecurity来定制规则,以下介绍如何为apache服务器配置ModSecurity防护罩(modsecurity目前也支持Nginx,IIS) 。
本次选择使用包管理器来安装,因为每次使用源码包的安装方式,都会被诡异的库依赖错误弄得发型都抓乱。
安装环境:
OS:Ubuntu 14.04.1 LTS
Apache: Apache/2.4.7 (Ubuntu)
第一步:安装apache
我建议安装Apache最好用apt-get安装,这样就可以少很多的库支持!!!!如果不嫌麻烦的话可以用源码安装
输入apt-get install apache2
如果提示没有这个软件包就更新一下软件包 apt-get install update
这步安装好了以后apache就可以提供服务了,输入127.0.0.1就可以访问本地网站了
第二步:安装modsecurity
这个也和上边的一样,使用
apt-get install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev libapache2-modsecurity
安装好了以后就可以查看你的modsecurity的版本号是多少,使用
dpkg -s libapache2-modsecurity | grep Version
第三步 配置modsecurity
service apache2 reload
该命令生效后,会在/var/log/apache2/目录下生成modsecurity的日志文件modsec_audit.log
使用modsecurity核心规则集
将我们想起用的规则集放置在以下目录下
cd /usr/share/modsecurity-crs/activated_rules/
选择启用base规则集
for f in $(ls ../base_rules/); do ln -s ../base_rules/$f; done
修改apache模块配置,启用规则集
注意:modsecurity 2.7版本与2.6版本的配置文件有些区别
(1)2.7版本
vim /etc/apache2/mods-available/security2.conf
修改
<IfModule security2_module>
# Default Debian dir for modsecurity's persistent data
SecDataDir /var/cache/modsecurity
# Include all the *.conf files in /etc/modsecurity.
# Keeping your local configuration in that directory
# will allow for an easy upgrade of THIS file and
# make your life easier
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional /usr/share/modsecurity-crs/*.conf
IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
</IfModule>
(2)2.6版本
vim /etc/apache2/mods-available/mod-security.conf
修改
Include /etc/modsecurity/*.conf
Include /usr/share/modsecurity-crs/*.conf
Include /usr/share/modsecurity-crs/activated_rules/*.conf
第四步:启用modsecurity模块
a2enmod headersa2enmod security2 (版本2.6: a2enmod mod-security)service apache2 restart
第五步:测试真实的攻击payload
看是否能拦截
http://www.tanjiti.com/?case=archive&act=orders&aid[typeid`%3D1%20and%20ord(mid((select/**/concat(username,0x3a,password)%20from%20cmseasy_user),1,1))%3C49%23]=1
我们发现请求包被403拦截了,
可以查看modsecurity日志文件看具体的拦截情况
tail /var/log/apache2/modsec_audit.log
message: Access denied with code 403 (phase 2). Pattern match "(/\\*!?|\\*/|[';]--|--[\\s\\r\\n\\v\\f]|(?:--[^-]*?-)|([^\\-&])#.*?[\\s\\r\\n\\v\\f]|;?\\x00)" at ARGS_NAMES:aid[typeid`=1 and ord(mid((select/**/concat(username,0x3a,password) from cmseasy_user),1,1))
<49#].
[file "/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [line "49"] [id "981231"] [rev "2"] [msg "SQL Comment Sequence Detected."] [data "Matched Data: /* found within ARGS_NAMES:aid[typeid`=1 and ord(mid((select/**/concat(username,0x3a,password) from cmseasy_user),1,1))<49#]: aid[typeid`=1 and ord(mid((select/**/concat(username,0x3a,password) from cmseasy_user),1,1))<49#]"] [severity "CRITICAL"] [ver "OWASP_CRS/2.2.8"] [maturity "8"] [accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"] [tag "WASCTC/WASC-19"] [tag "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/CIE1"] [tag "PCI/6.5.2"]
可以看到是被base规则集的modsecurity_crs_41_sql_injection_attacks.conf文件的规则981231拦截,命中了SQL注释语句。
对于网站结构比较了解的站长们,完全可以自定义规则,特别是白名单规则来防护我们的网站。
第六步:自定义WAF规则
规则语法快速入门参考 ModSecurity SecRule cheatsheets
WAF规则实例1:上传文件名白名单,只允许上传图片文件
vim /usr/share/modsecurity-crs/activated_rules/MY.conf
添加规则
SecRule FILES "!\\.(?i:jpe?g|gif|png|bmp)$" "deny,tag:'WEB_ATTACK/FILEUPLOAD',msg:'upload no-picture file',id:0000001,phase:2"
测试,上传php文件
(http的使用参照HTTP发包工具 -HTTPie)
http www.tanjiti.com filename@a.php
我们可以看到请求包被拦截,查看modsecurity日志
more /var/log/apache2/modsec_audit.log
可以看到命中了规则0000001
Message: Access denied with code 403 (phase 2). Match of "rx \\.(?i:jpe?g|gif|png|bmp)$" against "FILES:filename" required. [file "/usr/share/modsecurity-crs/activated_rules/MY.conf"] [line "1"] [id "0000001"] [msg "upload no-picture file"] [tag "WEB_ATTACK/FILEUPLOAD"]
WAF规则实例2: 上传文件名中包含%00进行阻断
vim /usr/share/modsecurity-crs/activated_rules/MY.conf
添加规则
SecRule FILES "@contains %00" "deny,tag:'WEB_ATTACK/FILEUPLOAD',msg:'filename has null character',id:0000002,phase:2"
测试,上传文件名包含%00的文件
http www.tanjiti.com filename@a.php%00.jpeg
我们可以看到请求包被拦截,查看modsecurity日志
more /var/log/apache2/modsec_audit.log
可以看到命中了规则0000002
Message: Access denied with code 403 (phase 2). String match "%00" at FILES:filename. [file "/usr/share/modsecurity-crs/activated_rules/MY.conf"] [line "2"] [id "0000002"] [msg "filename has null character"] [tag "WEB_ATTACK/FILEUPLOAD"]
非常简单吧,下一步,计划介绍一下nginx服务器的防护。
注意!!!!!!!!!!!!!!
一旦这样修改了以后,使用IP地址就显示403错误!!!!!!为了这个错误,搞了一天,在网上搜各种403错误就是不行,为什么呢????
查看errol.log 就可以发现,是modsecurity里面禁止了使用IP访问!!!!!!使用localhost就可以正常访问了。。。
所以,看日志是一个很重要的事儿


猜你喜欢
- 在Windows服务器系统中,每当服务器启动成功时,系统的C盘、D盘等都会被自动设置成隐藏共享,尽管通过这些默认共享可以让服务器管理维护起来
- 邀请好友是现今SNS网站必备的利器之一,其中开心网就是网友导入QQ、MSN、E-mail等的好友名单进行邀请,而在短时期内迅速扩张网站会员人
- 上次装好了PHP,MySQL,还缺个MySQL图形化管理工具。MySQL图形化管理工具有很多,phpmyadmin无疑是必装的,国外空间大多
- Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包
- 随着公司规模的扩大,虚拟主机或者在自己的公司架设的服务器在带宽和稳定性上都将再难以满足需要,主机托管便会被提上议事日程,本文介绍了服务器托管
- 这年头推广网站真是难!我们不像那些有钱的站长!他们直接用钱砸进去推广开来!而我们呢。只有靠自己手工推广了!多难啊!我一开始是在百度上推广的,
- 1、ARP协议概述IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器
- 业界加密 TCP/IP 网络产品的标准是 SSL ,对于 Internet 上普遍使用的超文本传输协议(HTTP)而言,其加密后的协议称为
- 10月16日消息,对于大多数企业来说,升级到微软公司即将推出的操作系统Windows 7是不可避免的趋势。全球技术研究和咨询公司Gartne
- AMH,这是一个由国人开发的LNMP/Nginx 虚拟主机面板,看到部落一直在测试各种VPS控制面板,有不少的朋友给我留言说可以测试和分享一
- 收入高的网店一个月收入一万左右,还有大量的朋友几个月只能卖出几件东西,如何免费推广网店,有没有什么好的方法,我请教了一下网络营销学院有经验的
- 环境:VMware VCSA 6.7 (VMware-VCSA-all-6.7.0-8169922.iso)Step 1:选择从vSpher
- IE6是无数网页设计者和开发人员的噩梦,如果要兼容IE6,都必须写很多的代码去照顾它,NeoEase的IE6必死这篇文章很清楚地讲到了为什么
- 升级原则1. 服务器升级的目的是解决系统某一方面的瓶颈,但是升级的结果不能造成新的系统瓶颈。升级时应该考虑针对的是服务器哪一方面的瓶颈,但是
- 10月9日消息,网络时代人们最信任哪种广告?口碑才是最有力销售工具!尼尔森调查公司最近进行的一项在全球47个国家展开的调查显示:尽管广告平台
- 有些会员之前就问过我这个问题,Dedecms和PHPWind的整合版退出系统后进入的是空间聚焦频道,有人希望跳转到网站的首页,在这里天涯给出
- 关于优化说起优化,其实最好的优化就是提升硬件的配置,例如提高cpu的运算能力,提高内存的容量,个人认为如果你考虑升级硬件的话,建议优先提高内
- 常常在些站长论坛看到这样的求助帖子“为什么我的站是原创文章搜索收录才几页啊?这是什么原因呀?哪位高手帮我分析分析啊!”其实造成网站收录少的原
- 今个做开发用xampp的时候发现apache不能启动了,查一下log,发现端口冲突了[Apache] Problem detec
- 4.3.3. 算法大体上,算法有四步:检查结果是否在本地,如果是则直接返回;向最合适的服务器查询;向多个服务器发出请求,直到得到响应;分析结