防火壠(Firewall)是保護服務器安全的重要工具,可以有效阻止未經授權的流量,防範掃描和攻擊。本文將重點講解如何使用 UFW (Uncomplicated Firewall)配置防火壠規則,關閉不必要的端口並允許必要的服務,從而實現全面的安全保護。
1. 確認 UFW 狀態
首先,檢查服務器是否已安裝並啟用了 UFW:
sudo ufw status
-
如果顯示
inactive
,則說明 UFW 已安裝但未啟用。 -
如果未安裝,請使用以下命令進行安裝:
sudo apt update
sudo apt install ufw
啟用 UFW:
sudo ufw enable
啟用後,UFW 會顯示類似提示:
Firewall is active and enabled on system startup
2. 設置防火壠規則
UFW 的核心功能是通過規則控制流量的進入和離開。以下是如何關閉不必要的端口以及允許必要的服務。
關閉指定端口
以下命令將阻止指定端口的流量:
sudo ufw deny 17/tcp # 阻止 QOTD 端口
sudo ufw deny 19/tcp # 阻止 Chargen 端口
sudo ufw deny 135/tcp # 阻止 MSRPC 端口
sudo ufw deny 139/tcp # 阻止 NetBIOS 端口
sudo ufw deny 445/tcp # 阻止 Microsoft-DS (SMB) 端口
這些端口通常是舊式或不必要的服務端口,關閉它們可以減少攻擊面。
查看當前規則
運行以下命令檢查已設置的防火壠規則:
sudo ufw status
示例輸出:
To Action From
-- ------ ----
17/tcp DENY Anywhere
19/tcp DENY Anywhere
135/tcp DENY Anywhere
139/tcp DENY Anywhere
445/tcp DENY Anywhere
3. 允許必要的端口
防火壠的默認策略是阻止所有未授權的進入流量,但為了確保服務正常運行,應允許必要的端口:
-
SSH(22/tcp):允許遠程登錄。
-
HTTP(80/tcp)和 HTTPS(443/tcp):允許 Web 流量。
-
MySQL(3306/tcp):如果需要遠程訪問 MySQL,允許該端口。
設置命令如下:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3306/tcp
檢查規則是否生效:
sudo ufw status
4. 配置默認策略
為了進一步提高安全性,可以設置默認策略:
-
拒絕所有進入流量:
sudo ufw default deny incoming
- 允許所有離開流量:
sudo ufw default allow outgoing
5. 測試防火壠設置
設置完成後,可以使用工具測試防火壠是否正常工作。
使用 Nmap 測試
從另一台設備執行以下命令:
nmap -p 1-65535 <your_server_ip>
-
允許的端口:如 22、80、443,應顯示為
open
。 -
被過濾的端口:如 17、19、135,應顯示為
filtered
或無響應。
以下是各個端口的用途:
-
22/tcp (SSH)
- 狀態:Open
- 功能:提供安全的遠程登錄和命令執行服務,常用於遠程管理 Linux/Unix 服務器。
- 建議:如果不需要遠程登錄,應禁用或限制 IP 訪問(例如使用防火牆規則)。
-
80/tcp (HTTP)
- 狀態:Open
- 功能:提供未加密的 HTTP Web 服務,通常是網站的默認端口。
- 建議:如果提供 Web 服務,應確保服務已正確配置並安全;如不需要 Web 服務,建議關閉。
-
443/tcp (HTTPS)
- 狀態:Open
- 功能:提供加密的 HTTP Web 服務(HTTPS),適用於安全的網站訪問。
- 建議:確保 SSL/TLS 配置正確,並使用最新的協議和加密方式。
-
3306/tcp (MySQL)
- 狀態:Open
- 功能:MySQL 數據庫服務的默認端口,用於數據庫連接。
- 建議:限制訪問 IP(僅允許可信主機連接),並確保密碼強度和 MySQL 安全配置。
Filtered(過濾)的端口
-
17/tcp (qotd)
- 功能:Quote of the Day,舊式的測試或調試服務,基本無用。
- 建議:確保此服務已被禁用,防止潛在攻擊。
-
19/tcp (chargen)
- 功能:Character Generator Protocol,舊式測試服務,無現代用途。
- 建議:應禁用,避免用於放大攻擊。
-
135/tcp (MSRPC)
- 功能:Windows 系統的 RPC(遠程過程調用)服務。
- 建議:如果是非 Windows 系統或無需該功能,應禁用。
-
139/tcp (netbios-ssn)
- 功能:NetBIOS Session Service,通常與文件和打印機共享服務相關。
- 建議:如果不需要文件共享,應禁用該服務。
-
445/tcp (Microsoft-DS)
- 功能:SMB 協議,用於文件共享和其他 Windows 網絡功能。
- 建議:關閉該端口或限制訪問 IP,避免勒索軟件等攻擊。