在 Linux 環境中,強化網路安全設定至關重要。本文將探討如何透過調整核心引數、停用不必要的網路協定以及設定防火牆規則,有效提升系統的安全性,抵禦潛在的網路攻擊和漏洞利用。文章將涵蓋 TCP SYN Cookies 的啟用、禁止接受 IPv6 路由器廣告、停用 DCCP、SCTP、RDS 和 TIPC 等罕見網路協定,並探討 UFW 和 nftables 防火牆的設定與最佳實務。這些設定調整能有效減少系統攻擊面,降低遭受 SYN Flood 等拒絕服務攻擊的風險,並確保網路流量的安全性。
加強 Linux 系統網路安全性的設定
3.3.8 啟用 TCP SYN Cookies 保護
設定說明
當系統啟用 tcp_syncookies 後,核心會正常處理 TCP SYN 封包,直到半開連線佇列滿載時,SYN Cookie 功能才會啟動。SYN Cookies 的運作原理是不使用 SYN 佇列,而是直接回應 SYN 封包一個包含特別設計的 TCP 序號的 SYN|ACK 封包,該序號編碼了來源和目的地的 IP 位址、埠號以及封包傳送時間。合法的連線會在三次握手過程中傳送包含該特別序號的 ACK 封包,使系統能夠驗證該回應的有效性並允許連線。
安全理由
攻擊者利用 SYN Flood 攻擊進行拒絕服務攻擊,傳送大量 SYN 封包而不完成三次握手,迅速佔滿核心的半開連線佇列,阻止合法連線。啟用 SYN Cookies 可讓系統在遭受拒絕服務攻擊時仍能接受合法連線。
稽核方法
執行以下指令並確認輸出結果符合預期:
sysctl net.ipv4.tcp_syncookies
grep "net\.ipv4\.tcp_syncookies" /etc/sysctl.conf /etc/sysctl.d/*
修復建議
- 編輯
/etc/sysctl.conf或/etc/sysctl.d/目錄下的檔案,加入以下設定:
net.ipv4.tcp_syncookies = 1
2. 執行以下指令以套用核心引數變更:
```bash
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.route.flush=1
3.3.9 禁止接受 IPv6 路由器廣告
設定說明
此設定禁止系統接受 IPv6 路由器廣告。
安全理由
建議系統不要接受路由器廣告,以避免被誘導將流量導向受損的主機。在系統中設定固定的路由(通常是單一預設路由指向可信任的路由器)可保護系統免受錯誤路由的影響。
稽核方法
如果 IPv6 已啟用:
sysctl net.ipv6.conf.all.accept_ra
sysctl net.ipv6.conf.default.accept_ra
grep "net\.ipv6\.conf\.all\.accept_ra" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv6\.conf\.default\.accept_ra" /etc/sysctl.conf /etc/sysctl.d/*
或者驗證 IPv6 是否已停用:
grep "^\s*linux" /boot/grub/grub.cfg | grep -v "ipv6.disable=1"
修復建議
如果 IPv6 已啟用:
- 編輯
/etc/sysctl.conf或/etc/sysctl.d/目錄下的檔案,加入以下設定:
net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.default.accept_ra = 0
2. 執行以下指令以套用核心引數變更:
```bash
sysctl -w net.ipv6.conf.all.accept_ra=0
sysctl -w net.ipv6.conf.default.accept_ra=0
sysctl -w net.ipv6.route.flush=1
3.5 罕見網路協定的處理
Linux 核心模組支援多種不常用的網路協定。如果這些協定不是必要的,建議在核心中停用它們。
3.5.1 停用 DCCP
設定說明
DCCP(資料報擁塞控制協定)是一種傳輸層協定,支援串流媒體和語音通訊。DCCP 提供了一種方式來存取擁塞控制,而無需在應用層實作,但不保證資料包的順序傳遞。
安全理由
如果不需要該協定,建議不安裝相關驅動程式,以減少潛在的攻擊面。
稽核方法
執行以下指令並確認輸出結果符合預期:
modprobe -n -v dccp
lsmod | grep dccp
修復建議
- 編輯或建立
/etc/modprobe.d/目錄下的.conf檔案,例如:vi /etc/modprobe.d/dccp.conf - 新增以下設定:
install dccp /bin/true
### 3.5.2 停用 SCTP
#### 設定說明
SCTP(串流控制傳輸協定)是一種傳輸層協定,用於支援訊息導向的通訊,並在一個連線中提供多個訊息串流。它兼具 TCP 和 UDP 的特性,像 UDP 一樣是訊息導向的,同時像 TCP 一樣保證訊息的可靠性和順序傳遞,並具備擁塞控制功能。
#### 安全理由
如果未使用該協定,建議不要載入相關核心模組,以減少潛在的攻擊面。
#### 稽核方法
執行以下指令並確認輸出結果符合預期:
```bash
modprobe -n -v sctp | grep -E '(sctp|install)'
lsmod | grep sctp
修復建議
- 編輯或建立
/etc/modprobe.d/目錄下的.conf檔案,例如:vi /etc/modprobe.d/sctp.conf - 新增以下設定:
install sctp /bin/true
### CIS 控制措施(版本 7)
- **5.1 建立安全組態**:維護已授權作業系統和軟體的標準安全組態標準。
- **9.2 確保只執行已核准的埠、協定和服務**:確保系統上執行的網路埠、協定和服務均具有已驗證的業務需求。
## 加強 Linux 系統安全:停用不必要的網路協定與防火牆組態
在維護 Linux 系統的安全性時,關閉不必要的網路協定和正確組態防火牆是非常重要的步驟。本文將討論如何停用不必要的網路協定,如 RDS 和 TIPC,並介紹如何使用 Uncomplicated Firewall(UFW)來組態防火牆。
### 停用不必要的網路協定
#### 3.5.3 停用 RDS 協定
Reliable Datagram Sockets(RDS)是一種為叢集節點之間提供低延遲、高頻寬通訊的傳輸層協定。如果系統中未使用 RDS 協定,建議停用該服務以減少潛在的攻擊面。
**稽核步驟:**
1. 執行命令 `modprobe -n -v rds`,確認輸出為 `install /bin/true`。
2. 執行命令 `lsmod | grep rds`,確認無輸出。
**修復步驟:**
1. 編輯或建立 `/etc/modprobe.d/rds.conf` 檔案。
2. 新增行 `install rds /bin/true`。
#### 3.5.4 停用 TIPC 協定
Transparent Inter-Process Communication(TIPC)協定設計用於提供叢集節點之間的通訊。如果未使用 TIPC,建議停用該服務以減少攻擊面。
**稽核步驟:**
1. 執行命令 `modprobe -n -v tipc | grep -E '(tipc|install)'`,確認輸出為 `install /bin/true`。
2. 執行命令 `lsmod | grep tipc`,確認無輸出。
**修復步驟:**
1. 編輯或建立 `/etc/modprobe.d/tipc.conf` 檔案。
2. 新增行 `install tipc /bin/true`。
### 防火牆組態
Linux 核心支援多種防火牆機制,包括 Netfilter 和 nftables。正確組態防火牆對於保護系統安全至關重要。
#### 3.6.1 組態 Uncomplicated Firewall(UFW)
UFW 是一個易於使用的防火牆管理工具,它作為 iptables 的前端,為 netfilter 防火牆提供了一種簡單的組態方法。
**安裝 UFW:**
執行命令 `apt install ufw` 安裝 UFW。
**稽核步驟:**
執行命令 `dpkg -s ufw | grep 'Status: install'`,確認輸出為 `Status: install ok installed`。
UFW 提供了一個簡單的命令列介面,用於管理防火牆規則。規則按照順序處理,第一個匹配的規則將被應用。因此,應該將允許規則放在拒絕規則之前。
### 重點整理
1. **停用不必要的網路協定**:對於未使用的協定,如 RDS 和 TIPC,應透過停用其核心模組來減少系統的攻擊面。
2. **正確組態防火牆**:選擇適合的防火牆工具(如 UFW、nftables 或 iptables),並根據安全需求組態規則。確保只使用一種防火牆組態方法,以避免衝突。
3. **加強系統安全**:透過上述措施,可以顯著提高 Linux 系統的安全性,防止未經授權的存取和惡意攻擊。
## 加強 Ubuntu 系統安全:UFW 防火牆組態
在現代網路環境中,系統安全是維護伺服器和工作站穩定執行的關鍵因素之一。Ubuntu 作為廣泛使用的 Linux 發行版,其內建的 Uncomplicated Firewall(UFW)提供了一個簡便的防火牆管理工具,用於保護系統免受未授權的存取和攻擊。本文將詳細介紹如何組態 UFW 以增強 Ubuntu 系統的安全性,涵蓋從安裝到高階組態的完整流程。
### 為什麼使用 UFW?
UFW 是 Ubuntu 預設的防火牆管理工具,提供了一個簡潔易用的介面來管理 iptables。透過 UFW,管理員可以輕鬆地設定防火牆規則,從而保護系統免受潛在的安全威脅。
### 移除不必要的防火牆工具
在組態 UFW 之前,確保系統中沒有安裝其他可能與 UFW 衝突的防火牆工具,例如 `iptables-persistent`。執行以下命令檢查是否安裝了 `iptables-persistent`:
```bash
dpkg-query -s iptables-persistent
如果已安裝,使用以下命令移除:
apt purge iptables-persistent
內容解密:
dpkg-query -s iptables-persistent:查詢iptables-persistent的安裝狀態。apt purge iptables-persistent:完全移除iptables-persistent軟體包,避免與 UFW 發生衝突。
啟用 UFW 服務
確保 UFW 服務已啟用並正在執行。執行以下命令檢查 UFW 狀態:
systemctl is-enabled ufw
ufw status | grep Status
輸出應顯示 enabled 和 Status: active。如果未啟用,執行以下命令啟用 UFW:
ufw enable
內容解密:
systemctl is-enabled ufw:檢查 UFW 服務是否已啟用。ufw status | grep Status:檢查 UFW 是否正在執行。ufw enable:啟用 UFW 防火牆服務。
組態 Loopback 流量
正確組態 Loopback 介面對於系統的正常運作至關重要。執行以下命令以允許 Loopback 流量並拒絕來自外部的 Loopback 地址流量:
ufw allow in on lo
ufw allow out on lo
ufw deny in from 127.0.0.0/8
ufw deny in from ::1
內容解密:
ufw allow in on lo:允許所有來自 Loopback 介面的輸入流量。ufw allow out on lo:允許所有透過 Loopback 介面的輸出流量。ufw deny in from 127.0.0.0/8和ufw deny in from ::1:拒絕所有來自 IPv4 和 IPv6 Loopback 地址的外部輸入流量,防止 IP 欺騙攻擊。
組態出站連線
根據組織的安全策略組態出站連線規則。執行以下命令檢查現有的出站規則:
ufw status numbered
若要允許所有出站連線,執行:
ufw allow out on all
內容解密:
ufw status numbered:列出所有防火牆規則及其編號。ufw allow out on all:允許所有介面上的出站連線。
確保開放埠的安全
對於所有開放的非 Loopback 埠,必須組態相應的防火牆規則以允許必要的流量。執行以下命令檢查當前開放的埠和對應的規則:
ufw status
根據需要調整規則,例如允許特定埠的流量:
ufw allow proto tcp from any to any port 22
內容解密:
ufw status:顯示當前防火牆狀態和規則。ufw allow proto tcp from any to any port 22:允許任何來源對本機 TCP 埠 22 的存取,通常用於 SSH 連線。
網路安全設定與防火牆組態最佳實踐
在現代網路環境中,適當的防火牆組態對於系統安全至關重要。本文將探討如何透過正確設定防火牆規則來提升系統安全性。
防火牆稽核與設定
首先,我們需要稽核目前系統的網路連線埠狀態及防火牆規則。在 Linux 系統中,可以使用 ss 命令來檢查開放的連線埠:
# ss -4tuln
內容解密:
此命令用於顯示所有監聽中的 TCP 和 UDP 連線埠。其中:
-4表示僅顯示 IPv4 連線t表示顯示 TCP 連線u表示顯示 UDP 連線l表示僅顯示監聽中的連線埠n表示以數字形式顯示連線埠號碼,而不是服務名稱
接下來,檢查目前的防火牆規則狀態:
# ufw status
內容解密:
ufw(Uncomplicated Firewall)是一個簡化 iptables 組態的工具。此命令用於顯示目前防火牆的狀態和規則列表。其中:
status引數用於顯示目前防火牆的狀態(是否啟用)及所有規則
確保預設拒絕所有連入連線
一個安全的防火牆組態應該預設拒絕所有未明確允許的連入連線。可以使用以下命令檢查和設定預設策略:
# ufw status verbose
內容解密:
此命令用於顯示詳細的防火牆狀態資訊,包括預設策略(允許或拒絕)。如果預設策略不是拒絕所有連入連線,則需要調整:
# ufw default deny incoming
# ufw default deny outgoing
# ufw default deny routed
內容解密:
這些命令分別將預設策略設定為拒絕所有連入、連出和路由轉發的連線。這樣可以確保只有明確允許的連線才會被接受。
使用 nftables 組態防火牆
對於需要更複雜防火牆規則的情況,可以使用 nftables。以下是一個基本的 nftables 組態範例:
#!/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif "lo" accept
ip saddr 127.0.0.0/8 counter packets 0 bytes 0 drop
ip6 saddr ::1 counter packets 0 bytes 0 drop
ip protocol tcp ct state established accept
tcp dport ssh accept
icmp type { destination-unreachable, router-advertisement, router-solicitation, time-exceeded, parameter-problem } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy drop;
ip protocol tcp ct state established,related,new accept
}
}
內容解密:
此指令碼首先清除現有的 nftables 規則集,然後建立一個新的規則集。其中:
table inet filter定義了一個名為filter的 IPv4/IPv6 混合表chain input定義了處理連入封包的規則鏈,預設策略是丟棄所有封包(policy drop)iif "lo" accept允許本機迴路介面(localhost)的所有流量ip saddr 127.0.0.0/8 counter packets 0 bytes 0 drop丟棄來自非法 IPv4 本機地址的封包tcp dport ssh accept允許 SSH 連線(預設是 port 22)icmp type { ... } accept允許特定的 ICMP 封包型別
儲存此指令碼為 /etc/nftables.rules,並使用以下命令載入:
# nft -f /etc/nftables.rules
要使這些變更永久生效,需要在 /etc/nftables.conf 中包含該規則檔案:
include "/etc/nftables.rules"