UFW(Uncomplicated Firewall)是Ubuntu默認的防火墻管理工具,基于iptables構建,操作簡單。首先更新軟件包列表并安裝UFW:
sudo apt update
sudo apt install ufw
安裝完成后,啟用UFW(啟用后會攔截所有未明確允許的入站流量):
sudo ufw enable
系統會提示“Command may disrupt existing ssh sessions”,輸入y
確認啟用。
為遵循“最小權限原則”,建議設置默認規則:拒絕所有入站流量、允許所有出站流量(服務器自身發起的請求不受限制):
sudo ufw default deny incoming
sudo ufw default allow outgoing
這一步是防火墻安全的基礎,能有效減少未授權訪問的風險。
LNMP環境(Linux+Nginx+MySQL+PHP)需要開放以下端口,確保服務正常運行:
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 3306/tcp # MySQL
fastcgi_pass
一致):sudo ufw allow 9000/tcp # PHP-FPM
sudo ufw allow from <你的IP地址> to any port 22 # 替換<你的IP地址>為實際IP
若暫時不確定IP,可先允許所有IP訪問(后續再修改):sudo ufw allow 22/tcp # SSH(臨時)
SSH端口(22)是黑客攻擊的高頻目標,可通過limit
命令限制連接速率(如每分鐘最多6次嘗試),觸發閾值后自動拒絕后續連接:
sudo ufw limit 22/tcp
此功能能有效降低暴力破解風險,即使密碼泄露也能延緩攻擊進度。
verbose
參數可顯示詳細信息(如端口對應的協議):sudo ufw status verbose
輸出示例:Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW Anywhere # SSH
80/tcp ALLOW Anywhere # HTTP
443/tcp ALLOW Anywhere # HTTPS
3306/tcp ALLOW Anywhere # MySQL
9000/tcp ALLOW Anywhere # PHP-FPM
22/tcp (v6) ALLOW Anywhere (v6) # SSH
sudo ufw status numbered # 列出規則及編號
sudo ufw delete 3 # 刪除編號為3的規則(如3306/tcp)
http://<服務器IP>
),應能正常顯示Nginx歡迎頁面;訪問443端口(如https://<服務器IP>
),應能跳轉至HTTPS頁面。ssh username@<服務器IP>
),應能正常連接;若限制了IP,其他IP應無法連接。active
狀態(sudo ufw status
顯示“Status: active”),否則規則不會生效。