企業運維實戰:Nginx服務器裝免費WAF,30分鐘搞定基礎防護

我們公司的業務服務器一直用Nginx做反向代理,跑着客户管理系統和訂單查詢接口,之前沒太在意防護,直到上個月出了次小故障——有個客户反饋訂單頁面加載慢,登錄服務器一看,CPU佔用快到90%,日誌裏全是重複的異常請求,雖然沒丟數據,但也影響了半天業務。

領導讓我負責加防護,要求很明確:不用花錢、別改現有Nginx配置、運維新人也能上手。我找了幾款免費工具,最後選定雷池社區版,部署下來感覺確實適合我們這種中小型企業的運維需求,今天把步驟整理出來,同行要是有類似需求,照着做基本不會錯。

我們的服務器環境是CentOS 7.6,Nginx版本1.20,提前確認過,只要是CentOS 7以上、Nginx 1.18+的環境,這套方法都能用。


一、部署前要做的準備

裝之前先檢查兩件事,省得後面出問題:

  • Nginx運行狀態:執行systemctl status nginx,確保是“active (running)”狀態,要是沒啓動就先執行systemctl start nginx
  • 端口占用:80和443端口不能被其他程序佔了,執行netstat -tuln | grep -E "80|443",只顯示Nginx的進程就沒問題。

另外,服務器要能連外網,因為要下載Docker和WAF鏡像,要是公司服務器有限制,提前找網絡組開下權限。


二、3步完成部署,都是複製粘貼的命令

雷池用Docker部署,不用手動裝一堆依賴,對運維來説省事兒不少。

第一步:裝Docker(10分鐘)

之前沒裝過Docker的,直接複製下面兩條命令,按順序執行:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker && systemctl enable docker

執行完等幾分鐘,輸入docker --version,能顯示版本號就説明裝好了。

第二步:拉取雷池鏡像並啓動(15分鐘)

就一條命令,複製進去回車,鏡像大概幾百兆,網速快的話10分鐘就好:

docker run -d --name leichi -p 80:80 -p 443:443 -v /etc/leichi:/etc/leichi --restart=always leichi/waf:community

這裏要注意,要是80端口被Nginx佔了,先執行systemctl stop nginx停掉Nginx,等WAF啓動後再重啓Nginx(systemctl start nginx),不然會提示端口衝突。

啓動後執行docker ps

第三步:獲取登錄密碼(5分鐘)

執行這條命令找初始密碼:

docker logs leichi | grep "初始密碼"

終端會輸出類似“初始密碼:XXXXXX”的內容,把密碼記下來,後面登錄控制枱要用。

三、關聯Nginx服務,讓防護生效

部署完還得把WAF和Nginx關聯上,不然防護沒效果,這步也簡單,不用改Nginx配置文件。

  1. 登錄控制枱:打開瀏覽器,輸入服務器的公網IP,賬號填“admin”,密碼用剛才記的初始密碼,第一次登錄會讓改密碼,隨便設個複雜點的就行;
  2. 添加網站:點擊左側“網站管理”→“添加網站”,重點填三個地方: - 網站域名:填服務器的公網IP或者綁定的域名,我們沒域名,直接填的IP; - 後端服務地址:填服務器的內網IP,在服務器上執行ip addr就能看到,一般是192.168開頭的; - 後端服務端口:填Nginx的端口,默認80;
  3. 點“保存”,等30秒左右,防護就生效了。

企業運維實戰:Nginx服務器裝免費WAF,30分鐘搞定基礎防護_企業網站防護

四、簡單測試下,確認防護有用

裝完最好測一下,心裏有底。我常用兩種簡單方法:

  • 瀏覽器測試:在地址欄輸入“http://服務器IP/?test=<script>”,要是顯示“請求被攔截”,説明能攔腳本注入;

企業運維實戰:Nginx服務器裝免費WAF,30分鐘搞定基礎防護_免費waf_02

  • 看日誌:登錄WAF控制枱,點“日誌管理”,能看到剛才的測試請求被標記為“腳本注入”,狀態是“攔截成功”。

五、運維中遇到的幾個小問題,提前避坑

我們用了快一個月,遇到過三個小問題,整理出來給大家參考:

  • Q:服務器重啓後,WAF沒啓動? A:部署命令里加了“--restart=always”,正常會自動啓動,要是沒啓動,執行docker start leichi就行;
  • Q:正常請求被誤攔了怎麼辦? A:在“日誌管理”裏找到誤攔的請求,點“加入白名單”,後續就不會攔了;
  • Q:想看看防護效果,在哪看數據? A:控制枱“統計報表”裏有請求次數、攔截次數這些數據,我們現在每天大概攔100多次異常請求,效果還可以。

六、總結

對我們這種中小型企業來説,免費的雷池社區版足夠應對基礎防護需求了。整個部署過程30分鐘左右,不用改現有業務配置,運維新人跟着步驟也能做。現在服務器CPU佔用穩定在40%左右,再也沒出現過之前的異常請求佔資源的情況,客户那邊也沒反饋過加載慢的問題。

要是你們公司的Nginx服務器也需要加防護,預算又有限,不妨試試這個方案,比自己寫防護腳本靠譜多了。

標籤:Nginx、服務器防護、WAF部署、企業運維