ModSecurity安装配置
ModSecurity安装配置
实验目的
本实验主要掌握ModSecurity与Apache2服务器的安装及配置方法,并对自己编写的WAF规则,进行验证。
实验环境
网络实训平台 OS平台:Ubuntu 16 服务器:Apache2
一、更新Ubuntu apt-get更新源
sudo mv /etc/apt/sources.list /etc/apt/sources.list_backup
sudo nano /etc/apt/sources.list
将以下内容,写入source.list
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
执行更新。 sudo apt-get update
二、安装步骤
1、安装apache2:
sudo apt-get install apache2
sudo apt-get install apache2-dev
2、安装modsecurity:
sudo apt-get install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev libapache2-modsecurity
3、安装mysql-5.7
将SecureCRT的选项---会话选项--外观--编码,修改为UTF-8编码。 sudo apt-get install mysql-server mysql-client libmysqlclient-dev
4、安装PHP7:
sudo apt-get install php7-*
5、查看ModSecurity版本号:
dpkg -s libapache2-modsecurity | grep Version
输出:Version: 2.9.0-1
三、配置
1、开启ModSecurity功能:
cd /etc/modsecurity/
sudo mv modsecurity.conf-recommended modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf
查找SecRuleEngine,并将其修改为On:
SecRuleEngine On
2、在apache中启用modsecurity模块:
sudo nano /etc/apache2/mods-available/security2.conf
在 … 中加入以下内容,保存退出。
includeOptional /etc/modsecurity/*.conf
3、启用headers和Modsecurity
sudo a2enmod headers
sudo a2enmod security2
4、测试
在/usr/share/modsecurity-crs/activated_rules/路径下建立myrules.conf,输入内容: SecRule ARGS_GET "@contains ' or" "deny,status:404,log,tag:'WEB_ATTACK',msg:'SQL Injection Try',id:1000001,phase:1"
在/etc/apache2/mods-available/security2.conf中仅包含/usr/share/modsecurity-crs/activated_rules/myrules.conf规则文件。 然后重启服务器。 sudo service apache2 restart
利用操作机浏览器发出畸形访问: http://localhost/?id=33' or '1'='1 查看日志,日志位置: /var/log/apache2/modsec_audit.log
利用本机,输入SQL注入语句,进行测试: curl -I http://localhost/?id=33' or '1'='1
查看modsecurity日志文件看具体的拦截情况 tail /var/log/apache2/modsec_audit.log
3、安装OWASP Rule Set
cd ~ sudo wget https://github.com/root25/MODSEC/raw/master/modsecurity-crs_2.2.5.tar.gz
sudo tar -zxvf modsecurity-crs_2.2.5.tar.gz
sudo mkdir -p /usr/share/modsecurity-crs
sudo cp -R modsecurity-crs_2.2.5/* /usr/share/modsecurity-crs/
将规则集加入活跃规则集
在/usr/share/modsecurity-crs/的目录下,有主要的几个规则目录,activated_rules、slr_rules、optional_rules和base_rules.
将srl_rules、base_rules和optional_rules目录下的所有conf文件,拷贝到activated_rules目录下。
sudo cp /usr/share/modsecurity-crs/modsecurity-crs_10_setup.conf.example /usr/share/modsecurity-crs/modsecurity-crs_10_setup.conf
cd /usr/share/modsecurity-crs/activated_rules
sudo cp /usr/share/modsecurity-crs/base_rules/* .
sudo cp /usr/share/modsecurity-crs/optional_rules/* .
sudo cp /usr/share/modsecurity-crs/slr_rules/* .
sudo nano /etc/apache2/mods-available/security2.conf 在 … 中加入以下内容,保存退出。 include /usr/share/modsecurity-crs/.conf include /usr/share/modsecurity-crs/activated_rules/.conf
重启apache2: sudo service apache2 restart 若出错,则删除以下文件: /usr/share/modsecurity-crs/activated_rules/modsecurity_crs_10_*.conf
/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_4*.conf
/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_5*.conf
说明:由于以上文件中有几个存在语法错误。 如果报错,unresolved hostname类似的错误,则修改主机名为ubuntu16: sudo hostname ubuntu16
/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_21_anomalies.conf 上述文件,禁止通过IP地址直接访问。
重启成功。 可以尝试输入各种渗透变形,测试防护效果。 免费规则集的检测误报率和漏报率比较高,收费版本的,则会好很多。
实验总结
通过本次实验,理解了waf的基本安装配置,工作原理以及规则编写方法。