8.3. NFS サービスの保護
ファイルシステム操作に Kerberos 認証と暗号化を使用して、ネットワークファイルシステム (NFS) を保護します。適切なセキュリティー設定は、ネットワーク経由でファイルシステムをマウントするリモートホストを保護するのに役立ちます。
ネットワークアドレス変換 (NAT) またはファイアウォールで NFSv4 を使用する場合に、/etc/default/nfs ファイルを変更することで委譲をオフにできます。委譲は、サーバーがファイルの管理をクライアントに委譲する手法です。対照的に、NFSv3 ではファイルのロックとマウントに Kerberos は使用されません。
NFS サービスは、すべてのバージョンの NFS で TCP を使用してトラフィックを送信します。このサービスは、RPCSEC_GSS カーネルモジュールの一部として Kerberos ユーザーおよびグループ認証をサポートします。
NFS を利用すると、リモートのホストがネットワーク経由でファイルシステムをマウントし、そのファイルシステムを、ローカルにマウントしているファイルシステムのように操作できるようになります。集約サーバーのリソースを統合して、ファイルシステムを共有するときに /etc/nfsmount.conf ファイルの NFS マウントオプションをさらにカスタマイズできます。
8.3.1. NFS サーバーのセキュリティーを保護するエクスポートオプション リンクのコピーリンクがクリップボードにコピーされました!
/etc/exports ファイルのエクスポートオプションを使用して、エクスポートされたファイルシステムにアクセスできるホストと、そのホストが保持する権限を定義します。これにより、アクセスを制御し、セキュリティーリスクを抑えることができます。
NFS サーバーは、/etc/exports ファイル内のディレクトリーとホストのリスト、およびどのファイルシステムをどのホストにエクスポートするかを決定します。
/etc/exports ファイルでは次のエクスポートオプションを使用できます。
ro- NFS ボリュームを読み取り専用としてエクスポートします。
rw-
NFS ボリュームに対する読み取りおよび書き込み要求の許可を制御します。書き込みアクセスを許可すると攻撃のリスクが高まるため、このオプションは慎重に使用してください。
rwオプションを使用してディレクトリーをマウントする必要がある場合は、起こりうるリスクを軽減するために、すべてのユーザーがディレクトリーに書き込み可能にしないようにしてください。 root_squash-
uid/gid0 からの要求を匿名のuid/gidにマップします。これは、binユーザーやstaffグループなど、同様に機密性が高い可能性のある他の UID または GID には適用されません。 no_root_squash-
root squash をオフにします。デフォルトでは、NFS 共有は
rootユーザーを、非特権ユーザーであるnobodyユーザーに変更します。これにより、rootが作成したすべてのファイルの所有者がnobodyに変更され、setuidビットが設定されたプログラムのアップロードができなくなります。no_root_squashオプションを使用すると、リモートの root ユーザーは共有ファイルシステムの任意のファイルを変更し、他のユーザーに対してアプリケーションが Trojans に感染した状態のままにします。 secure-
予約ポートへのエクスポートを制限します。デフォルトでは、サーバーは予約済みポートからのクライアント通信のみを許可します。ただし、多くのネットワークで、クライアント上で
rootユーザーになるのは簡単です。そのため、サーバーで予約されたポートからの通信が特権であると仮定することは安全ではありません。したがって、予約ポートへの制限はあまり意味がありません。Kerberos、ファイアウォール、および特定のクライアントへのエクスポート制限に頼る方が得策です。
詳細は、システム上の exports(5) および nfs(5) man ページを参照してください。
/etc/exports ファイルの構文に余分なスペースを加えると、設定が大幅に変更される可能性があります。
次の例では、/tmp/nfs/ ディレクトリーは bob.example.com ホストと共有されており、読み取りおよび書き込み権限が与えられています。
/tmp/nfs/ bob.example.com(rw)
次の例は前の例と同じですが、ホスト名の後にスペース文字が 1 つあるため、bob.example.com ホストには読み取り専用権限で同じディレクトリーが共有される一方で、すべてのホスト には読み取りおよび書き込み権限で共有されてしまいます。
/tmp/nfs/ bob.example.com (rw)
showmount -e <hostname> コマンドを入力すると、システム上の共有ディレクトリーを確認できます。
また、NFS サーバーをエクスポートする際に、以下のベストプラクティスを考慮してください。
- 一部のアプリケーションでは、パスワードをプレーンテキストまたは弱い暗号化形式で保存するため、ホームディレクトリーをエクスポートすることはリスクがあります。アプリケーションコードを確認して改善することで、リスクを軽減できます。
- 一部のユーザーは SSH 鍵にパスワードを設定していません。これもホームディレクトリーに対するリスクとなります。パスワードの使用を強制するか、Kerberos を使用することで、これらのリスクを軽減できます。
-
NFS エクスポートを必要なクライアントのみに制限します。NFS サーバーで
showmount -eコマンドを使用して、サーバーのエクスポート内容を確認します。特に必要のないものはエクスポートしないでください。 - 攻撃のリスクを減らすために、不要なユーザーがサーバーにログインできないようにしてください。サーバーにアクセスできるユーザーを定期的に確認してください。
ファイルシステムのサブディレクトリーをエクスポートするのはセキュアではないため、ファイルシステム全体をエクスポートしてください。攻撃者が、部分的にエクスポートされたファイルシステムのエクスポートされていない部分にアクセスする可能性があります。