在 Linux 環境中,強化網路安全至關重要,核心引數的正確設定是抵禦網路攻擊的第一道防線。本文將詳細說明如何設定關鍵核心引數,以停用 IP 轉送、ICMP 重定向和來源路由等功能,避免系統被濫用為攻擊跳板或遭受路由欺騙。同時,文章也涵蓋了進階的網路安全強化措施,例如設定反向路徑過濾、忽略廣播 ICMP 請求和錯誤的 ICMP 回應,並介紹如何記錄可疑封包以協助管理員進行安全事件分析。這些設定不僅能提升系統的安全性,還能有效降低系統日誌中無用資訊的數量,方便管理員快速識別和處理真正的安全威脅。
網路引數設定(僅限主機模式)
在僅限主機(Host Only)的組態下,系統不應作為路由器使用。本章節將介紹相關的網路引數設定,以確保系統的安全性。
確保封包重新導向傳送功能已停用(自動化)
適用範圍:
- 第一級 - 伺服器
- 第一級 - 工作站
描述:
ICMP 重新導向(Redirect)訊息用於向其他主機傳送路由資訊。作為主機本身不應扮演路由器的角色,因此無需傳送重新導向訊息。
風險說明:
攻擊者可能利用受損的主機傳送無效的 ICMP 重新導向訊息給其他路由器裝置,試圖破壞路由設定,並誘導使用者存取攻擊者設定的系統,而非合法的系統。
稽核方法:
執行以下命令並確認輸出結果符合預期:
# sysctl net.ipv4.conf.all.send_redirects
net.ipv4.conf.all.send_redirects = 0
# sysctl net.ipv4.conf.default.send_redirects
net.ipv4.conf.default.send_redirects = 0
# grep "net\.ipv4\.conf\.all\.send_redirects" /etc/sysctl.conf /etc/sysctl.d/*
net.ipv4.conf.all.send_redirects = 0
# grep "net\.ipv4\.conf\.default\.send_redirects" /etc/sysctl.conf /etc/sysctl.d/*
net.ipv4.conf.default.send_redirects = 0
修復方法:
在 /etc/sysctl.conf 或 /etc/sysctl.d/* 檔案中設定以下引數:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
執行以下命令以設定目前的 kernel 引數:
# sysctl -w net.ipv4.conf.all.send_redirects=0
# sysctl -w net.ipv4.conf.default.send_redirects=0
# sysctl -w net.ipv4.route.flush=1
確保 IP 轉送功能已停用(自動化)
適用範圍:
- 第一級 - 伺服器
- 第一級 - 工作站
描述:
net.ipv4.ip_forward 和 net.ipv6.conf.all.forwarding 旗標用於告訴系統是否可以轉送封包。
風險說明:
將這些旗標設為 0 可確保具有多個介面的系統(例如硬體代理伺服器)永遠無法轉送封包,因此永遠不會作為路由器使用。
稽核方法:
執行以下命令並確認輸出結果符合預期:
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
# grep -E -s "^\s*net\.ipv4\.ip_forward\s*=\s*1" /etc/sysctl.conf /etc/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /run/sysctl.d/*.conf
不應傳回任何值。
若 IPv6 已啟用:
# sysctl net.ipv6.conf.all.forwarding
net.ipv6.conf.all.forwarding = 0
# grep -E -s "^\s*net\.ipv6\.conf\.all\.forwarding\s*=\s*1" /etc/sysctl.conf /etc/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /run/sysctl.d/*.conf
不應傳回任何值。
或者,驗證 IPv6 是否已停用:
# grep "^\s*linux" /boot/grub/grub.cfg | grep -v "ipv6.disable=1"
不應傳回任何行。
修復方法:
執行以下命令以還原預設引數並設定目前的 kernel 引數:
# grep -Els "^\s*net\.ipv4\.ip_forward\s*=\s*1" /etc/sysctl.conf /etc/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /run/sysctl.d/*.conf | while read filename; do sed -ri "s/^\s*(net\.ipv4\.ip_forward\s*)(=)(\s*\S+\b).*$/# *REMOVED* \1/" $filename; done; sysctl -w net.ipv4.ip_forward=0; sysctl -w net.ipv4.route.flush=1
若 IPv6 已啟用:
# grep -Els "^\s*net\.ipv6\.conf\.all\.forwarding\s*=\s*1" /etc/sysctl.conf /etc/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /run/sysctl.d/*.conf | while read filename; do sed -ri "s/^\s*(net\.ipv6\.conf\.all\.forwarding\s*)(=)(\s*\S+\b).*$/# *REMOVED* \1/" $filename; done; sysctl -w net.ipv6.conf.all.forwarding=0; sysctl -w net.ipv6.route.flush=1
網路引數設定(主機與路由器共用)
本章節將介紹適用於主機和路由器的網路引數設定。
確保不接受來源路由封包(自動化)
描述:
來源路由允許傳送者部分或全部指定封包透過網路的路由。非來源路由的封包則根據網路中的路由器決定的路徑傳輸。
風險說明:
設定 net.ipv4.conf.all.accept_source_route、net.ipv4.conf.default.accept_source_route、net.ipv6.conf.all.accept_source_route 和 net.ipv6.conf.default.accept_source_route 為 0,可以防止系統接受來源路由的封包。這樣可以避免攻擊者利用來源路由來存取私有地址系統。
稽核方法與修復方法:
請參考相關的安全設定,以確保系統的安全性。
內容解密:
此段主要講解來源路由封包的處理原則。來源路由允許傳送者自行決定封包的傳輸路徑,但這也可能被攻擊者利用來繞過安全限制。透過停用對來源路由封包的接受,可以有效降低系統被攻擊的風險。具體的稽核和修復步驟需要根據系統的具體組態進行調整。
加強 Linux 系統的安全性:停用 ICMP 重定向和來源路由
在維護 Linux 系統的安全性時,正確組態核心引數以防止潛在的網路攻擊至關重要。本文將探討如何透過調整特定的核心引數來增強系統的安全性,特別是關於 ICMP 重定向和來源路由的處理。
ICMP 重定向和來源路由的風險
ICMP 重定向訊息允許外部路由器更新系統的路由表,而來源路由則允許傳送者指定資料包的傳輸路徑。這些功能雖然在某些網路環境中有其用途,但也可能被攻擊者利用來操縱系統的路由表,從而攔截或竄改資料。
停用來源路由
風險說明
來源路由允許傳送者指定資料包透過的路徑,這可能被用於繞過安全控制或發起攻擊。
檢測方法
執行以下命令以驗證目前的設定:
sysctl net.ipv4.conf.all.accept_source_route
sysctl net.ipv4.conf.default.accept_source_route
grep "net\.ipv4\.conf\.all\.accept_source_route" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv4\.conf\.default\.accept_source_route" /etc/sysctl.conf /etc/sysctl.d/*
若系統啟用 IPv6,還需檢查 IPv6 相關設定:
sysctl net.ipv6.conf.all.accept_source_route
sysctl net.ipv6.conf.default.accept_source_route
grep "net\.ipv6\.conf\.all\.accept_source_route" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv6\.conf\.default\.accept_source_route" /etc/sysctl.conf /etc/sysctl.d/*
或者驗證 IPv6 是否被停用:
grep "^\s*linux" /boot/grub/grub.cfg | grep -v "ipv6.disable=1"
修復措施
編輯 /etc/sysctl.conf 或 /etc/sysctl.d/ 下的檔案,設定以下引數:
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
執行以下命令使設定生效:
sysctl -w net.ipv4.conf.all.accept_source_route=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.route.flush=1
若 IPv6 已啟用,同樣需要設定:
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
並執行:
sysctl -w net.ipv6.conf.all.accept_source_route=0
sysctl -w net.ipv6.conf.default.accept_source_route=0
sysctl -w net.ipv6.route.flush=1
停用 ICMP 重定向
風險說明
ICMP 重定向可能被用於修改系統的路由表,引導流量到錯誤或惡意的網路。
檢測方法
執行以下命令檢查目前的 ICMP 重定向設定:
sysctl net.ipv4.conf.all.accept_redirects
sysctl net.ipv4.conf.default.accept_redirects
grep "net\.ipv4\.conf\.all\.accept_redirects" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv4\.conf\.default\.accept_redirects" /etc/sysctl.conf /etc/sysctl.d/*
以及 IPv6 相關設定(如果適用):
sysctl net.ipv6.conf.all.accept_redirects
sysctl net.ipv6.conf.default.accept_redirects
grep "net\.ipv6\.conf\.all\.accept_redirects" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv6\.conf\.default\.accept_redirects" /etc/sysctl.conf /etc/sysctl.d/*
修復措施
在 /etc/sysctl.conf 或 /etc/sysctl.d/ 下的檔案中設定:
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
並執行以下命令使變更生效:
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.route.flush=1
對於 IPv6,設定:
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
並執行:
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.default.accept_redirects=0
sysctl -w net.ipv6.route.flush=1
停用安全 ICMP 重定向
風險說明
即使是來自已知閘道器的 ICMP 重定向也可能被利用,因此建議停用。
檢測方法
檢查目前的安全 ICMP 重定向設定:
sysctl net.ipv4.conf.all.secure_redirects
sysctl net.ipv4.conf.default.secure_redirects
grep "net\.ipv4\.conf\.all\.secure_redirects" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv4\.conf\.default\.secure_redirects" /etc/sysctl.conf /etc/sysctl.d/*
修復措施
在設定檔中加入以下引數:
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
執行以下命令使設定生效:
sysctl -w net.ipv4.conf.all.secure_redirects=0
sysctl -w net.ipv4.conf.default.secure_redirects=0
sysctl -w net.ipv4.route.flush=1
加強 Linux 系統網路安全性的設定
在確保 Linux 系統安全性的過程中,正確設定核心引數是至關重要的。本文將探討多項強化 Linux 系統網路安全性的關鍵設定,包括記錄可疑封包、忽略廣播 ICMP 請求、忽略錯誤 ICMP 回應以及啟用反向路徑過濾等。
3.3.4 記錄可疑封包
設定目的
啟用記錄可疑封包的功能,可以幫助管理員識別潛在的攻擊,例如使用偽造來源位址的封包。
設定方法
- 編輯
/etc/sysctl.conf或新增設定檔至/etc/sysctl.d/目錄下,加入以下引數:net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 - 執行以下指令使設定立即生效:
sysctl -w net.ipv4.conf.all.log_martians=1 sysctl -w net.ipv4.conf.default.log_martians=1 sysctl -w net.ipv4.route.flush=1
驗證方法
執行以下指令,確認輸出結果是否符合預期:
sysctl net.ipv4.conf.all.log_martians
sysctl net.ipv4.conf.default.log_martians
grep "net\.ipv4\.conf\.all\.log_martians" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv4\.conf\.default\.log_martians" /etc/sysctl.conf /etc/sysctl.d/*
3.3.5 忽略廣播 ICMP 請求
設定目的
設定系統忽略廣播 ICMP 請求,可以避免系統參與 Smurf 攻擊。
設定方法
- 編輯
/etc/sysctl.conf或新增設定檔至/etc/sysctl.d/目錄下,加入以下引數:net.ipv4.icmp_echo_ignore_broadcasts = 1 - 執行以下指令使設定立即生效:
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 sysctl -w net.ipv4.route.flush=1
驗證方法
執行以下指令,確認輸出結果是否符合預期:
sysctl net.ipv4.icmp_echo_ignore_broadcasts
grep "net\.ipv4\.icmp_echo_ignore_broadcasts" /etc/sysctl.conf /etc/sysctl.d/*
3.3.6 忽略錯誤 ICMP 回應
設定目的
忽略不符合 RFC-1122 規範的 ICMP 回應,可以避免系統日誌被大量無用的錯誤訊息填滿。
設定方法
- 編輯
/etc/sysctl.conf或新增設定檔至/etc/sysctl.d/目錄下,加入以下引數:net.ipv4.icmp_ignore_bogus_error_responses = 1 - 執行以下指令使設定立即生效:
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 sysctl -w net.ipv4.route.flush=1
驗證方法
執行以下指令,確認輸出結果是否符合預期:
sysctl net.ipv4.icmp_ignore_bogus_error_responses
grep "net\.ipv4\.icmp_ignore_bogus_error_responses" /etc/sysctl.conf /etc/sysctl.d/*
3.3.7 啟用反向路徑過濾
設定目的
啟用反向路徑過濾,可以幫助系統過濾掉來源位址不合法的封包,提高安全性。
設定方法
- 編輯
/etc/sysctl.conf或新增設定檔至/etc/sysctl.d/目錄下,加入以下引數:net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 - 執行以下指令使設定立即生效:
sysctl -w net.ipv4.conf.all.rp_filter=1 sysctl -w net.ipv4.conf.default.rp_filter=1 sysctl -w net.ipv4.route.flush=1
驗證方法
執行以下指令,確認輸出結果是否符合預期:
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter
grep "net\.ipv4\.conf\.all\.rp_filter" /etc/sysctl.conf /etc/sysctl.d/*
grep "net\.ipv4\.conf\.default\.rp_filter" /etc/sysctl.conf /etc/sysctl.d/*
CIS Controls 對應版本7的相關規範
- 6.2 Activate audit logging:確保所有系統和網路裝置都已啟用本地日誌記錄功能。
- 6.3 Enable Detailed Logging:啟用系統日誌記錄,以包含詳細資訊,如事件來源、日期、使用者、時間戳、來源位址、目標位址等有用的元素。
- 5.1 Establish Secure Configurations:為所有授權的作業系統和軟體維護檔案化的標準安全組態標準。
這些 CIS Controls 的規範進一步強調了實施上述安全設定的重要性,以確保系統和網路的安全。
此圖示呈現了 Linux 系統網路安全性設定的流程:
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title Linux 系統網路安全強化
package "安全架構" {
package "網路安全" {
component [防火牆] as firewall
component [WAF] as waf
component [DDoS 防護] as ddos
}
package "身份認證" {
component [OAuth 2.0] as oauth
component [JWT Token] as jwt
component [MFA] as mfa
}
package "資料安全" {
component [加密傳輸 TLS] as tls
component [資料加密] as encrypt
component [金鑰管理] as kms
}
package "監控審計" {
component [日誌收集] as log
component [威脅偵測] as threat
component [合規審計] as audit
}
}
firewall --> waf : 過濾流量
waf --> oauth : 驗證身份
oauth --> jwt : 簽發憑證
jwt --> tls : 加密傳輸
tls --> encrypt : 資料保護
log --> threat : 異常分析
threat --> audit : 報告生成
@enduml
此圖示清晰地展示了文中所述的各項安全設定的先後順序,有助於讀者理解整個設定的流程。
最後檢查清單
- 所有設定專案是否已正確組態並生效?
- 是否已驗證各項設定的正確性?
- 是否已將設定檔案妥善儲存和備份?
透過仔細檢查上述清單,可以確保 Linux 系統的網路安全性設定得到妥善實施,從而提高系統整體的安全水平。