Linux 防火牆與安全管理工具詳解

小短腿跑得快發表於2024-09-27

Linux 防火牆與安全管理工具詳解

1. Iptables 概述

Iptables 是 Linux 系統中用於控制網路流量的工具,透過定義規則來過濾、轉發和修改資料包。其規則可以細緻地管理進入和離開系統的資料流。

1.1 三表五鏈

image

1.1.1 三表

Iptables 中主要有三種表,每種表用於不同的操作:

  1. filter 表

    • 作用:負責資料包的過濾,決定哪些資料包被允許透過。
    • 主要鏈
      • INPUT:處理進入防火牆的資料包。
      • OUTPUT:處理從防火牆發出的資料包。
      • FORWARD:處理經過防火牆轉發的資料包。
  2. nat 表

    • 作用:用於網路地址轉換,修改資料包的源或目標地址。
    • 主要鏈
      • PREROUTING:在路由決策之前處理資料包。
      • POSTROUTING:在資料包離開防火牆之前處理。
      • OUTPUT:處理由本機生成的資料包。
  3. mangle 表

    • 作用:用於修改資料包的某些特性,例如 TOS、TTL 和標記。
    • 主要鏈
      • PREROUTING:在資料包路由決策前處理。
      • POSTROUTING:在資料包離開防火牆前處理。
      • INPUT:處理進入防火牆的資料包。
      • OUTPUT:處理從防火牆發出的資料包。
      • FORWARD:處理轉發的資料包。

1.1.2 五鏈

Iptables 中的五個鏈分別為:

  1. INPUT:處理進入防火牆的流量。
  2. OUTPUT:處理從防火牆出去的流量。
  3. FORWARD:處理轉發流量。
  4. PREROUTING:所有進入防火牆的資料包首先經過這個鏈。
  5. POSTROUTING:所有從防火牆出去的資料包經過這個鏈。

1.2 Iptables 示例

1.2.1 允許 SSH 訪問並拒絕其他流量(filter 表)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
解析:允許 SSH 訪問,所有其他流量將被拒絕。

1.2.2 埠轉發示例(nat 表)

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080
iptables -t nat -A POSTROUTING -j MASQUERADE
解析:將外部訪問的 HTTP 流量轉發到內部伺服器。

1.2.3 修改 TOS 示例(mangle 表)

iptables -t mangle -A OUTPUT -p tcp --dport 80 -j TOS --set-tos 0x10
解析:修改傳送到 HTTP 的資料包的 TOS 欄位。

2. UFW(Uncomplicated Firewall)

2.1 概述

UFW 是一種用於簡化 Iptables 操作的防火牆管理工具,主要用於 Ubuntu 系統。它提供了易於使用的命令列和圖形介面。

2.2 主要特點

易於使用:透過簡化的命令,使使用者能夠快速設定防火牆規則。
預設策略:可以輕鬆設定預設的允許或拒絕規則。
狀態管理:支援檢視防火牆狀態和已配置的規則。

2.3 示例

2.3.1 啟用 UFW

ufw enable

2.3.2 允許 SSH

ufw allow ssh

2.3.3 拒絕 HTTP

ufw deny http

3. SELinux(Security-Enhanced Linux)

3.1 概述

SELinux 是一種強制訪問控制(MAC)機制,提供額外的安全層,控制系統中程序和物件的互動。它由 NSA 開發,並整合到許多 Linux 發行版中。

3.2 主要特點

細粒度控制:可以根據安全策略精確控制訪問許可權。
強制執行:不允許繞過設定的安全策略。
上下文管理:每個檔案和程序都有安全上下文,以定義訪問許可權。

3.3 示例

3.3.1 檢視 SELinux 狀態

sestatus

3.3.2 設定 SELinux 為寬鬆模式

setenforce 0

3.3.3 設定 SELinux 為強制模式

setenforce 1

4. Firewalld

4.1 概述

Firewalld 是一種動態防火牆管理工具,旨在替代 Iptables。它使用區域和服務的概念來管理規則,允許使用者動態地新增和刪除規則。

4.2 主要特點

區域管理:根據網路的不同區域(如內部、外部)設定不同的規則。
服務管理:可以使用服務名稱來管理規則,而不是使用埠號。
動態更新:支援動態新增、刪除規則,無需重啟防火牆。

4.3 示例

4.3.1 啟動 Firewalld

systemctl start firewalld

4.3.2 允許 SSH 服務

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

4.3.3 檢視當前規則

firewall-cmd --list-all

Iptables、UFW、SELinux 和 Firewalld 是 Linux 系統中重要的安全管理工具。它們各自有不同的應用場景和特點,能夠有效保護系統安全。透過合理配置這些工具,可以實現強大的網路安全策略。

相關文章