在樹莓派上設定 UFW 防火牆

Jinku Hu 2023年1月30日 2022年5月18日
  1. UFW - 簡單的防火牆基礎和安裝
  2. UFW - 允許 SSH 流量到 Raspberry Pi 規則
  3. UFW - 刪除現有規則
  4. UFW - 基於 IP 地址或範圍的阻止規則
在樹莓派上設定 UFW 防火牆

本文將介紹在樹莓派上搭建 UFW 防火牆的幾種場景。

UFW - 簡單的防火牆基礎和安裝

UFW(Uncomplicated FireWall)是一個前端程式,用於操作 Linux 核心包過濾子系統的規則,稱為 NetFilter。由於後者是一個 Linux 核心模組,它需要一個使用者空間應用程式來為終端使用者提供配置和管理工具。

它主要由 iptablesip6tables 實用程式完成,可用於設定和檢查 Linux 核心中的 IPv4/IPv6 資料包過濾規則表。儘管 iptables 配置對於新的 Linux 使用者和管理員來說可能很麻煩,但存在另一層前端防火牆程式(例如,UFW)以簡化配置管理併為 iptables 提供更簡單的介面。

UFW 是預設 Ubuntu 軟體包的一部分,也可在 Raspberry Pi OS 中從官方儲存庫安裝。你可以使用以下命令安裝 UFW:

sudo apt install ufw

安裝 UFW 包後,我們可以在系統啟動時啟用它並根據需要配置規則。下一個命令可用於使防火牆在啟動時執行以及立即啟動該程序:

sudo ufw enable

請注意,前面的命令顯示現有 SSH 連線可能被中斷的警告,因此你可能希望在沒有遠端連線的情況下執行這些命令,以免被鎖定在機器之外。

此時,UFW 為傳入和傳出流量設定了一些預設規則,前者被拒絕,後者 - 允許。可以使用以下命令檢查防火牆的當前狀態:

sudo ufw status

或者,你可能希望在上一個命令中新增 verbosenumbered 選項以顯示當前規則和額外資訊:

sudo ufw status verbose
sudo ufw status numbered

UFW - 允許 SSH 流量到 Raspberry Pi 規則

通常,SSH 使用埠號 - 22,因此我們會將其包含在以下命令中,但你可以讓 SSH 監聽不同的埠。後者可以通過修改位於 /etc/ssh/sshd_config 路徑的 SSH 配置檔案 sshd_config 來實現。如果要允許與 Pi 的任何 SSH 連線,請執行以下命令。

sudo ufw allow 22

另一方面,你可能希望限制 SSH 連線,以便只允許特定 IP 地址訪問主機。你可以針對不同的 IP 地址重新執行以下命令,以新增允許連線到給定服務的所有例外。

sudo ufw allow proto tcp from 10.10.10.1 to any port 22

UFW - 刪除現有規則

可以使用 ufw delete 命令刪除 UFW 中的現有規則。你應該指定要刪除它的規則的編號。請注意,可以使用 sudo ufw status number 命令列出編號規則。在這種情況下,我們將刪除上一個示例命令設定的規則,該命令恰好編號為第三個。

sudo ufw delete 3

UFW - 基於 IP 地址或範圍的阻止規則

可以阻止某些 IP 地址和範圍與 Raspberry Pi 建立網路連線。即,將使用以下命令阻止特定的 IP 地址(例如 10.10.10.1)。

sudo ufw deny from 10.10.10.1

或者,如果你執行以下命令,則可以阻止整個子網。

sudo ufw deny from 10.10.10.0/24
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - Raspberry Pi