NIS 代表網路資訊服務(Network Information Service),它是一個稱為 ypserv 的 RPC 服務,它與 portmap 以及其他相關的服務一起使用以散佈使用者名稱、密碼與其他重要 資訊的對應表到同一網域中的任何電腦。
一部 NIS 伺服器是由許多種應用程式所組成的,它們包括如下:
/usr/sbin/rpc.yppasswdd — 也稱為 yppasswdd 服務,這個 系統程式允許使用者變更他們的 NIS 密碼。
/usr/sbin/rpc.ypxfrd — 也稱為 ypxfrd 服務,這個系統 程式負責透過網路傳輸 NIS 對應表。
/usr/sbin/yppush — 這個應用程式傳播 NIS 資料庫的變更到許多部 NIS 伺服器。
/usr/sbin/ypserv — 這是 NIS 伺服器系統程式。
對今日的標準來說,NIS 是相當不安全的,它不含任何的主機認證機制,而且以未加密的方式透過網路傳輸所有 的資訊,包括密碼雜湊。 因此,設定一個使用 NIS 的網路時必須特別地小心,另一個使這種情況更複雜的是, 預設的 NIS 設定原本便是不安全的。
建議任何想要實作一部 NIS 伺服器的人,首先要保全 portmap 服務(如 第 5.2 節 所述的),然後再考慮接下來的問題。
因為 NIS 以未加密的方式透過網路傳送重要資訊,因此在防火牆內部以及在一個區隔且安全的網路中執行這個 服務是很重要的。 每當 NIS 的資訊傳輸通過一個非安全的網路時,便會面臨被擷取的危險,因此小心的規劃 網路便可以防止嚴重的安全性破壞。
一個 NIS 網路中的任何機器可以使用指令來取得來自伺服器的資訊,而不需經過任何的認證,只要使用者知道 NIS 伺服器的 DNS 主機名稱與 NIS 網域名稱。
舉例來說,假如某人連接一部筆記型電腦到網路中或從外部入侵網路(而且偽裝一個內部的 IP 位址),下列的 指令將可暴露出 /etc/passwd 的對應表:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd |
假如這個攻擊者是 root 使用者,他們可以藉由輸入下列指令取得 /etc/shadow 檔案:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow |
![]() | 請注意 |
---|---|
假如有用到 Kerberos,/etc/shadow 檔案將不會儲存在一個 NIS 對應表中。 |
如要使攻擊者更難存取到 NIS 的對應表,請為 DNS 主機名稱建立一個隨機的字串,如 o7hfawtgmhwg.domain.com。 同樣地,也建立一個不同的隨機 NIS 網域名稱,這將會使得攻擊者更難存取 NIS 伺服器。
假如 /var/yp/securenets 檔案是空白的或根本不存在的話(如同預設安裝完後),NIS 將會聽取所有的網路。 您必須做的第一件事便是放入『網路遮罩/網路』的值到這個檔案中,以使得 ypserv 只回應來自適當網路的要求。
以下為來自 /var/yp/securenets 檔案的一個範例紀錄項:
255.255.255.0 192.168.0.0 |
![]() | 警告 |
---|---|
在建立好 /var/yp/securenets 檔案之前,請勿啟動一部 NIS 伺服器。 |
這個技術並不提供來自一個偽裝 IP 攻擊的保護,不過它至少限制 NIS 伺服器所伺服的網路。
所有 NIS 相關的服務都可被指定一個特定的連接埠,除了 rpc.yppasswdd 之外 — 這個系統程式允許使用者更改他們的登入密碼,藉由指定連接埠給其他的兩個 NIS 伺服器系統程式 - rpc.ypxfrd 與 ypserv,將可允許建立防火牆規則以進一步保護 NIS 伺服器系統程式免受入侵。
如要如此做,請增加下列這些行到 /etc/sysconfig/network 檔案中:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835" |
可以使用下列的 IPTables 規則以強制伺服器為這些連接埠聽取那一個網路:
iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 834 -j DROP iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 835 -j DROP |
![]() | 建議 |
---|---|
請參考 第7章 以取得關於使用 IPTables 指令實作防火牆的更多資訊。 |
當使用 NIS 當作認證時,一個固有最明顯的缺點是每當使用者登入到一部機器時,來自 /etc/shadow 對應表的一個密碼雜湊便會透過網路傳輸。 假如一個入侵者取得 NIS 網域的存取,而且正在竊聽網路的流量, 使用者名稱與密碼雜湊便會被竊取。 只要給予足夠的時間,一個密碼破解程式便可以猜到不良的密碼,然後一個 攻擊者便可以取得網路中一個有效帳號的存取。
因為 Kerberos 使用私鑰的加密方式,將不會有任何的密碼雜湊透過網路傳送,將可使系統更加安全。 如需關於 Kerberos 的更多資訊,請參考 Red Hat Enterprise Linux 參考手冊 一書中的 Kerberos 章節。