第11章 ポリインスタンス化されたディレクトリーの設定


デフォルトでは、すべてのプログラム、サービス、およびユーザーは、一時ストレージとして /tmp/var/tmp、およびホームディレクトリーを使用します。これにより、これらのディレクトリーは、競合状態攻撃やファイル名に基づく情報漏洩に対して脆弱になります。/tmp//var/tmp/、およびホームディレクトリーをインスタンス化して、これらがすべてのユーザー間で共有されないようにし、各ユーザーの /tmp-inst および /var/tmp/tmp-inst が/tmp および /var/tmp ディレクトリーに個別にマウントされるようにすることができます。

手順

  1. SELinux でポリインスタンス化を有効にする:

    # setsebool -P allow_polyinstantiation 1

    getsebool allow_polyinstantiation コマンドを入力すると、SELinux でポリインスタンス化が有効になっているかどうかを確認できます。

  2. 必要な権限を使用して、再起動後もデータが永続的になるようにディレクトリー構造を作成します。

    # mkdir /tmp-inst /var/tmp/tmp-inst --mode 000
  3. SELinux ユーザー部分を含むセキュリティーコンテキスト全体を復元します。

    # restorecon -Fv /tmp-inst /var/tmp/tmp-inst
    Relabeled /tmp-inst from unconfined_u:object_r:default_t:s0 to system_u:object_r:tmp_t:s0
    Relabeled /var/tmp/tmp-inst from unconfined_u:object_r:tmp_t:s0 to system_u:object_r:tmp_t:s0
  4. システムで fapolicyd アプリケーション制御フレームワークを使用している場合は、/etc/fapolicyd/fapolicyd.conf 設定ファイルで allow_filesystem_mark オプションを有効にして、基礎となるファイルシステムがバインドマウントされているときに、fapolicyd がファイルアクセスイベントを監視できるようにします。

    allow_filesystem_mark = 1
  5. /tmp/var/tmp/、およびユーザーのホームディレクトリーのインスタンス化を有効にします。

    重要

    pam_namespace_helper プログラムは /etc/security/namespace.d 内の追加ファイルを読み取らないため、/etc/security/namespace.d/ ディレクトリー内の別のファイルではなく、/etc/security/namespace.conf を使用します。

    1. マルチレベルセキュリティー (MLS) を備えたシステムでは、/etc/security/namespace.conf ファイルの最後の 3 行のコメントを解除します。

      /tmp     /tmp-inst/   		   level 	 root,adm
      /var/tmp /var/tmp/tmp-inst/    level 	 root,adm
      $HOME    $HOME/$USER.inst/     level
    2. マルチレベルセキュリティー (MLS) のないシステムでは、/etc/security/namespace.conf ファイルに次の行を追加します。

      /tmp     /tmp-inst/            user 	 root,adm
      /var/tmp /var/tmp/tmp-inst/    user 	 root,adm
      $HOME    $HOME/$USER.inst/     user
  6. セッションに pam_namespace.so モジュールが設定されていることを確認します。

    $ grep namespace /etc/pam.d/login
    session    required     pam_namespace.so
  7. オプション: クラウドユーザーが SSH キーを使用してシステムにアクセスできるようにします。

    1. openssh-keycat パッケージをインストールします。
    2. /etc/ssh/sshd_config.d/ ディレクトリーに次の内容のファイルを作成します。

      AuthorizedKeysCommand /usr/libexec/openssh/ssh-keycat
      AuthorizedKeysCommandRunAs root
    3. sshd_configPubkeyAuthentication 変数が yes に設定されているかどうかを確認して、公開鍵認証が有効になっていることを確認します。デフォルトでは、sshd_config の行がコメントアウトされているにもかかわらず、PubkeyAuthentication は yes に設定されています。

      $ grep -r PubkeyAuthentication /etc/ssh/
      /etc/ssh/sshd_config:#PubkeyAuthentication yes
  8. ポリインスタンス化を適用する各サービスのモジュールに、セッションに必要な pam_namespace.so unmnt_remnt エントリーを、セッションの include system-auth 行の後に追加します。たとえば、/etc/pam.d/su/etc/pam.d/sudo/etc/pam.d/ssh/etc/pam.d/sshd の場合:

    [...]
    session        include        system-auth
    session        required    pam_namespace.so unmnt_remnt
    [...]

検証

  1. 非 root ユーザーとしてログインします。ポリインスタンス化が設定される前にログインしていたユーザーは、変更が有効になる前にログアウトしてログインする必要があります。
  2. /tmp/ ディレクトリーが /tmp-inst/ の下にマウントされていることを確認します。

    $ findmnt --mountpoint /tmp/
    TARGET SOURCE                 	FSTYPE OPTIONS
    /tmp   /dev/vda1[/tmp-inst/<user>] xfs	rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota

    SOURCE 出力は環境によって異なります。* 仮想システムでは、/dev/vda_<number>_ が表示されます。* ベアメタルシステムでは、/dev/sda_<number>_ または /dev/nvme* が表示されます。

関連情報

  • /usr/share/doc/pam/txts/README.pam_namespace の readme ファイルは pam パッケージとともにインストールされます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.