因為打開一台計算機到網絡訪問,可能產生許多安全風險,應用程序被設計用來防衛若幹類型的攻擊。
然而,其中的一些可能有缺陷(大多數徹底地由 RTM 因特網蠕虫論証了),或不在安全的主機間辨別,
從中一種特別的服務將被接受,並且正確的主機的請求將被拒絕。我們已經簡短地討論了指針和上述
tftp 服務器。這樣,一個人僅僅想要限制存取到這些服務器到“信任的主機”,它不可能使用通常的
安裝, inetd 或者在此提供這種服務到所有的顧客,或者不提供。
為此的一個有用的工具是 tcpd ,一張所謂的daemon wrapper。對TCP服務器,你想要監視或保護,
它引發服務器程序的替代。 tcpd 記載請求到 syslog daemon, 如果遠程主機被允許使用那種服務
就進行檢查,並且只有這個成功,它才執行真實的服務器程序。注意,這不與UDP為基礎的服務器一
起工作。
例如,隱蔽指針daemon,你必須在 inetd.conf 中改變相應的線到
# wrap finger daemon
finger stream tcp nowait root /usr/sbin/tcpd
in.fingerd
沒有增加任何訪問控制,這將只是作為通常的指針安裝出現到顧客面前,但是任何請求都會被記載到
syslog 的 auth 設備。
訪問控制借助被稱為 /etc/hosts.allow 和/etc/host.deny的兩個文件執行。他們分別地包含允許
和否認存取到某個服務和主機。當 tcpd 從被稱為了 biff.foobar.com 的一位客戶主機中為象指針一
樣的一種服務處理一個請求時,它掃描 hosts.allow 和 hosts.deny (以這個順序)為一個入口匹配服
務和客戶主機。如果一個匹配的入口在 hosts.allow被發現,存取被同意,不考慮在 hosts.deny 的任
何入口。如果一個匹配在 hosts.deny被發現 ,請求被關閉連接所拒絕。如果根本沒有匹配被發現,
請求被接受。
在存取文件中的入口看起來像這樣:
servicelist: hostlist [:shellcmd]
服務列表是從 /etc/services 中的服務名字表,或關鍵字ALL。除了指針和 tftp 匹配所有的服務,使
用“ALL EXCEPT finger, tftp ”。
主機列表是主機名字或IP地址的一張表,或關鍵字ALL,LOCAL,或UNKNOWN。所有匹配任何主機,當LOCAL
匹配的主機名字不包含一個點時。UNKNOWN匹配任何主機,它的名字或地址查找失敗了。以一個點開始
的一個名字匹配所有主機,它的域對這個名字是相等的。例如, .foobar.com 匹配 biff.foobar.com 。
也有為IP網絡地址和子網數字的規定。細節請參見 hosts_access ( 5 )手冊頁。
否認存取到指針和 tftp服務器除了本地主機的所有,將下面的東西放在 /etc/hosts.deny 中,並且讓
/etc/hosts.allow 為空:
當入口被匹配時,可選的 shellcmd 域可以包含一個設定命令行解釋器的命令被調用。這對建立可以
暴露潛在攻擊者的陷井是很有用的:
% h 和% d 參數通過tcpd分別地擴展到顧客主機名字和服務名字。細節請參見hosts_access ( 5 )手冊頁。
(http://www.fanqiang.com)
進入【UNIX論壇】
|