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的基本安裝配置,工作原理以及規則編寫方法。