NIS はネットワークインフォメーションサービスの略です。NIS は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 サーバーの導入を予定している場合、項5.2の説明通り、初めにportmap サービスの 安全性を確認して下さい。 その後、次にあげる問題に対応して下さい。
NIS は機密情報を暗号化しないままネットワーク上に配信するため、 安全で、セグメント化されたネットワーク上のファイヤウォールの裏でサービスを 実行する必要があります。NIS の情報が安全でないネットワーク上で配信されるたび、 妨害を受けるリスクにさらされます。このような問題を考慮した慎重なネットワーク設計をすることは重大なセキュリティー違反の回避につながります。
NISサーバーのDNSホスト名とNISドメイン名を知っているユーザーは、NISドメイン内 のコンピューターなら認証なしでコマンドを使ってサーバーから情報を引き出すことができます。
例えば、誰かがノート型PCをネットワークに接続するか、外部からネットワークに侵入し うまく内部IPアドレスをごまかした場合、下記コマンドにて /etc/passwdマップ を確認することができます。
ypcat -d <NIS_domain> -h <DNS_hostname> passwd |
この攻撃者がルートユーザである場合、次のコマンドを入力すると/etc/shadowファイルを入手することができます。
ypcat -d <NIS_domain> -h <DNS_hostname> shadow |
![]() | 注記 |
---|---|
Kerberos が使用された場合、/etc/shadowファイルにはNISマップには保存されません。 |
攻撃者によるNISマップへのアクセスを困難にするため、 o7hfawtgmhwg.domain.comのように無作為なDNSホスト名を設定して下さい。 同様に、 異なる 無作為なNISドメイン名を設定して下さい。 これにより、攻撃者によるNISサーバーへのアクセスは一層困難になります。
/var/yp/securenetsが空か存在しない場合 (デフォルトインストールの場合は該当します)、NIS はすべてのネットワークをリッスンします。 最初に、ypservが正当なネットワークからの要求のみに応答するよう、 ネットマスクとネットワークの組をファイルに格納します。
/var/yp/securenets ファイルからエントリー例は下記の通りです:
255.255.255.0 192.168.0.0 |
![]() | 警告 |
---|---|
必ず/var/yp/securenets を作成してからNISサーバーを初めて起動して下さい。 |
このテクニックではIPになりすました攻撃から保護することはできませんが、 少なくともNISサーバーがサービス提供するネットワークを制限することができます。
rpc.yppasswdd — ユーザーにログインパスワードの変更を許可するデーモン— 以外のNIS関連サーバーに特定ポートの割り当てが可能です。 他の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 |
![]() | ヒント |
---|---|
IPTablesコマンドでファイヤボールを導入する場合の詳細は第7章 をご参照下さい。 |