docker上面部署nginx-waf 防火牆“modsecurity”,使用CRS規則,搭建WEB應用防火牆

Net碼畜發表於2023-04-21

web防火牆(waf)免費開源的比較少,並且真正可以商用的WAF少之又少,modsecurity 是開源防火牆鼻祖並且有正規公司在維護著,目前是https://www.trustwave.com在維護,不幸的是2024 年 7 月將不再維護交還開源社群管理,Trustwave目前打造自己的web防火牆,至於是否免費開源就不得而知了。ModSecurity目前依然是開源,免費的WAF一哥,我們就先用著吧,商業WAF費用太貴。

Docker 安裝

Docker的地址是:owasp/modsecurity - Docker Image | Docker Hub

docker pull owasp/modsecurity

modsecurity只是WAF防火牆,僅僅安裝modsecurity並不會起作用,因為它需要規則才會生效,你可以選擇第三方支援modsecurity的規則例如:“OWASP ModSecurity Core Rule Set”,簡稱“CRS”,OWASP 是國際上一個非營利的Web應用程式安全專案,不附屬於任何企業或財團。不過很多大公司的財團都在支援OWASP,包括微軟,VMware,谷歌,nginx 等,著名的“OWASP TOP 10”功擊手法就是該組織提出來,在WEB安全領域很有名氣。

雖然ModSecurity歸還社群維護但是OWASP還在維護著CRS規則,而WAF防火牆最有價值的就是WAF規則,幸運哦,相信modsecurity歸還社群維護之後,只是需要及時修復BUG也問題不大,畢竟modsecurity己經成熟執行很久,BUG少很多了,我們還是得相信開源社群的力量~

關於WAF防火牆規則,建議採用OWASP的CRS,官網地址是:OWASP ModSecurity Core Rule Set – The 1st Line of Defense Against Web Application Attacks,幸運的是,OWASP己經在docker上面整合了modsecurity打包成映象供我們使用,docker地址是:owasp/modsecurity-crs - Docker Image | Docker Hub

docker pull owasp/modsecurity-crs

也就是說,使用這個映象預設modsecurity己經安裝好了,規則也配置好了,非常方便,這就是docker的好處,預設支援nginx,apache。它的dockerfile在github上面:https://github.com/coreruleset/modsecurity-crs-docker/blob/master/nginx/Dockerfile

映象中的配置檔案在:

/etc/nginx/templates/nginx.conf.template

配置就是典型nginx的配置檔案,瞭解nginx的很輕鬆就可以配置,當我們執行docker只需要配置好的檔案替換映象中的檔案就可以了,下面貼出最簡程式碼,當時實際運作docker還需要增加什麼引數,自己新增就行,例如埠對映等

docker run --name Nginx-WAFProxy -v /web/NginxProxy/nginx.conf.template:/etc/nginx/templates/nginx.conf.template:rw  -d owasp/modsecurity-crs:nginx

就這樣一個開源,可靠,免費WAF就搭建起來了,又省一大筆錢,我們需要注意的地址就是“paranoia level ”,規則等級,預設docker 映象是PL1,一共有四個規則等級

  1. PL1:預設值,大多數規則都是處於啟用狀態,具備標準的安全等級,適用多數網站,非常少/無的誤報。
  2. PL2:含少許多額外的規則,合適有經驗的工程師,會有少量誤報。
  3. PL3:支援更多規則和關鍵字列表,涵蓋不太常見的攻擊。需要專職工程師,定期處理誤報,增加規則。
  4. PL4:最高安全規則,進一步限制特殊字元,會產生非常多的誤報,適用於特殊的場景。

基本WAF防火牆就搭建完畢了。

相關文章