什麼是 TCP Wrapper?
在防火牆之外,Linux 還提供一層應用程式層級的存取控制機制——TCP Wrapper。它以核心套件 tcpd 為基礎,在 SSH、FTP 等服務實際接受連線之前,先行攔截並驗證來源主機的合法性。
運作機制:tcpd 如何攔截連線
當外部連線抵達時,inetd / xinetd 不直接呼叫服務程式,而是先將控制權交給 tcpd。tcpd 依序讀取 /etc/hosts.allow 與 /etc/hosts.deny 兩個規則檔,採用「允許優先」原則:先比對 hosts.allow,若符合則放行;若未命中,再比對 hosts.deny,符合則拒絕;兩者皆未命中則預設允許。規則格式為 daemon_list : client_list,支援萬用字元(ALL)與網段匹配,並可透過 spawn 指令記錄日誌或觸發告警腳本,提供細緻的行為追蹤能力。
核心設定範例
# /etc/hosts.allow — 僅允許內網 SSH
sshd : 192.168.1.0/255.255.255.0
# /etc/hosts.deny — 拒絕所有其他連線
ALL : ALL
此範例實現「預設拒絕」策略:僅允許 192.168.1.0/24 網段連線 SSH,其餘一律封鎖,是最常見的安全基準設定。
💡 重點整理
- 攔截層級:運作於應用程式層,防火牆規則之後的第二道防線。
- 比對順序:hosts.allow 優先,未命中才繼續比對 hosts.deny。
- 預設行為:兩檔皆未命中時預設放行,建議在 hosts.deny 加上
ALL:ALL作為保底規則。 - 現代替代:新版 systemd 環境中,TCP Wrapper 逐漸被 firewalld / nftables 取代,但在 xinetd 架構下仍廣泛使用。
TCP Wrapper 以最小代價提供主機層級的細粒度存取控制,尤其適合管理 SSH 等關鍵服務的來源白名單。理解其規則比對邏輯,是強化 Linux 伺服器安全的基礎必備知識。
📚 參考文獻
- Wietse Venema — TCP Wrappers 官方說明文件:linux.die.net/man/5/hosts_access(hosts.allow / hosts.deny 語法權威參考)
- Red Hat Enterprise Linux 文件 — Security Guide: TCP Wrappers:access.redhat.com
- Arch Linux Wiki — TCP Wrappers:wiki.archlinux.org/title/TCP_wrappers
⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。
留言
張貼留言