Azure & 安全 – WAF 和 Web 常見攻擊

前言

最近有客戶想購買 Azure 的 Web Application Firewall (WAF), 來防 SQL Injection, XSS 攻擊. 

一開始我是覺得沒什麼必要, 畢竟什麼年代了, 如果項目裏還有 SQL Injection, XSS 的話, 那表示開發人員有問題了. 那你要防的東西可多了.

但後來我詳細 research 之後發現, WAF 是個好東西, 它遠遠不只是防 SQL Injection, XSS 這些.

重點是, 它也沒有很貴, 性能也沒有很慢. 這就好比住宅區外是否要一個 guard house 把守進入住宅區的人.

壞處就是進出變慢了, 因爲多了一個檢查環節, 另一個就是要錢. 

好處就是多了一個保護. 這個保護主要是心裏層面, 你不會因爲住家外有了 guard house 而家裏就不鎖門. 但多一個保護多一個檢查肯定多一份安全. 

所以站在企業的角度, 購買這些是合理的.

 

主要參考:

WAF Part

通過nginx配置文件抵禦攻擊 (講了一個具體 CC Attack 防衛案例)

WAF氣數已盡?(敏捷 DevOps 希望把安全也納入 Web 架構中, 而不是外面 wrap 一層 WAF, 但是理想很好, 現實不容易啊)

講講企業選購WAF那些事 (法律政策也是採購 WAF 的考量之一, 也有講到新一代 WAF 自動化攻擊等等)

WAF基本原理與部署方式 (講架構原理, 一堆流程圖)

Azure Part

What is Azure WAF on Azure Application Gateway?

Web Application Firewall CRS rule groups and rules

FAQ about Application Gateway

FAQ for Azure WAF on Application Gateway

 

WAF 保護範圍

我們來一個一個過吧. 大概懂它是什麼就可以了. 畢竟大部分的攻擊都是那幾招, 只是用在不同地方所以換了一個名字而已. 保護手法也不外乎那幾招.

 

SQL Injection

SQL injection 是指程序員直接拿 client input, 拼接到 SQL query 中. 從而導致 client 有能力可以操作 SQL.

這個是年代久遠的攻擊了. 現在一般上都會使用 parameter 的方式把 client input 輸入進 query 裏, 而不是用拼接. 

或者直接用 ORM 框架. 跳過寫 query 這個環節.

不只是 SQL Injection, 任何一種 XXX injection 原理都是一樣的, 程序員對 client input 使用要敏感一些.

不要拿了就用, 要假設 client 都是壞人, 用他們給的東西要先檢查, 限制, 過濾. 

比如用 Enum, int, 正則去確保用戶只能給小範圍的表達, 使用的時候要依據場合做 encode. 

除了 SQL, 經常會用到 client input 做邏輯的還有 : Path, 反射調用, rich text 等等

 

Cross-site Scripting (XSS)

也算 injection 的一種, 它指的是用 client input 去拼接 HTML. 從而導致 client 有能力操作 HTML 頁面.

解決方法就是消毒. 限制. 過濾, Encode, 就那一套啦. 

 

Command Injection

也是 injection 的一種, 只是攻擊的地方是調用 shell 這類的, 所以叫 command injection. 

參考: 詳解php命令注入攻擊

解決方法一樣.

 

HTTP Request Smuggling

請求走私, 這個只會發生在, 有用 load balance, reverve proxy 反向代理, 這種情況. 

它會通過一些手法騙過代理, 讓它分發錯誤的信息給服務器. 

 

我沒有用過 load banlance 和反向代理, 所以也不清楚它具體怎樣 hack.

 

HTTP Response Splitting

參考: 

HTTP Response Splitting 攻擊

淺談HTTP響應拆分攻擊

它也有點像 injection, 服務器在處理 302 時把 client input 直接寫入 header location 裏, 導致了 client 有能力控制 response.

我沒有深入研究, 想了解更多看上面的鏈接吧. 解決方法還是一樣.

 

Remote File Inclusion

參考: 前端 RFI詳解

也算 injection 的一種, 直接用 client input 去拼接 file path.

 

其它

其餘的還有 HTTP 協議檢查, user-agent, accept headers, IIS configuration, protect 爬蟲, scanner 等等啦.

詳細的 rules 保護看這裏 Web Application Firewall CRS rule groups and rules

此外, 它還防 DDos attack

 

DDoS 和 CC Attack

參考: DDoS攻擊和CC攻擊有什麼區別?

DDoS 攻擊就是一直訪問你的服務器, 造成巨大的壓力, 讓服務器卡死掉. 阻止它的方法一般上是去檢查 IP, 放 cookie 做識別.

然後阻止它一直訪問. 自己防的話, 也是挺多工作要做的.

 

總結

綜上, 這麼多亂七八糟的安全隱患, 最好還是讓專家替我們操心, 或者至少幫我們 double check. 有錢的公司都會僱傭白帽子攻擊自己的.

購買 WAF 也是類似的概念. 所以術業有專攻. 我們寫業務的就不該去操安全的心嘛... (話收回來...還是要儘可能做好本分寫出安全的程序. 白帽子工具多一份保障也是必要的)

 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章