WAF介绍
WAF是什么?
WAF的全称是(Web Application Firewall)即Web应用防火墙,简称WAF。
原理
WAF工作在web服务器之前,对基于HTTP协议的通信进行检测和识别。在用户请求到达Web服务器前对用户请求进行扫描和过滤,分析并校验每个用户请求的网络包,确保每个用户请求有效且安全,对无效或有攻击行为的请求进行阻断或隔离。主要防护的是来自对网站源站的动态数据攻击,可防护的攻击类型包括 SQL 注入、XSS 攻击、CSRF 攻击、恶意爬虫、扫描器、远程文件包含等。
WAF搭建
1、安装必须的组建依赖
apt install g++ flex bison curl apache2-dev doxygen libyajl-dev ssdeep liblua5.2-dev libgeoip-dev libtool dh-autoreconf libcurl4-gnutls-dev libxml2 libpcre++-dev libxml2-dev git
2、下载LibModsecurity
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
3、进入下载的目录,更新子模块(语义引擎就在这个子模块里面),安装较慢
cd ModSecurity/
git submodule init
git submodule update
./build.sh
./configure
make
make install
4、下载ModSecurity-Apache连接器
cd ~
git clone https://github.com/SpiderLabs/ModSecurity-apache
这里是在~目录下,你也可以去其他目录,比如/var目录
5、进入下载的目录,配置路径,安装
cd ModSecurity-apache
./autogen.sh
./configure --with-libmodsecurity=/usr/local/modsecurity/
make
make install
这里的配置路径很重要,默认都在这个路径下,不要改
6、用连接器把LibModsecurity和Apache组装上(直接复制粘贴就行)
echo "LoadModule security3_module /usr/lib/apache2/modules/mod_security3.so" | tee -a /etc/apache2/apache2.conf
7、创建Modsecurity的配置目录,并配置
mkdir /etc/apache2/modsecurity.d
cp ~/ModSecurity/modsecurity.conf-recommended /etc/apache2/modsecurity.d/modsecurity.conf
cp ~/ModSecurity/unicode.mapping /etc/apache2/modsecurity.d/
sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/apache2/modsecurity.d/modsecurity.conf
这一步也是直接复制粘贴,需要注意的是~目录,也就是第四步下载的那个地址,如果下载到其他目录,比如/var目录,那么把~改成/var即可。
8、使用vim创建文件,并写文件
vim /etc/apache2/modsecurity.d/modsec_rules.conf
写的内容如下:
Include "/etc/apache2/modsecurity.d/modsecurity.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf"
9、下载CRS核心规则集,改名字(也是直接复制粘贴,路径都是默认好的了)
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /etc/apache2/modsecurity.d/owasp-crs
cp /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf{.example,}
10、激活Modsecurity3.0网站防火墙
vim /etc/apache2/sites-available/000-default.conf
像下面那样添加2行就可以了,一个开关,一个规则路径,如下:
modsecurity on
modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf
11、检查语法是否正确(回显Syntax OK
即为成功)
apachectl configtest
12、重启apache服务
systemctl restart apache2
或者
service apache2 restart
13、测试防火墙功能是否可以使用
curl localhost?doc=/bin/ls
显示如下,403拒绝,成功的阻断了当前的注入攻击,则已正常使用
14、检查审计日志
tail /var/log/modsec_audit.log
教程来自于:手把手带你搭建企业级WEB防火墙ModSecurity3.0+Apache