2013年9月23日 星期一

使用modsecurity增加學校網站的安全性

最近教育局來函要學校做弱點掃描

掃出來xoops還真的不錯,可以抓到掃描的ip與攻擊

但因為學校之前還裝了另一套線上影音軟體

不是我所規劃的,所以不曉得安全性是否可靠

因此開始搜尋如何增加網站安全性

主要是以防止sql injection 與 xss攻擊



後來找到了modsecurity這個模組

與參考了這網站開始實作

在這裡以Ubuntu為主

1.先前準備與相關套件

#apt-get update

#apt-get install apache2

#apt-get install php5

#/etc/init.d/apache2 restart

#apt-get install libxml2 libxml2-dev libxml2-utils

#apt-get install libaprutil1 libaprutil1-dev

//如果使用64位元Ubuntu執行下列指令
#ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2 /usr/lib/libxml2.so.2

//安裝主要安全模組
#apt-get install libapache-mod-security

2.相關設定

#mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
#vi /etc/modsecurity/modsecurity.conf
要設定規則開啟
SecRuleEngine On

#vi /etc/apache2/mods-available/mod-security.conf
相關設定如下

        SecDataDir /var/cache/modsecurity
        Include "/etc/modsecurity/*.conf"
        #增加這一行
        Include "/etc/modsecurity/activated_rules/*.conf"


#vi /etc/apache2/apache2.conf
新增下列文字
### 偽裝成IIS###

<IfModule mod_security2.c>
SecServerSignature "Microsoft-IIS/5.0"
</IfModule>


 3.下載並安裝寫好的規則

#cd /tmp
#wget https://github.com/root25/MODSEC/raw/master/modsecurity-crs_2.2.5.tar.gz
#tar -zxvf modsecurity-crs_2.2.5.tar.gz
#cp -R modsecurity-crs_2.2.5/* /etc/modsecurity/
#rm modsecurity-crs_2.2.5.tar.gz
#rm -R modsecurity-crs_2.2.5
#mv /etc/modsecurity/modsecurity_crs_10_setup.conf.example  /etc/modsecurity/modsecurity_crs_10_setup.conf
#cd /etc/modsecurity/base_rules
//因為規則全安裝經測試會有問題,所以只安裝防xss與sql injection
#mkdir /etc/modsecurity/activated_rules
#cd /etc/modsecurity/activated_rules
#cp ../base_rules/modsecurity_41* ./
#cp ../base_rules/modsecurity_crs_41* ./
//重開service
#/etc/init.d/apache2 restart

恭喜自己完成了XD寫了快一個小時

4.測試

只需要在你的網站輸入http://your ip/?id=23' or '1'='1

就會出現

Forbidden

You don't have permission to access / on this server.

Microsoft-IIS/5.0 Server at xx.xx.xx.xx Port 80

大功告成

5.新增例外清單

在/etc/modsecurity/activated_rules/目錄增加一個檔案exclude.conf

內容如下:
<IfModule mod_security2.c>
  <Location /modules/sj_score/>
    SecRuleEngine off
  </Location>
</IfModule>


6.apache2的error.log出現PCRE limits exceeded (-8)問題

編輯/etc/modsecurity/modsecurity.conf

增加以下內容:

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

編輯php.ini

更改以下內容:

pcre.backtrack_limit=10000000
pcre.recursion_limit=10000000

重開apache2就可生效

7.白名單
因為modsecurity只要敏感符號就會擋,
但只要傳送中文就會有這些符號導致看error log時都是學校IP
因此把學校加入白名單中
編輯modsecurity.conf
 #vi /etc/modsecurity/modsecurity.conf
增加一行
SecRule REMOTE_ADDR "@ipMatch 192.168.30.0/24" "phase:1,nolog,allow"

沒有留言:

張貼留言