banner
moeyy

moeyy

一条有远大理想的咸鱼。
github
mastodon
email

VPS主機部署Web應用防火牆Ngx_lua_waf抵抗CC攻擊,保護資料安全

服務簡介#

越來越多的人使用 VPS 主機建站,但是與虛擬主機或者管理型的伺服器相比,個人 VPS 主機基本上是無管理型的,即主機商只負責 VPS 主機的網路暢通,至於技術上的問題都得靠自己來解決。網站經常會受到一些自動化工具的掃描、注入、溢出掛馬等等的情況。

image

商用虛擬主機有專門的運維工程師做好安全防範工作,正如上面所說 VPS 等等的虛擬雲機是沒有什麼專門人員輔助運維的,這需要我們自己來進行操作,今天給他家介紹一款非常不錯的 Nginx(openresty)WEB 應用防火牆模塊 ngx_lua_waf。ngx_lua_waf 一個基於 ngx_lua 的 web 應用防火牆,代碼非常的簡單,開發者的初衷是方便使用,在高性能的同時保留其輕量級的特點。

Ngx_lua_waf 的主要作用#

防止sql注入,本地包含,部分溢出,fuzzing測試,xss,SSRF等web攻擊
防止svn/備份之類文件洩漏
防止ApacheBench之類壓力測試工具的攻擊
屏蔽常見的掃描黑客工具,掃描器
屏蔽異常的網路請求
屏蔽圖片附件類目錄php執行權限
防止webshell上傳

這裡我們可以看出 Ngx_lua_waf 的功能還是相當豐富的,可以有效的拒絕大部分掃描攻擊,對於防止網站被掛馬有著非常顯著的作用。

安裝要求#

Ngx_lua_waf 的作者推薦使用 lujit2.1 做 lua 的支持,ngx_lua 如果是 0.9.2 以上版本,建議正則過濾函數改為 ngx.re.find,匹配效率會提高三倍左右。我們的 Nginx 只需要編譯 lua 支持就可以部署這款 WEB 應用防火牆,為我們的伺服器添加一道安全門。

使用說明#

我們假設 nginx 安裝路徑為:/usr/local/nginx/conf/

我們只需要把 ngx_lua_waf 下載到 conf 目錄下,解壓命名為 waf 即可,在 nginx.conf 的 http 段添加,或者單獨寫作一個 conf 文件,使用 include 引用到 nginx.conf 中亦可。

lua_package_path "/usr/local/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file  /usr/local/nginx/conf/waf/init.lua;
access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;

配置 config.lua 裡的 waf 規則目錄 (一般在 waf/conf/ 目錄下)

RulePath = "/usr/local/nginx/conf/waf/wafconf/"

然後我們按照調試準則,先運行 nginx -t 檢測一下配置是否正確,如果提示成功加載我們再重啟 nginx 即可。

配置文件詳細說明:#

  • RulePath = "/usr/local/nginx/conf/waf/wafconf/"
  •     -- 規則存放目錄
  •     attacklog = "off"
  •     -- 是否開啟攻擊信息記錄,需要配置 logdir
  •     logdir = "/usr/local/nginx/logs/hack/"
  •     --log 存儲目錄,該目錄需要用戶自己新建,切需要 nginx 用戶的可寫權限
  •     UrlDeny="on"
  •     -- 是否攔截 url 訪問
  •     Redirect="on"
  •     -- 是否攔截後重定向
  •     CookieMatch = "on"
  •     -- 是否攔截 cookie 攻擊
  •     postMatch = "on"
  •     -- 是否攔截 post 攻擊
  •     whiteModule = "on"
  •     -- 是否開啟 URL 白名單
  •     black_fileExt={"php","jsp"}
  •     -- 填寫不允許上傳文件後綴類型
  •     ipWhitelist={"127.0.0.1"}
  •     --ip 白名單,多個 ip 用逗號分隔
  •     ipBlocklist={"1.0.0.1"}
  •     --ip 黑名單,多個 ip 用逗號分隔
  •     CCDeny="on"
  •     -- 是否開啟攔截 cc 攻擊 (需要 nginx.conf 的 http 段增加 lua_shared_dict limit 10m;)
  •     CCrate = "100/60"
  •     -- 設置 cc 攻擊頻率,單位為秒.
  •     -- 默認 1 分鐘同一個 IP 只能請求同一個地址 100 次
  •     html=[[Please go away~~]]
  •     -- 警告內容,可在中括號內自定義
  •     備註:不要亂動雙引號,區分大小寫
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。