5.3. 保全 NIS

NIS 代表網路資訊服務(Network Information Service),它是一個稱為 ypserv 的 RPC 服務,它與 portmap 以及其他相關的服務一起使用以散佈使用者名稱、密碼與其他重要 資訊的對應表到同一網域中的任何電腦。

一部 NIS 伺服器是由許多種應用程式所組成的,它們包括如下:

對今日的標準來說,NIS 是相當不安全的,它不含任何的主機認證機制,而且以未加密的方式透過網路傳輸所有 的資訊,包括密碼雜湊。 因此,設定一個使用 NIS 的網路時必須特別地小心,另一個使這種情況更複雜的是, 預設的 NIS 設定原本便是不安全的。

建議任何想要實作一部 NIS 伺服器的人,首先要保全 portmap 服務(如 第 5.2 節 所述的),然後再考慮接下來的問題。

5.3.1. 小心規劃網路

因為 NIS 以未加密的方式透過網路傳送重要資訊,因此在防火牆內部以及在一個區隔且安全的網路中執行這個 服務是很重要的。 每當 NIS 的資訊傳輸通過一個非安全的網路時,便會面臨被擷取的危險,因此小心的規劃 網路便可以防止嚴重的安全性破壞。

5.3.2. 使用一個類似密碼的 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 伺服器。

5.3.3. 編輯 /var/yp/securenets 檔案

假如 /var/yp/securenets 檔案是空白的或根本不存在的話(如同預設安裝完後),NIS 將會聽取所有的網路。 您必須做的第一件事便是放入『網路遮罩/網路』的值到這個檔案中,以使得 ypserv 只回應來自適當網路的要求。

以下為來自 /var/yp/securenets 檔案的一個範例紀錄項:

255.255.255.0     192.168.0.0

警告警告
 

在建立好 /var/yp/securenets 檔案之前,請勿啟動一部 NIS 伺服器。

這個技術並不提供來自一個偽裝 IP 攻擊的保護,不過它至少限制 NIS 伺服器所伺服的網路。

5.3.4. 指定靜態的連接埠以及使用 IPTables 規則

所有 NIS 相關的服務都可被指定一個特定的連接埠,除了 rpc.yppasswdd 之外 — 這個系統程式允許使用者更改他們的登入密碼,藉由指定連接埠給其他的兩個 NIS 伺服器系統程式 - rpc.ypxfrdypserv,將可允許建立防火牆規則以進一步保護 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 指令實作防火牆的更多資訊。

5.3.5. 使用 Kerberos 認證

當使用 NIS 當作認證時,一個固有最明顯的缺點是每當使用者登入到一部機器時,來自 /etc/shadow 對應表的一個密碼雜湊便會透過網路傳輸。 假如一個入侵者取得 NIS 網域的存取,而且正在竊聽網路的流量, 使用者名稱與密碼雜湊便會被竊取。 只要給予足夠的時間,一個密碼破解程式便可以猜到不良的密碼,然後一個 攻擊者便可以取得網路中一個有效帳號的存取。

因為 Kerberos 使用私鑰的加密方式,將不會有任何的密碼雜湊透過網路傳送,將可使系統更加安全。 如需關於 Kerberos 的更多資訊,請參考 Red Hat Enterprise Linux 參考手冊 一書中的 Kerberos 章節。