企業運維實戰: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配置文件。
- 登錄控制枱:打開瀏覽器,輸入服務器的公網IP,賬號填“admin”,密碼用剛才記的初始密碼,第一次登錄會讓改密碼,隨便設個複雜點的就行;
- 添加網站:點擊左側“網站管理”→“添加網站”,重點填三個地方: - 網站域名:填服務器的公網IP或者綁定的域名,我們沒域名,直接填的IP; - 後端服務地址:填服務器的內網IP,在服務器上執行
ip addr就能看到,一般是192.168開頭的; - 後端服務端口:填Nginx的端口,默認80; - 點“保存”,等30秒左右,防護就生效了。
四、簡單測試下,確認防護有用
裝完最好測一下,心裏有底。我常用兩種簡單方法:
- 瀏覽器測試:在地址欄輸入“http://服務器IP/?test=<script>”,要是顯示“請求被攔截”,説明能攔腳本注入;
- 看日誌:登錄WAF控制枱,點“日誌管理”,能看到剛才的測試請求被標記為“腳本注入”,狀態是“攔截成功”。
五、運維中遇到的幾個小問題,提前避坑
我們用了快一個月,遇到過三個小問題,整理出來給大家參考:
- Q:服務器重啓後,WAF沒啓動? A:部署命令里加了“--restart=always”,正常會自動啓動,要是沒啓動,執行
docker start leichi就行; - Q:正常請求被誤攔了怎麼辦? A:在“日誌管理”裏找到誤攔的請求,點“加入白名單”,後續就不會攔了;
- Q:想看看防護效果,在哪看數據? A:控制枱“統計報表”裏有請求次數、攔截次數這些數據,我們現在每天大概攔100多次異常請求,效果還可以。
六、總結
對我們這種中小型企業來説,免費的雷池社區版足夠應對基礎防護需求了。整個部署過程30分鐘左右,不用改現有業務配置,運維新人跟着步驟也能做。現在服務器CPU佔用穩定在40%左右,再也沒出現過之前的異常請求佔資源的情況,客户那邊也沒反饋過加載慢的問題。
要是你們公司的Nginx服務器也需要加防護,預算又有限,不妨試試這個方案,比自己寫防護腳本靠譜多了。
標籤:Nginx、服務器防護、WAF部署、企業運維