近日我的的幾個小站老是被攻擊,因而準備尋找一款WAF來抵擋一下。node
首先嚐試了modsecurity 和 naxsi ,功能是有了,但由於須要在每一臺服務器上安裝agent,沒有管理界面,策略也不能統一維護,感受後面維護起來不怎麼方便。web
繼續在網上閒逛中,在無心中看到了Janusec Application Gateway (Janusec應用網關),其無agent的網關式架構設計令我眼前一亮。sql
根據其介紹,只須要安裝一次,就能夠做爲基礎設施供後續複用擴展,業務的服務器上不須要安裝agent,且可以爲證書私鑰提供加密保護。數據庫
原理式這樣的:json
Janusec工做在反向代理模式,收到請求後,會先檢查合法性,若是是攻擊行爲(Web攻擊如SQL注入、XSS等,或CC攻擊),就會攔截下來;若是是正常的訪問請求,就會放行。我決定安裝體驗一番。瀏覽器
首先,找到Janusec網關的快速入門介紹:https://www.janusec.com/cn/quick-start/ 安全
而後根據介紹的步驟進行安裝:服務器
$cd ~
$wgethttps://www.janusec.com/download/janusec-latest.tar.gz
$tar zxf ./janusec-latest.tar.gz架構
請切換到root用戶並運行 install.sh , janusec應用網關將安裝在目錄: /usr/local/janusec/
app
$su
#cd janusec-0.9.3
#./install.sh
選擇 1. Master Node
, 而後安裝程序會:
/usr/local/janusec/
PostgreSQL沒有包含在發佈包中,須要自行準備PostgreSQL數據庫、用戶名 、口令,可參考運維管理中的PostgreSQL安裝。
如今咱們假設您已經安裝好了PostgreSQL,且數據庫已建立,用戶名和口令已準備好。
而後編輯 /usr/local/janusec/config.json
:
{
「node_role」: 「master」,
「master_node」: {
「admin_http_listen」: 「:9080」,
「admin_https_listen」: 「:9443」,
「database」: {
「host」: 「127.0.0.1」,
「port」: 「5432」,
「user」: 「your_postgresql_user
」,
「password」: 「your_postgresql_password
」,
「dbname」: 「janusec
」
}
},
「slave_node」: {
「node_key」: 「」,
「sync_addr」: 「」
}
}
#systemctl start janusec.service
打開瀏覽器(好比Chrome),使用以下地址:
http://
網關IP地址
:9080/
這是Janusec應用網關的第一個管理地址(後面可啓用安全的管理地址)。
默認用戶名:admin
默認口令:J@nusec123
若是僅使用HTTP,不使用HTTPS,可跳過此步驟;但強烈建議配置證書並啓用HTTPS。
使用瀏覽器打開 http://您的網關IP地址
:9080/ 並添加一張數字證書。
若是您尚未數字證書,能夠從Let's Encrypt
申請免費的數字證書。
使用記事本打開兩個證書文件(個人證書是從Let's Encrypt
申請的,一個文件名是fullchain.pem,是公開的證書文件;另外一個是privkey.pem,是保密的私鑰文件),將其內容複製到Web管理控制檯。
使用瀏覽器打開 http://網關IP地址
:9080/ 並添加一個應用.
填寫應用名稱、實際服務器的 IP:端口
等信息。
生產環境,須要將修改DNS將您的域名指向網關地址。
測試環境,可直接修改您本地電腦的hosts文件: C:\Windows\System32\drivers\etc\hosts
.
配置完成後,驗證網關是否正常工做。
打開瀏覽器,訪問: http://your_domain_name
/
或
https://your_domain_name
/ .
若是能夠正常訪問,代表網關已正常工做。
安裝配置好以後,就來檢驗一下WAF(Web應用防火牆)是否工做正常。
使用以下測試用例:
http://domain_name/.svn/entries
http://domain_name/test?id=1 and 1=1
這時,當即看到了阻斷效果:
後面的使用就比較簡單了,個人WAF選型就此告一段落。
若是有不清楚的地方,也可參考官方網站上的說明:https://www.janusec.com/cn/ 。