最近分享了我在WAF建設方面的一些經驗,原文點我。其中評論有一些讓我有點意外,在這裏引用一下:

只是爲了檢測和報警的話,就鏡像流量旁路,自己隨便玩,不要串聯。

如果串聯了,誤報和誤攔截就是致命的問題,業務方會砍死你 + 頻繁的調整waf策略會拖垮你。

除非是典型的挖坑不埋的人, 這類人見得太多了,前人挖坑加薪跑路,後人填坑填到死還經常被坑扣錢,最後只能廢棄換坑,折騰了半天啥有價值的東西都沒有。

首先我要說WAF存在的意義到底是什麼?

WAF全名爲Web Application Firewall,中文是web應用防火牆,主要用於攔截web層面發生的攻擊,原理是通過匹配關鍵正則判斷請求是否具有威脅。使用WAF可以增加業務在web層的安全性。

衆所周知,阻斷的意思是當一個惡意請求發送過來時,通過一系列判斷此請求有威脅,發出告警並拒絕向後端轉發的行爲稱之爲阻斷行爲。評論中的只爲了檢測和報警稱之爲僅檢測行爲,意爲當一個惡意請求發送過來時,通過一系列判斷此請求有威脅,發出告警但不拒絕向後端轉發的行爲。

WAF存在的意義是自動攔截惡意請求,如果僅檢測,那我爲什麼要使用WAF?用日誌審計不好嗎?甚至直接用syslog不好嗎?更加節省人力成本、研發成本與時間成本。爲什麼要使用WAF?不就是因爲WAF可以阻斷惡意請求嗎?

第二點,串聯的誤報誤攔問題,這點是所有的WAF普遍存在的,WAF其實好壞的差別主要就在於策略,一個好的WAF,策略會相對更貼合與實際業務,產生的誤攔問題會比較少。但是,哪個廠商敢說我的WAF不用調試,上了就能用,直接開阻斷。如果有這樣的廠商麻煩大家推薦給我,反正我的3年工作經驗中不論甲方乙方都沒有見到過如此厲(niu)害(B)的廠商。

整個WAF體系構建中,我說過使用ELK作爲日誌分析工具,那麼ELK能不能做到規則觸發彙總,我想這點官網上都有說明,並且不難實現。至於關聯配置文件自動化過濾策略,就需要自行寫腳本了。廠商的設備也是自動化調整策略而已,甚至有些也需要自己手動調整。我不明白這條評論背後的人是看不起WAF還是真的打醬油不想做任何調試。

什麼是試運行?WAF上生產的前1周甚至1個月,運行的是僅檢測模式,主要就是爲了過濾一些誤報,調整策略,把誤報的策略關掉,儘量使生產不出現問題。而其中監控的主要作用也是爲了一旦發生誤報誤攔,能夠第一時間恢復業務,在我的監控體系中,基本能做到半分鐘恢復業務。其中告警響應大概用時5S,因爲需要讀告警內容,判斷是哪裏出的問題,25S時間用來解決問題,當然大型複雜事故大概需要10分鐘左右恢復。這也是監控存在的意義。我也不太懂,如果一個業務死了好幾個小時,你還沒有發現解決,業務方有什麼理由不砍死你?

送你一把大寶劍:

第三,任何產品研發上線都需要交接文檔與手冊,這點我在之前等保文章中其實有涉及到,這甚至是需要寫進管理制度中的,就是爲了防止交接的人對於現有的系統不能快速上手,甚至我在部署使用時就撰寫了一系列文檔,包括可行性分析報告、部署報告、操作手冊、常見問題記錄、策略調整記錄。其中可行性報告是對業務整體的分析、部署WAF需求分析、選用開源防火牆的依據、現階段存在的問題等等。部署報告顧名思義就是部署的整體環境與拓撲圖。操作手冊記錄了關鍵步驟的操作,比如策略怎麼調整,日誌分析怎麼做,怎麼切換運行模式,甚至運行模式我都有做解釋什麼時候用什麼模式。常見問題記錄是在部署和升級過程中的一些坑。策略調整記錄顧名思義。我不認爲我給之後的人挖了個坑,甚至我是跟他們趟了不少的坑。講這段其實不是爲了抱怨什麼,而是想告訴大家說,平時記錄的重要性。

第四,我嚴重懷疑這兄弟是在安全部中打醬油的角色。這點其實沒有什麼多說的,我只想說如果要提高企業的安全性,首先就不能否定了自己,如果因爲怕麻煩或者怕影響業務,那乾脆什麼都不做就好了!

以上基本屬於個人的嘮叨,下面進入正題,如何收緊策略?

WAF在使用中最大的問題也是最怕的問題就是誤報與漏報,下面將我 的經驗分享給大家。

爲什麼會誤報?

針對這個問題,不得不說一下WAF的研發原理,WAF其實就是正則匹配,一般惡意請求會有正則特徵,第一批安全專家就根據攻擊者的特徵做了一個正則特徵庫,原意爲匹配特徵的行爲基本可以確定爲攻擊。而現實並不是那麼美好,因爲我們在運行業務中偶爾進行的一些行爲也會被當作惡意攻擊。

這裏舉個例子:

圖片上傳,我上傳一個帶木馬的圖片,與一個正常的圖片

圖一木馬圖片:

圖二正常圖片:

正常圖片按理說會通過WAF的正則檢測,但是包在轉遞的時候會將圖片轉碼,會觸發WAF的LFI規則

圖三正常圖片:

這時候也同樣會造成誤報。

針對這個問題,我特意請教了modsec的研發者,他的解決方案是不抓圖片的包,但是實際上不容易實現,而且一旦發生攻擊,會造成很大影響。於是我自行做了解決方案:

規則不變,將圖片上傳的URL做僅檢測處理,監控中重點監控。ELK關聯到zabbix,通過zabbix進行微信告警。一旦有圖片觸發告警策略,第一時間查看是否合規。圖片上傳被觸發的幾率大概是1%,所以不用擔心頻繁告警。

很多規則其實都是需要適應業務的,比如我們的業務是java語言寫的,那麼php的語言規則很多都是沒有必要的,要適當刪減掉。

於此同時在ELK中做日誌分析,取transaction.messages:*的值,因爲modsec日誌輸出時如果使用的是json格式,告警name就是transaction.messages,取他所有的值用作分析,如果做觸發數量統計便可以取值中的message字段。

在match字段中是匹配到的正則表達式,在這裏可以判斷觸發是否合理,file字段是正則表達式所在的文件,可以對規則進行修改,ruleId是規則標號,可以直接過濾掉此條規則,之後將不在對此ID的規則進行檢測。

正常業務大概需要試運行1個月,謹記,監控一定要做到位,確保出問題能夠馬上響應後再切換模式。

我是一個愛折騰的懶人,不甘心打醬油過日子,謀定後動,穩中求勝,但不意味着隨波逐流,什麼都不做。也希望大家能找到自己存在的意義,找到自己最喜歡的工作方式。

*本文作者:煜陽yuyang,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。

相關文章