在Unix操作系統中,可以利用兩個文件來統一管理客戶端的連接。誰可以訪問Unix服務器,都有這兩個文件說了算。也就是說,這Hosts.allow與Hosts.deny兩個文件就好像是Unix服務器的“看門狗”,它決定了哪些客戶端可以訪問Unix服務器,哪些則不行。
如果Unix操作系統工程師允許某些計算機可以訪問這台服務器則可以在Hosts.allow文件中定義允許訪問的計算機。反之,如果系統工程師不希望特定的計算機可以訪問服務器,則應該在hosts.deny文件中定義拒絕訪問服務器的計算機。
當系統的進程在接受來自客戶端的服務請求後,Unix操作系統會先檢查Hosts.allow文件,看看是否允許此客戶端的訪問,如果允許訪問的話則會將這個請求轉送到特定的服務程序。如果在hosts.allow文件中沒有這個客戶端允許的紀錄,則會檢查hosts.deny文件的內容。如果這個客戶端的IP地址等信息出現在這個文件中,則客戶端的這個請求將會被拒絕。
1、 兩個文件的優先性問題。
在Unix操作系統眼中這兩個文件的地位是不同的。這是系統工程師需要明確的第一個內容。Unix操作系統會先檢查Hosts.allow文件的內容。如果在這裡有符合的紀錄,則會馬上轉發這個客戶端的請求,而不會去考慮Hosts.deny中的內容。如果系統工程師以前有Cisco網絡產品管理的經驗,對於這一點就很好理解。
因為其工作原理跟思科路由器的訪問控制列表工作原理類似。只要在前面的紀錄中找到符合要求的項目,則會忽略後續的內容。如現在有一個客戶端,其IP地址為192.168.0.4。在以上兩個文件中,都有這個客戶端的信息。即在前面一個文件中允許這個客戶端連接到Unix服務器中,而在後面一個文件中卻又禁止其連接。
那麼這個互相矛盾的設置,哪一個設置更有效力呢?由於Unix服務器是先檢查Hosts.allow文件,故最終Unix操作系統允許用戶連接到服務器。
系統管理員不要認為這是Unix操作系統中的漏洞。其實Unix操作系統是故意這麼設計的。這個特性在實際應用中非常的有效。如某個財務管理軟件的服務器,就只允許財務部門的四個員工以及系統管理員可以連接上去。
此時就可以把這五個用戶的信息放入到hosts.allow文件中,然後在hosts.deny文件中填入ALL內容即可(表示全部計算機都不能夠連接Unix服務器)。因為hosts.allow文件優先,故最終Unix操作系統只允許特定的五個用戶可以連接到財務管理軟件服務器中,從而提高財務管理軟件的安全性。可見這個特性在實際工作中,具有很大的用途。
我們這次關於Unix操作系統就講解到這裡。