Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.7. NFS のセキュア化

NFS は、多数の既知のホストを持つファイルシステム全体を透過的な共有するのに適しています。ただし、使いやすさには、さまざまな潜在的なセキュリティー問題があります。サーバーで NFS ファイルシステムをエクスポートする場合や、クライアントにマウントする際に、NFS セキュリティーリスクを最小限に抑え、サーバーのデータを保護するには、以下のセクションを検討してください。

8.7.1. AUTH_SYS とエクスポート制御による NFS セキュリティー

従来は、NFS には、エクスポートされたファイルへのアクセスを制御するために 2 つのオプションが指定されています。
まず、サーバーは、IP アドレスまたはホスト名によりどのファイルシステムをマウントできるかを制限します。
次に、サーバーは、ローカルユーザーと同じ方法で、NFS クライアントのユーザーに対してファイルシステムの権限を強制します。従来は、クライアントに依存する AUTH_SYS (AUTH_UNIXとも呼ばれます)を使用して、ユーザーの UID と GID を提示します。これは、悪意のあるクライアントや誤って設定されたクライアントが簡単にこの間違いを入手でき、ユーザーがアクセスすべきではないファイルにアクセスできる可能性があることに注意してください。
潜在的なリスクを制限するため、管理者は、共通のユーザー ID およびグループ ID に対して読み取り専用アクセスまたはユーザー権限を下げることを許可します。ただし、このソリューションにより、NFS 共有が元々想定されている方法では使用されなくなります。
さらに、攻撃者が、NFS ファイルシステムをエクスポートするシステムが使用する DNS サーバーを制御できた場合は、特定のホスト名または完全修飾ドメイン名に関連付けられたシステムが、承認されていないマシンを参照することができます。これで、認証されていないマシンは、NFS 共有のマウントを許可するシステムになります。これは、ユーザー名やパスワード情報が交換されず、NFS マウントに追加のセキュリティーが提供されるためです
NFS 経由でディレクトリーのエクスポートを行う際にワイルドカードを使用する場合は慎重に行ってください。ワイルドカードの対象が予定よりも広い範囲のシステムを含む可能性があるためです。
TCP ラッパーを使用して、rpcbind[1] サービスへのアクセスを制限することもできます。iptables でルールを作成すると、rpcbind、rpc.mountd、および rpc.nfsd が使用するポートへのアクセスを制限することもできます。
NFS および rpcbind のセキュリティー保護の詳細は、man iptables を参照してください

8.7.2. AUTH_GSSを使用したNFS セキュリティー

NFSv4 は、RPCSEC_GSS および Kerberos バージョン 5 GSS-API メカニズムの実装を調整することで、NFS セキュリティーを再アクティブ化します。ただし、RPCSEC_GSS および Kerberos のメカニズムは、すべての NFS バージョンでも利用できます。FIPS モードでは、FIPS 承認されるアルゴリズムのみを使用できます。
AUTH_SYS とは異なり、RPCSEC_GSS Kerberos メカニズムでは、サーバーは、どのユーザーがそのファイルにアクセスしているかを正確に表すようにクライアントに依存しません。代わりに、暗号を使用してサーバーにユーザーを認証し、悪意のあるクライアントがそのユーザーの Kerberos 認証情報を持たずにユーザーになりすますことがないようにします。RPCSEC_GSS Kerberos メカニズムを使用することが、マウントを保護する最も簡単な方法になります。Kerberos の設定後は、追加の設定は必要ありません。

Kerberos の設定

NFSv4 Kerberos 対応サーバーを設定する前に、Kerberos Key Distribution Centre(KDC)をインストールおよび設定する必要があります。Kerberos は、対称暗号化と信頼できるサードパーティー(KDC)を使用してクライアントとサーバーが相互に認証できるようにするネットワーク認証システムです。Red Hat は、Kerberos の設定に Identity Management(IdM)を使用することを推奨します。

手順8.3 IdM が RPCSEC_GSS を使用するための NFS サーバーおよびクライアントの設定

    • NFS サーバー側で、nfs/hostname.domain@REALM プリンシパルを作成します。
    • サーバーとクライアントに、host/hostname.domain@REALM を作成します。
    • クライアントとサーバーのキータブに、対応する鍵を追加します。
    手順は、『Red Hat Enterprise Linux 7 Linux ドメイン ID、認証、およびポリシーガイド』の「サービスエントリーの追加と編集 」と「Kerberos 対応の NFS サーバーの設定 」セクションを参照してください。
  1. サーバーで、sec= オプションを使用して、希望するセキュリティーフレーバーを有効にします。すべてのセキュリティーフレーバーと非暗号化マウントを有効にするには、以下のコマンドを実行します。
    /export *(sec=sys:krb5:krb5i:krb5p)
    
    sec= オプションを使用するのに有効なセキュリティーフレーバーは、以下のようになります。
    • sys - 暗号化の保護なし (デフォルト)
    • krb5 - 認証のみ
    • krb5i - インテグリティー保護
    • krb5p - プライバシー保護
  2. クライアントで、sec=krb5 (または設定に応じて sec=krb5i または sec=krb5p )をマウントオプションに追加します。
    # mount -o sec=krb5 server:/export /mnt
    

関連情報

8.7.2.1. NFSv4 での NFS セキュリティー

NFSv4 には、Microsoft Windows NT モデルの機能や幅広いデプロイメントにより、POSIX モデルではなく、Microsoft Windows NT モデルをベースとした ACL サポートが含まれます。
NFSv4 のもう 1 つの重要なセキュリティー機能は、ファイルシステムのマウントに MOUNT プロトコルを使用しなくなることです。MOUNT プロトコルは、プロトコルがファイルを処理する方法により、セキュリティー上のリスクが発生します。

8.7.3. ファイル権限

リモートホストにより NFS ファイルシステムを読み取りまたは読み書きとしてマウントされると、各共有ファイルに対する唯一の保護がパーミッションになります。同じユーザー ID の値を共有する 2 つのユーザーが同じ NFS ファイルシステムをマウントする場合は、互いのファイルを修正できます。また、クライアントシステムで root としてログインした場合は、su - コマンドを使用して、NFS 共有が設定されたファイルにアクセスできます。
デフォルトでは、アクセス制御リスト(ACL)は、Red Hat Enterprise Linux の NFS で対応しています。Red Hat では、この機能を有効にしておくことを推奨します。
デフォルトでは、NFS がファイルシステムをエクスポートする際に、root squashing を使用します。これにより、NFS 共有にアクセスするユーザーのユーザー ID が、ローカルマシンの root ユーザーとして nobody に設定されます。root squashing は、デフォルトのオプション root_squash /etc/exports 設定ファイル」。可能な場合は、root squashing を無効にしないでください。
NFS 共有を読み取り専用としてエクスポートする場合は、all_squash オプションの使用を検討してください。このオプションでは、エクスポートしたファイルシステムにアクセスするすべてのユーザーが、nfsnobody ユーザーのユーザー ID を取得します。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。