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的基本安装配置,工作原理以及规则编写方法。

posted @ 2020-11-17 20:41  码小农的幸福生活  阅读(976)  评论(0编辑  收藏  举报