1. 程式人生 > >ubuntu上安裝Apache2+ModSecurity及實現防SQL注入演示

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的基本命令
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不用重啟服務,直接重新載入配置檔案

 
 二、Apache設定反向代理 
 

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