返回文章列表

Linux 系統網路安全強化

本文探討 Linux 系統網路安全強化方法,涵蓋停用 IP 轉送、ICMP 重定向、來源路由等核心引數設定,並提供偵測與修復步驟,有效降低系統遭受網路攻擊的風險。此外,文章也包含忽略廣播 ICMP 請求、錯誤 ICMP 回應、啟用反向路徑過濾等進階設定,以及記錄可疑封包的技巧,以提升系統整體安全性。

系統管理 資安

在 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_forwardnet.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_routenet.ipv4.conf.default.accept_source_routenet.ipv6.conf.all.accept_source_routenet.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 記錄可疑封包

設定目的

啟用記錄可疑封包的功能,可以幫助管理員識別潛在的攻擊,例如使用偽造來源位址的封包。

設定方法

  1. 編輯 /etc/sysctl.conf 或新增設定檔至 /etc/sysctl.d/ 目錄下,加入以下引數:
    net.ipv4.conf.all.log_martians = 1
    net.ipv4.conf.default.log_martians = 1
    
  2. 執行以下指令使設定立即生效:
    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 攻擊。

設定方法

  1. 編輯 /etc/sysctl.conf 或新增設定檔至 /etc/sysctl.d/ 目錄下,加入以下引數:
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
  2. 執行以下指令使設定立即生效:
    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 回應,可以避免系統日誌被大量無用的錯誤訊息填滿。

設定方法

  1. 編輯 /etc/sysctl.conf 或新增設定檔至 /etc/sysctl.d/ 目錄下,加入以下引數:
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    
  2. 執行以下指令使設定立即生效:
    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 啟用反向路徑過濾

設定目的

啟用反向路徑過濾,可以幫助系統過濾掉來源位址不合法的封包,提高安全性。

設定方法

  1. 編輯 /etc/sysctl.conf 或新增設定檔至 /etc/sysctl.d/ 目錄下,加入以下引數:
    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.conf.default.rp_filter = 1
    
  2. 執行以下指令使設定立即生效:
    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 系統的網路安全性設定得到妥善實施,從而提高系統整體的安全水平。