返回文章列表

Linux 網路診斷與安全組態重點解析

本文探討 Linux 網路管理的關鍵導向,涵蓋網路診斷工具、預設閘道器與路由表機制、網路位址組態、防火牆設定、DHCP 與 DNS 服務管理、以及網路安全強化等議題。文章提供實務操作範例與程式碼解析,引導讀者掌握 Linux 網路管理的精髓。

網路管理 系統管理

深入理解網路架構與路由機制是有效診斷網路問題的基礎。預設閘道器作為流量的最終出口,其正確設定至關重要。網路位址的規劃與廣播位址的理解則有助於確保網路的穩定執行。熟練運用網路診斷工具如 nmclisstcpdump,並結合防火牆規則的設定,能有效提升網路效能和安全性。此外,DHCP 和 DNS 服務的管理也是確保網路連線穩定的關鍵環節。

在 Linux 系統中,網路診斷與組態的核心在於理解網路層級的運作機制。預設閘道器與路由表決定了資料封包的傳輸路徑,而正確的網路位址規劃則確保每個裝置都能在網路上有效通訊。網路診斷工具例如 nmclisstcpdump,能協助管理員快速定位網路問題。防火牆規則的設定則能有效阻擋惡意流量,保障網路安全。DHCP 與 DNS 服務的正確組態,則是確保網路連線穩定和名稱解析順暢的關鍵。

網路診斷與 Linux 基礎網路組態重點解析

預設閘道器與路由表的運作機制

預設閘道器(Default Gateway)是網路架構中的關鍵元素,通常表示為 0.0.0.0/0,代表所有未知的網路目標。主機的路由表(Routing Table)遵循特定的優先順序處理網路流量:

  1. 直接連線的路由(Connected Routes)優先處理:系統會先檢查是否為直接連線的網路介面。
  2. 靜態路由(Static Routes)次之:透過 iproute 命令手動設定的路由規則。
  3. 預設路由(Default Route)作為最後手段:若前兩者皆不符合,流量將被導向預設閘道器,通常是一個路由器或防火牆裝置。

網路位址組態與廣播位址解析

192.168.25.0/24 網段中:

  • 子網路遮罩(Subnet Mask)255.255.255.0(24 位元)。
  • 廣播位址(Broadcast Address)192.168.25.255,用於向整個子網路傳送訊息,例如 ARP 請求。
  • 可用主機位址範圍192.168.25.1192.168.25.254,其中 .0 為網路位址,.255 為廣播位址,不可用於主機。

網路診斷工具與應用實務

  1. TCP 與 UDP 的狀態管理差異

    • TCP 是一種有狀態的協定,網路層可以追蹤連線狀態。
    • UDP 則是無狀態的,需要應用層自行管理對話,例如透過序號或會話編號。
  2. 監聽埠(Listening Ports)的重要性

    • 瞭解主機監聽的埠對於網路問題排查至關重要,可用於組態防火牆規則。
    • 在惡意軟體分析中,識別特定埠的監聽或傳輸行為,有助於快速定位受感染的主機。
  3. 輸入與輸出防火牆規則(Ingress & Egress Filters)

    • Ingress Filter 控制外部到內部的流量,允許特定埠的連入請求。
    • Egress Filter 控制內部到外部的流量,防止惡意軟體或未授權的連線。

數位憑證在安全服務中的角色

數位憑證用於保護多種服務,最常見的是 HTTPS(TCP/443)。當憑證過期時:

  • 瀏覽器使用者可能會遇到錯誤,並根據設定決定是否繼續。
  • 程式與服務之間的連線可能會直接中斷,取決於錯誤處理機制。

網路診斷命令實務操作

使用 nmcli 命令修改網路設定,例如調整介面速率與雙工模式:

$ sudo nmcli connection modify 'Wired connection 1' 802-3-ethernet.speed 100
$ sudo nmcli connection modify 'Wired connection 1' 802-3-ethernet.duplex full

內容解密:

  1. nmcli connection modify 命令用於修改現有的網路連線設定。
  2. 802-3-ethernet.speed 100 設定網路介面的速率為 100 Mbps。
  3. 802-3-ethernet.duplex full 設定雙工模式為全雙工,避免半雙工可能造成的傳輸衝突。
  4. 正確組態這些引數可提升網路效能並降低傳輸錯誤率。

Linux 網路服務與安全標準評估

防火牆組態與安全管理

  1. nftables 的優勢:nftables 相較於 iptables 具有更高的效率(CPU 使用率更低),並且支援 IPv6。其靈活的比對機制允許對封包中的個別欄位進行進一步處理,適合用於複雜的網路流量控制。

  2. 集中式防火牆管理:使用 nft include 檔案可以實作集中式防火牆標準的管理。這些檔案可以根據不同的使用場景命名,並分發到對應的目標伺服器。例如,為 Web 伺服器、DNS 主機或 DHCP 伺服器建立獨立的 include 檔案。此外,還可以建立一個單獨的 include 檔案,用於限制僅允許從特定的管理 “跳板主機”、IP 位址範圍或子網路進行主機管理。

  3. 協調工具的使用:即使不使用 include 檔案,也可以使用如 Terraform、Ansible、Puppet、Chef 或 Salt 等協調工具來集中管理 Linux 主機和服務的各個方面,包括防火牆組態。建議至少將所使用的協調工具所需的存取許可權進行硬編碼,以避免因組態錯誤而導致管理存取許可權丟失。

DNS 服務與安全

  1. DNSSEC 與 DoT:DNSSEC 透過簽名驗證 DNS 回應資料的真實性,但它並不加密請求或回應,因此仍使用標準的 DNS 連線埠(udp/53 和 tcp/53)。而 DNS over TLS (DoT) 則完全加密 DNS 請求和回應,使用連線埠 tcp/853。

  2. DoH 的運作方式:DNS over HTTPS (DoH) 將請求和回應封裝在 HTTPS 流量中,並使用特定的 HTTP 標頭。其預設的 “landing” 網址為 /dns-query,並且由於使用了 HTTPS 傳輸,因此僅使用連線埠 tcp/443。

  3. 內部與外部 DNS 伺服器的組態差異:內部 DNS 伺服器通常會實作遞迴查詢和轉發器,以允許解析網際網路主機。同時,通常會啟用自動註冊功能,並限制僅允許來自已知子網路的請求。外部 DNS 伺服器則通常不實作遞迴查詢或轉發器,也幾乎不會啟用自動註冊功能,並且通常會實施某種形式的速率限制。

DHCP 服務故障排除

  1. 初步問題排查:當接到 DHCP 問題的報修時,首先需要確認是否為廣泛性的問題,而非單一使用者的問題。檢查使用者是否正確連線到網路(無線或有線),以及是否在辦公室內工作。

  2. 檢查網路基礎設施:確認遠端辦公室的 WAN 連結、VPN 連結、路由器和交換器是否正常運作。如果這些裝置出現問題,DHCP 也將無法正常運作。

  3. 檢查 DHCP 伺服器狀態:使用 systemctl status isc-dhcp-server.service 命令檢查 DHCP 伺服器是否正在執行,並檢視最近的 DHCP 封包資訊,以幫助診斷問題。

程式碼範例:檢查 DHCP 伺服器狀態

$ systemctl status isc-dhcp-server.service
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-03-19 13:52:19 PDT; 2min 4s ago
Docs: man:dhcpd(8)
Main PID: 15085 (dhcpd)
Tasks: 4 (limit: 9335)
Memory: 5.1M
CGroup: /system.slice/isc-dhcp-server.service
└─15085 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf

Mar 19 13:53:29 ubuntu dhcpd[15085]: DHCPDISCOVER from e0:37:17:6b:c1:39 via eth0
Mar 19 13:53:29 ubuntu dhcpd[15085]: ICMP Echo reply while lease 192.168.122.14 is still valid.

內容解密:

  1. systemctl status 命令的作用:此命令用於檢查 isc-dhcp-server.service 的當前狀態,包括其是否正在執行、最近的日誌記錄等。
  2. Active 狀態的意義:表示服務目前是否正在執行。在這個範例中,服務自 2021-03-19 13:52:19 起已經成功啟動並持續執行。
  3. Main PID 資訊:顯示了主行程 ID (15085),以及執行的命令引數,例如使用者、群組、組態檔案路徑等。
  4. CGroup 資訊:提供了該服務的行程樹狀結構,顯示了該服務下的所有行程。
  5. Mar 19 13:53:29 日誌記錄:顯示了 DHCP 伺服器接收到的 DHCPDISCOVER 請求,以及對應的回應,幫助診斷 DHCP 相關問題。

Linux DHCP 服務故障排除

DHCP(動態主機設定協定)服務在網路環境中扮演著至關重要的角色,負責自動分配 IP 位址給網路中的裝置。當 DHCP 服務出現問題時,可能會導致網路連線中斷或不穩定。本將探討 Linux 環境下 DHCP 服務的故障排除方法。

檢查 DHCP 伺服器狀態

首先,需要確認 DHCP 伺服器是否正在執行。可以使用 systemctl 命令檢查服務狀態:

$ systemctl status isc-dhcp-server

若服務未啟動,則需啟動它:

$ sudo systemctl start isc-dhcp-server

接著,使用 ss 命令檢查伺服器是否正在監聽正確的 UDP 連線埠(67/udp,即 bootps):

$ ss -l | grep -i bootps
udp UNCONN 0 0 0.0.0.0:bootps 0.0.0.0:*

內容解密:

  • ss 命令用於顯示通訊端統計資訊。
  • -l 引數表示僅顯示監聽中的通訊端。
  • grep -i bootps 用於過濾出與 bootps(DHCP 伺服器使用的服務名稱)相關的結果。
  • 結果顯示 DHCP 伺服器正在監聽所有可用網路介面的 bootps 連線埠。

檢查 DHCP 伺服器日誌

檢查 /var/log/syslog 以確認 DHCP 伺服器最近是否已分配 IP 位址:

$ cat /var/log/syslog | grep DHCP | tail
Mar 19 13:53:29 ubuntu dhcpd[15085]: DHCPDISCOVER from e0:37:17:6b:c1:39 via ens33
Mar 19 13:53:32 ubuntu dhcpd[15085]: DHCPDISCOVER from e0:37:17:6b:c1:39 via ens33
Mar 19 13:53:38 ubuntu dhcpd[15085]: DHCPOFFER on 192.168.122.10 to e0:37:17:6b:c1:39 via ens33
Mar 19 13:53:38 ubuntu dhcpd[15085]: DHCPREQUEST for 192.168.122.130 (192.168.122.1) from e0:37:17:6b:c1:39 via ens33
Mar 19 13:53:38 ubuntu dhcpd[15085]: DHCPACK on 192.168.122.130 to e0:37:17:6b:c1:39 via ens33

內容解密:

  • 此命令顯示最近的 DHCP 相關日誌。
  • 日誌顯示了 DHCP 發現、提供、請求和確認的過程,表明 DHCP 伺服器正在正常運作。

在不同子網路中檢查 DHCP 功能

檢查特定子網路的 DHCP 日誌:

$ cat /var/log/syslog | grep DHCP | grep "subnet of interest" | tail

內容解密:

  • 將 “subnet of interest” 替換為您關心的子網路。
  • 此命令幫助您確認特定子網路的 DHCP 功能是否正常。

檢查 DHCP 中繼代理設定

在遠端路由器上檢查 DHCP 中繼代理設定:

# show run | i helper
ip helper-address <your dhcp server ip>

內容解密:

  • 此命令顯示路由器的執行組態中與 DHCP 中繼代理相關的設定。
  • 確保 ip helper-address 設定正確指向您的 DHCP 伺服器 IP。

防火牆設定檢查

檢查防火牆規則以確保允許 UDP 連線埠 67 的流量:

# sudo nft list ruleset

內容解密:

  • 此命令列出當前防火牆的所有規則。
  • 需要檢查是否有規則允許或拒絕進入的 UDP 連線埠 67(bootps)的流量。

識別惡意 DHCP 伺服器

在 Linux 使用者端上,檢查 /var/log/syslog 以取得 DHCP 伺服器的 IP 位址:

$ sudo cat /var/log/syslog | grep DHCPACK
Mar 19 12:40:32 ubuntu dhclient[14125]: DHCPACK of 192.168.1.157 from 192.168.1.1 (xid=0xad460843)

或者,從 DHCP 使用者端租約檔案中取得:

$ cat /var/lib/dhcp/dhclient.leases | grep dhcp-server
option dhcp-server-identifier 192.168.1.1;

內容解密:

  • 如果發現的 DHCP 伺服器 IP 不是您的預期伺服器,則可能存在惡意 DHCP 伺服器。
  • 使用 arp 命令取得該 IP 的 MAC 位址,並進一步調查其製造商和連線的交換機連線埠。

Windows 使用者端上的檢查

在 Windows 使用者端上,可以使用以下命令取得 DHCP 伺服器位址:

> ipconfig /all | find /i "DHCP Server"
DHCP Server . . . . . . . . . . : 192.168.1.1

內容解密:

  • 此命令顯示 Windows 使用者端的 DHCP 伺服器 IP 位址。

追蹤惡意 DHCP 伺服器

一旦識別出惡意 DHCP 伺服器的 IP 位址,請使用 arp 命令取得其 MAC 位址:

$ arp –a | grep "192.168.1.1"
_gateway (192.168.1.1) at 00:1d:7e:3b:73:cb [ether] on ens33

然後,使用 Wireshark OUI 查閱工具或相關指令碼查詢製造商資訊。

網路安全與認證技術深度解析

在現代網路環境中,識別和排除網路問題是一項至關重要的任務。特別是在處理DHCP伺服器異常時,管理員需要採取一系列步驟來定位和解決問題。

定位DHCP伺服器異常的步驟

首先,管理員需要確認DHCP伺服器的MAC地址,以識別可能的假冒伺服器。透過檢查DHCP發現封包的源MAC地址,可以取得伺服器的OUI(Organizationally Unique Identifier)。使用OUI查詢工具,可以確定伺服器的品牌或製造商。

# show lldp neighbors int g1/0/7 detailed
# show cdp neighbors int g1/0/7

內容解密:

  • show lldp neighbors int g1/0/7 detailed 命令用於顯示LLDP(Link Layer Discovery Protocol)鄰居的詳細資訊,幫助確認該埠是否連線有交換機。
  • show cdp neighbors int g1/0/7 命令用於顯示CDP(Cisco Discovery Protocol)鄰居的資訊,同樣用於檢查該埠是否連線有交換機。
  • 透過這兩個命令,可以確定問題DHCP伺服器連線的交換機埠,並進一步追蹤到具體的交換機和埠。

證書服務在Linux上的應用

證書服務在網路安全中扮演著雙重角色:提供信任和認證,以及協助建立加密會話的金鑰。

  1. 信任和認證:主機名稱與證書中的CN(Common Name)或SAN(Subject Alternative Name)欄位相符,確保了身份驗證的可靠性。證書由受信任的CA(Certificate Authority)簽署,進一步增強了信任度。
  2. 金鑰建立:證書材料用於建立對稱加密會話的金鑰。然而,在許多情況下,證書僅用於身份驗證,而不參與會話加密。

PKCS#12格式證書

PKCS#12格式(通常以.pfx.p12為字尾)結合了服務的公開證書和私鑰。這種格式在需要安裝預先存在的證書(如wildcard證書)時尤其有用。

證書透明度(CT)的重要性

證書透明度是公共CA信任模型中的關鍵要素。由於所有證書都被公開記錄,CT日誌可以被稽核以檢測詐欺證書。此外,組織可以稽核發給自己的證書,以發現未經授權購買的證書,從而遏制影子IT(shadow IT)的擴散。

RADIUS服務在Linux上的應用

RADIUS(Remote Authentication Dial-In User Service)是一種用於網路存取控制的協定。在Linux上組態RADIUS服務時,可以使用unlang規則來實作根據群組成員資格的身份驗證。

示例unlang規則

if(&NAS-IP-Address == "192.168.122.20") {
    if(Service-Type == Administrative && LDAP-Group == "Network Admins") {
        update reply {
            Cisco-AVPair = "shell:priv-lvl=15"
        }
        accept
    }
    elsif (Service-Type == "Authenticate-Only" && LDAP-Group == "VPN Users" ) {
        accept
    }
    elsif {
        reject
    }
}

內容解密:

  • 此unlang規則根據不同的服務型別和LDAP群組成員資格來決定是否接受或拒絕身份驗證請求。
  • 對於來自特定IP地址(192.168.122.20)的管理存取請求,如果使用者屬於Network Admins群組,則賦予其特權級別15。
  • 對於VPN使用者,如果他們屬於VPN Users群組,則允許其進行身份驗證。

EAP-TLS的優勢與挑戰

EAP-TLS(Extensible Authentication Protocol-Transport Layer Security)是一種根據TLS的身份驗證協定,具有高度的安全性。其優勢包括:

  1. 使用證書進行身份驗證,增強了信任模型。
  2. TLS加密,保護了身份驗證過程中的資料交換。
  3. 頻繁更換會話金鑰,提高了安全性。
  4. 無需密碼,減少了密碼洩露的風險。

然而,EAP-TLS的佈署也面臨挑戰,特別是在客戶端證書的發放和安裝方面。透過企業自有的行動裝置管理(MDM)平台,可以簡化這一過程。