本文介紹在LNMP (Linux, Nginx, mysql, php) 環(huán)境下配置防火墻的多種方法,選擇哪種方法取決于你的Linux發(fā)行版和具體需求。
方法一:使用iptables
iptables是Linux系統(tǒng)中常用的防火墻工具。
-
查看當(dāng)前規(guī)則: 使用 sudo iptables -L 命令查看當(dāng)前iptables規(guī)則。
-
設(shè)置默認(rèn)策略: 設(shè)置默認(rèn)策略為拒絕所有入站連接,允許所有出站連接:
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
-
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
-
保存規(guī)則: 使用 sudo iptables-save > /etc/iptables/rules.v4 保存規(guī)則 (路徑可能因系統(tǒng)而異)。
-
啟用并啟動iptables: 使用你的系統(tǒng)管理工具啟用并啟動iptables服務(wù) (例如 sudo systemctl enable iptables 和 sudo systemctl start iptables )。 重啟iptables服務(wù)使配置生效 (sudo systemctl restart iptables)。
方法二:使用firewalld
firewalld是許多現(xiàn)代Linux發(fā)行版中更用戶友好的防火墻管理工具。
-
查看firewalld狀態(tài): 使用 sudo systemctl status firewalld 命令查看firewalld的狀態(tài)。
-
關(guān)閉firewalld (可選): 如果你想完全禁用firewalld,可以使用 sudo systemctl stop firewalld 和 sudo systemctl disable firewalld 命令。 注意: 不建議完全禁用防火墻,除非你完全了解風(fēng)險。
-
添加服務(wù): 允許HTTP和HTTPS服務(wù):
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https
-
重新加載配置: 使用 sudo firewall-cmd –reload 命令重新加載firewalld配置。
方法三:使用ngx_lua_waf (Web應(yīng)用防火墻)
ngx_lua_waf是一個基于Nginx和lua的Web應(yīng)用防火墻,提供更高級的防護(hù)功能。這需要一定的Lua和nginx配置經(jīng)驗。
-
安裝ngx_lua_waf: 下載并安裝ngx_lua_waf (安裝步驟可能因版本而異,請參考ngx_lua_waf的官方文檔)。
-
配置Nginx: 在你的Nginx配置文件中添加ngx_lua_waf模塊的配置,包括規(guī)則路徑、日志路徑、白名單和黑名單等。 (請參考ngx_lua_waf的官方文檔進(jìn)行詳細(xì)配置)。
-
重啟Nginx: 使用 sudo service nginx reload 命令重啟Nginx使配置生效。
選擇以上方法中的任何一種,都需要根據(jù)你的實際情況進(jìn)行調(diào)整。 記住在修改防火墻規(guī)則后,務(wù)必測試你的應(yīng)用是否能夠正常訪問。 不正確的防火墻配置可能會導(dǎo)致你的服務(wù)器無法訪問。 強烈建議在生產(chǎn)環(huán)境中進(jìn)行操作前,先在測試環(huán)境中進(jìn)行測試。