Linux 防火牆與安全管理工具詳解
1. Iptables 概述
Iptables 是 Linux 系統中用於控制網路流量的工具,透過定義規則來過濾、轉發和修改資料包。其規則可以細緻地管理進入和離開系統的資料流。
1.1 三表五鏈
1.1.1 三表
Iptables 中主要有三種表,每種表用於不同的操作:
-
filter 表
- 作用:負責資料包的過濾,決定哪些資料包被允許透過。
- 主要鏈:
- INPUT:處理進入防火牆的資料包。
- OUTPUT:處理從防火牆發出的資料包。
- FORWARD:處理經過防火牆轉發的資料包。
-
nat 表
- 作用:用於網路地址轉換,修改資料包的源或目標地址。
- 主要鏈:
- PREROUTING:在路由決策之前處理資料包。
- POSTROUTING:在資料包離開防火牆之前處理。
- OUTPUT:處理由本機生成的資料包。
-
mangle 表
- 作用:用於修改資料包的某些特性,例如 TOS、TTL 和標記。
- 主要鏈:
- PREROUTING:在資料包路由決策前處理。
- POSTROUTING:在資料包離開防火牆前處理。
- INPUT:處理進入防火牆的資料包。
- OUTPUT:處理從防火牆發出的資料包。
- FORWARD:處理轉發的資料包。
1.1.2 五鏈
Iptables 中的五個鏈分別為:
- INPUT:處理進入防火牆的流量。
- OUTPUT:處理從防火牆出去的流量。
- FORWARD:處理轉發流量。
- PREROUTING:所有進入防火牆的資料包首先經過這個鏈。
- 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 系統中重要的安全管理工具。它們各自有不同的應用場景和特點,能夠有效保護系統安全。透過合理配置這些工具,可以實現強大的網路安全策略。