verynginx-web防火牆


VeryNginx

轉載:https://github.com/alexazhou/VeryNginx

VeryNginx 是一個功能強大而對人類友好的 Nginx 擴展程序.

提示

v0.2 版本之后,控制台入口被移動到了 /verynginx/index.html

介紹

VeryNginx 基於 lua_nginx_module(openrestry) 開發,實現了高級的防火牆、訪問統計和其他的一些功能。 集成在 Nginx 中運行,擴展了 Nginx 本身的功能,並提供了友好的 Web 交互界面。

VeryNginx在線實例

用戶名 / 密碼: verynginx / verynginx

詳細配置說明見:VeryNginx Github WiKi

Nginx 運行狀態分析

  • 每秒請求數
  • 響應時間
  • 網絡流量
  • 網絡連接數

Nginx 運行狀態

自定義行為

VeryNginx 包含強大的自定義功能,可以做很多事情

自定義行為包含兩部分, Matcher 和 Action 。 Matcher 用來對請求進行匹配, Action 為要執行的動作

這樣的優勢在於把所有的前置判斷整合在Matcher里一起來實現了,使復雜(組合)規則的實現變成了可能

Matcher

一個 Matcher 用來判斷一個 Http 請求是否符合指定的條件, 一個 Matcher 可以包含一個或者多個約束條件,目前支持以下幾種約束:

  • Client IP
  • Host
  • UserAgent
  • URI
  • Referer
  • Request Args

當一個請求沒有違反 Matcher 中包含的全部條件時,即命中了這個 Matcher

Action

每個 Action 會引用一個 Matcher ,當 Matcher 命中時, Action 會被執行

目前已經實現了以下 Action

  • Scheme Lock 將訪問協議鎖定為 Https 或者 Http
  • Redirect 對請求進行重定向
  • URI Rewrite 對請求的 URI 進行內部重寫
  • Browser Verify 通過set-cookies 和 js 驗證客戶端是否為瀏覽器,並攔截非瀏覽器流量。本功能可能會阻攔搜索引擎爬蟲,建議僅在被攻擊時開啟,或者針對搜索引擎編寫特別的規則。
  • Frequency Limit 訪問頻率限制
  • Filter(waf) 過濾器

因為 Matcher 可以對請求進行細致的匹配,所以結合 Filter Action,就可以實現一個高級的WAF,可以利用Matcher中所有的條件來對請求進行過濾,並返回指定狀態碼

VeryNginx 預置了常用的過濾規則,可以在一定程度上阻止常見的 SQL 注入、Git 及 SVN 文件泄露、目錄遍歷攻擊,並攔截常見的掃描工具。

VeryNginx Matcher

VeryNginx filter

Backend

每個 Backend 會引用一個 Matcher ,當 Matcher 命中時, 請求會通過 Backend 進行處理

目前已經實現了以下 Backend

  • Proxy Pass 將請求反向代理到其它服務器
  • Static File 使用本地文件處理請求

訪問統計

VeryNginx 可以統計網站每個URI的訪問情況,包括每個URI的:

  • 總請求次數
  • 各狀態碼次數
  • 返回總字節數
  • 每請求平均字節數
  • 總響應時間
  • 平均響應時間

並且可以按各種規則排序進行分析。

Nginx 運行狀態

安裝和使用說明

VeryNginx 基於 OpenResty[^openresty],所以安裝 VeryNginx 需要先安裝好 OpenResty。不過並不用擔心安裝過程中可能的麻煩,VeryNginx 自身提供了腳本來進行安裝工作。

安裝 VeryNginx

克隆 VeryNginx 倉庫到本地, 然后進入倉庫目錄,執行以下命令

python install.py install

即可一鍵安裝 VeryNginx 和 以及依賴的 OpenResty

想使用自己的 Nginx?

VeryNginx 可以自動為你安裝依賴的 OpenResty,通常情況下你沒有必要再自己安裝 OpenResty。

但如果你想要使用自己編譯的 Nginx( OpenResty ),也是可以的。具體方法請閱讀Wiki中的這篇說明:Use own nginx

使用

編輯 Nginx 配置文件

VeryNginx 的配置文件位置為 /opt/verynginx/openresty/nginx/conf/nginx.conf,這是一個簡單的示例文件,可以讓你訪問到 VeryNginx的控制面板。如果你想真正的用 VeryNginx 來做點什么,那你需要編輯這個文件,並將自己的 Nginx 配置加入到其中。

這個配置文件在普通的 Nginx 配置文件基礎上添加了三條 Include 指令來實現功能,分別為

  • include /opt/verynginx/verynginx/nginx_conf/in_external.conf;
  • include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf;
  • include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;

以上三條指令分別放在 http 配置塊外部,http 配置塊內部,server 配置塊內部,在修改時請保留這三條。如果添加了新的 Server 配置塊或 http 配置塊,也需要在新的塊內部加入對應的 include 行。

啟動/停止/重啟 服務

完成安裝工作以后,可以通過以下命令來運行 VeryNginx

#啟動服務
/opt/verynginx/openresty/nginx/sbin/nginx

#停止服務
/opt/verynginx/openresty/nginx/sbin/nginx -s stop

#重啟服務
/opt/verynginx/openresty/nginx/sbin/nginx -s reload

通過web面板對 VeryNginx 進行配置

VeryNginx 啟動后,可以通過瀏覽器訪問管理面板來查看狀態以及進行配置。

管理面板地址為 http://{{your_machine_address}}/verynginx/index.html

默認用戶名和密碼是 verynginx / verynginx

登錄之后就可以查看狀態,並對配置進行修改了。修改配置后,點擊保存才會生效.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM