环境
- Apache2.4
- 宝塔7.9.4
宝塔虽然有apache和nginx的防火墙。但都是收费的。(其实就是在开源的waf基础上魔改的,收费就太恶心了。)
主要方方sql注入、xss、一句话等常见渗透攻击。一年就要四百多,怎么不去抢!
ModSecurity介绍
ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),被称为WAF界的“瑞士军刀”。它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护。
功能
- SQLi:阻止SQL注入
- XSS:阻止跨站脚本攻击
- LFI:阻止利用本地文件包含漏洞进行攻击
- RFI:阻止利用远程文件包含漏洞进行攻击
- RCE:阻止利用远程命令执行漏洞进行攻击
- PHP Code :阻止PHP代码注入
- HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
- HTTPoxy:阻止利用远程代理感染漏洞进行攻击
- Sshllshock:阻止利用Shellshock漏洞进行攻击
- Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
- Scanner Detection:阻止黑客扫描网站
- Metadata/Error Leakages:阻止源代码/错误信息泄露
- Project Honey Pot Blacklist:蜜罐项目黑名单
- GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断
安装
安装依赖
yum install -y yajl-devel ssdeep-devel
安装
cd /usr/local
wget https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.5/modsecurity-2.9.5.tar.gz
tar -zxvf modsecurity-2.9.5.tar.gz
cd modsecurity-2.9.5
./configure --with-apxs=/www/server/apache/bin/apxs --with-apr=/www/server/apache/bin/apr-1-config --with-apu=/www/server/apache/bin/apu-1-config
make
make install
注意,如果你的是非宝塔环境,也可以按照上面的命令进行安装。需要修改的位置为apxs
arp-1-confg
`apu-l-config这三个文件的位置。宝塔下默认位置为:
/www/server/apache/bin/你可以用
find`命令进行搜索。
配置规则文件
cd /usr/local
git clone https://github.com/coreruleset/coreruleset.git
#如果本地网站无法连接git官网,可尝试下方的另外两个下载地址
#git clone https://hub.fastgit.org/coreruleset/coreruleset.git
#git clone https://hub.0z.gs/coreruleset/coreruleset.git
mkdir /www/server/apache/conf/modsecurity/
#复制ModSecurity相关配置文件
cp /usr/local/modsecurity-2.9.5/modsecurity.conf-recommended /www/server/apache/conf/modsecurity/modsecurity.conf
cp /usr/local/modsecurity-2.9.5/unicode.mapping /www/server/apache/conf/modsecurity/unicode.mapping
#复制OWASP相关规则文件
cp /usr/local/coreruleset/crs-setup.conf.example /www/server/apache/conf/modsecurity/crs-setup.conf
cp -r /usr/local/coreruleset/rules/ /www/server/apache/conf/modsecurity/
#启用白名单及规则禁用文件
mv /www/server/apache/conf/modsecurity/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /www/server/apache/conf/modsecurity/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv /www/server/apache/conf/modsecurity/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example /www/server/apache/conf/modsecurity/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
开启waf
编辑httpd.conf
,去掉#LoadModule unique_id_module modules/mod_unique_id.so
前的注释符#
,并添加以下内容
LoadModule security2_module modules/mod_security2.so
Include conf/modsecurity/modsecurity.conf
Include conf/modsecurity/crs-setup.conf
Include conf/modsecurity/rules/*.conf
编辑/www/server/apache/conf/modsecurity/modsecurity.conf
,SecRuleEngine DetectionOnly
改为SecRuleEngine On
然后根据实际需要,其他的配置看是否需要,根据实际关闭即可。(其实用我们的配置规则文件就以及足够了。笔者在安装时,发现手机端打开时显示空白页,需手动刷新才能出现页面。可能时CND问题!)
测试
重启apache服务
service restart httpd
测试http://bbskali.cn/?id=%22%3E%3Cscript%3Ealert(1);%3C/script%3E
自定义页面
默认的403页面,有损我们的风格,动手自己写个页面吧。(虽然缺少设计美!)
系统防火墙
修改/www/server/apache/conf/modsecurity/crs-setup.conf
文件,添加下面代码
SecDefaultAction "phase:1,log,auditlog,redirect:https://blog.bbskali.cn/waf.html?url=%{REQUEST_FILENAME}&intercept_domain=%{request_headers.host}"
SecDefaultAction "phase:2,log,auditlog,redirect:https://blog.bbskali.cn/waf.html?url=%{REQUEST_FILENAME}&intercept_domain=%{request_headers.host}"
将原来的#SecDefaultAction "phase:1,log,auditlog,pass"
注释掉。
重启apache服务,查看效果。
版权属于:逍遥子大表哥
本文链接:https://blog.bbskali.cn/3729.html
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
最后修改:2023 年 08 月 04 日
© 允许规范转载
此处评论已关闭