基於Golang打造開源的WAF閘道器

2021-12-30 05:23:45 字數 2037 閱讀 4517

背景在網際網路行業,google將安全做到基礎設施裡面,素來是各大公司學習的榜樣,在web方面,通過gfe (google front-end) 統一對外發布,業務只需要在gfe登記,gfe就會調取正確的證書,保障使用者到gfe的tls連線安全。

microsoft在web方面,有一款叫做azure application gateway的產品,提供了統一的web路由、負載均衡,以及waf(web應用防火牆)功能。

遺憾的是,這幾款產品均不能用於私有化部署,google front-end 和 azure application gateway只服務於他們自身業務以及他們自己的雲客戶。想要使用他們的產品,得使用他們的雲服務,不然就只能望洋興嘆了。

對標與產品方案設計

鑑於此,筆者希望借鑑gfe和azure應用閘道器,打造一款這樣的應用安全基礎設施級產品,用於自己個人**的防禦,這款產品需要具備:

1.統一的網路入口,可以有多個節點,配合負載均衡進行排程,即應用閘道器(application gateway);

2.waf (web應用防火牆) 功能,可攔截常見的web入侵行為(如sql注入/命令注入/xss/webshell上傳或連線)、資料洩露事件等;

上圖中紅色的叉叉部分表示攔截惡意攻擊行為。

3.可應對cc攻擊及簡單的刷單場景,達到設定閾值時能夠攔截或展示驗證碼。

特色當然,上面這些是基本的功能。筆者還希望這是一款有特點、差異化的產品:

1.不要安裝agent

agent維護起來比較麻煩,用瀏覽器配置可以更簡單,比如配置應用:

2.支援https

還要能夠把證書管理起來,把私鑰保護起來,不再將證書檔案、私鑰檔案直接明文的存放在伺服器某個目錄下(防止黑客偷走私鑰);只讓閘道器管理人員申請和配置證書,業務人員不用接觸證書檔案就可以啟用https。

3.聯動

很多waf的一條策略只能檢查乙個地方(如get或post引數值),如果請求需要結合響應共同來判定 (或多個組合條件),就做不到了,這一點一定要突破,做到多個檢查點可組合,特別是請求(request)和響應(response)能夠關聯(組合)起來。

4.非法網域名稱攔截

曾經有人用****_your_domain.com 這樣的網域名稱指向your_domain.com **,如果伺服器配置不當,有可能會正常響應請求,給公司帶來公關風險。所以,當非法網域名稱指向過來的時候,應該拒絕響應。

5.證書質量

不是所有的https都是安全的,錯誤配置、演算法的選用均有可能踩坑,如ssl 1.0, ssl 2.0, ssl 3.0以及tls 1.0 均已出現漏洞。典型的,如果您的業務涉及到資金支付,pci-dss認證會對證書質量有特別的要求,如必須使用tls 1.1或以上的協議版本、必須使用前向安全演算法(forward security)用於保障安全的金鑰交換等。因此,閘道器預設就需要啟用安全保障。

這是一款基於golang打造的應用安全閘道器,具備waf(web應用防火牆)功能及組合策略配置,天然支援https(符合pci-dss認證要求),無需agent,私鑰加密儲存在資料庫,提供負載均衡和統一的web化管理入口。

備註該產品並不能解決所有的安全問題,不能替代抗ddos攻擊產品,也不能替代hids產品,更不能代替日常的安全運營工作。但當你打算從零開始構建立體的安全防禦體系(特別是應用安全防禦體系)的時候,能夠在關鍵的路徑上,切斷典型的入侵嘗試,擋住大部分探測payload,大幅提高入侵難度,同時從一開始就能夠利用此作為閘道器基礎設施推廣使用https,保護外網資料傳輸安全。

基於golang的網路爬蟲框架

這是乙個用go語言實現的網路爬蟲框架,本框架的核心在於可定製和可擴充套件,使用者可以根據自己的需要定製各個模組,同時,也給出了乙個實現demo供參考。go語言的初學者也可以通過這個專案熟悉go語言的各種特性,尤其是併發程式設計。1 排程器主體 主要用於啟動和停止整個系統,並且從中獲取一些系統執行的狀...

golang 基於共享變數的併發

併發定義 當我們沒有辦法自信地確認乙個事件是在另乙個事件的前面或者後面發生的話,就說明x和y這兩個事件是併發的。併發安全 如果其所有可訪問的方法和操作都是併發安全的話,那麼型別便是併發安全的。競爭條件 程式在多個goroutine交叉執行操作時,沒有給出正確的結果。只要有 兩個goroutine併發...

基於Golang的個人部落格 goblog

部署 goblog基於go語言開發的乙個簡約版個人部落格系統,基於golang語言編寫,後端基於了beego的web框架,目前具備博文系統最基礎的功能模組.基本上是乙個拿來即用的個人博文平台,只需要部署乙個mysql資料儲存服務,即可作為個人博文的發布平台使用.請給我乙個start 後台管理pc前端...