ubuntu上安裝Apache2+ModSecurity及實現防SQL注入演示
ubuntu上安裝Apache2+ModSecurity及實現防SQL注入演示
一、Apache2 的安裝
1.1、安裝環境:
OS:Ubuntu 16.04.1 LTS
Apache: Apache/2.4.18 (Ubuntu)
安裝命令:
更新安裝源:
sudo apt-get install update
sudo apt-get install apache2
1.2、Apache的基本命令
二、Apache設定反向代理1、檢視版本資訊 apachectl -v 2、載入和去掉載入模組 sudo a2enmod security2 #啟動mod-security模組 sudo a2dismod security2 #停止mod-security模組 3、載入站點和去掉載入站點 sudo a2ensite proxy.conf #載入proxy.conf站點 sudo a2dissite proxy.conf #停止proxy.conf站點 4、apache啟動、停止和重啟 sudo service apache2 restart sudo service apache2 stop sudo service apache2 start sudo service apache2 reload #reload不用重啟服務,直接重新載入配置檔案
2.1、啟動代理模組
sudo a2enmod proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http
2.2、配置站點檔案
新建配置檔案proxy.conf
sudo vim /etc/apache2/mods-enabled/proxy.conf
編輯站點配置檔案:
<VirtualHost *:8088>
ServerName www.aaa.com
ServerAdmin [email protected]
DocumentRoot /var/www/html
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://10.8.165.51/mutillidae/ retry=1 acquire=3000 timeout=600 Keepalive=On
ProxyPassReverse / http://10.8.165.51/mutillidae/
</VirtualHost>
新增監聽埠:sudo vim /etc/apache2/ports.conf
Listen 80
Listen 8088
2.3、啟用站點
sudo a2ensite proxy.conf
sudo service apache2 reload
2.4、配置域名解析:/etc/hosts
127.0.0.1 www.aaa.com
至此通過URL:http://www.aaa.com:8088/ 即可實現對http://10.8.165.51/mutillidae 的訪問。
三、modsecurity模組的安裝與使用
3.1、安裝libapache2-modsecurity模組及其依賴包
sudo apt-get install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev libapache2-modsecurity
我們可以使用以下命令檢視一下modsecurity的當前版本
dpkg -s libapache2-modsecurity | grep Version
我所採用的版本:Version: 2.9.0-1
3.2、配置modsecurity,啟用攔截模式
sudo service apache2 reload
該命令生效後,會在/var/log/apache2/目錄下生成modsecurity的日誌檔案modsec_audit.log
配置modsecurity的配置檔案:
cd /etc/modsecurity/
mv modsecurity.conf-recommended modsecurity.conf
sudo vim /etc/modsecurity/modsecurity.conf
啟動攔截模式:
SecRuleEngine On
3.3、使用modsecurity核心規則集
規則集放置在以下目錄下:
cd /usr/share/modsecurity-crs/activated_rules/
在root使用者模式下,選擇啟用的過濾規則集:
for f in $(ls ../base_rules/); do ln -s ../base_rules/$f; done
修改apache模組配置,啟用規則集:
sudo vim /etc/apache2/mods-available/security2.conf
修改:
<IfModule security2_module>
# Default Debian dir for modsecurity's persistent data
SecDataDir /var/cache/modsecurity
# Include all the *.conf files in /etc/modsecurity.
# Keeping your local configuration in that directory
# will allow for an easy upgrade of THIS file and
# make your life easier
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional /usr/share/modsecurity-crs/*.conf
IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
</IfModule>
3.4、modsecurity模組啟動
sudo a2enmod headers
sudo a2enmod security2
四、測試WEB應用防SQL注入
4.1、 Web應用 OWASP Mutillidae II
OWASP Mutillidae II是採用PHP寫的一個Web漏洞應用,執行的Web服務包含多種測試漏洞:SQL Inject、XSS等。這裡測試的是SQL注入。
在它的登陸頁面中,已知包含使用者使用者名稱:jeremy 真確密碼: password 。現在我們要使用使用者名稱:jeremy 和 注入的SQL語句實現登陸
' or (1=1 and username='jeremy') --
4.2、不啟用modsecurity的情況
登陸頁面如下:
使用上述的SQL語句能實現無密碼登陸,成功登陸如下:
從上圖的顯示可以看出使用者:jeremy已成功登陸
4.3、啟用modsecurity模組情況
通過如下命令啟動:
sudo a2enmod security2
sudo service apache2 restart
再次使用上述方式登陸時將會被禁止(如下):
禁止登入如下:
注意事項:若 /etc/apache2/mods-enabled/proxy.conf 不採用域名而用IP直接訪問,則modsecurity的啟用的過濾規則中應不應包含:modsecurity_crs_21_protocol_anomalies.conf 。若想採用URL中不用域名,而用IP地址直接訪問時,不應啟用 modsecurity_crs_21_protocol_anomalies.conf 這個過濾規則。該規則會過濾掉所有含IP的直接訪問。會在如下的log檔案中提示出錯:
/var/log/apache2/error.log
[Mon Sep 11 16:09:33.296883 2017] [:error] [pid 3913:tid 140006145349376] [client 10.102.24.121] ModSecurity: Access denied with code 403 (phase 2). Pattern match "^[\\\\d.:]+$" at REQUEST_HEADERS:Host. [file "/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "10.102.24.121:8088"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"] [hostname "10.102.24.121"] [uri "/"] [unique_id "WbZEvX8AAQEAAA9J1UYAAABA"]
參考文章:
http://www.freebuf.com/articles/web/43559.html