EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

如何使用 UFW 配置防火壠保護服務器

防火壠(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 或無響應。

以下是各個端口的用途:

  1. 22/tcp (SSH)

    • 狀態:Open
    • 功能:提供安全的遠程登錄和命令執行服務,常用於遠程管理 Linux/Unix 服務器。
    • 建議:如果不需要遠程登錄,應禁用或限制 IP 訪問(例如使用防火牆規則)。
  2. 80/tcp (HTTP)

    • 狀態:Open
    • 功能:提供未加密的 HTTP Web 服務,通常是網站的默認端口。
    • 建議:如果提供 Web 服務,應確保服務已正確配置並安全;如不需要 Web 服務,建議關閉。
  3. 443/tcp (HTTPS)

    • 狀態:Open
    • 功能:提供加密的 HTTP Web 服務(HTTPS),適用於安全的網站訪問。
    • 建議:確保 SSL/TLS 配置正確,並使用最新的協議和加密方式。
  4. 3306/tcp (MySQL)

    • 狀態:Open
    • 功能:MySQL 數據庫服務的默認端口,用於數據庫連接。
    • 建議:限制訪問 IP(僅允許可信主機連接),並確保密碼強度和 MySQL 安全配置。

Filtered(過濾)的端口

  1. 17/tcp (qotd)

    • 功能:Quote of the Day,舊式的測試或調試服務,基本無用。
    • 建議:確保此服務已被禁用,防止潛在攻擊。
  2. 19/tcp (chargen)

    • 功能:Character Generator Protocol,舊式測試服務,無現代用途。
    • 建議:應禁用,避免用於放大攻擊。
  3. 135/tcp (MSRPC)

    • 功能:Windows 系統的 RPC(遠程過程調用)服務。
    • 建議:如果是非 Windows 系統或無需該功能,應禁用。
  4. 139/tcp (netbios-ssn)

    • 功能:NetBIOS Session Service,通常與文件和打印機共享服務相關。
    • 建議:如果不需要文件共享,應禁用該服務。
  5. 445/tcp (Microsoft-DS)

    • 功能:SMB 協議,用於文件共享和其他 Windows 網絡功能。
    • 建議:關閉該端口或限制訪問 IP,避免勒索軟件等攻擊。

This article was last edited at 2025-01-07 13:04:05

* *