第11章 ポリインスタンス化されたディレクトリーの設定
デフォルトでは、すべてのプログラム、サービス、およびユーザーは、一時ストレージとして /tmp、/var/tmp、およびホームディレクトリーを使用します。これにより、これらのディレクトリーは、ファイル名に基づく競合状態攻撃や情報漏洩に対して脆弱になります。/tmp/、/var/tmp/、およびホームディレクトリーをインスタンス化して、これらがすべてのユーザー間で共有されないようにし、各ユーザーの /tmp-inst および /var/tmp/tmp-inst が /tmp および /var/tmp ディレクトリーに個別にマウントされるようにすることができます。
手順
SELinux でポリインスタンス化を有効にする:
setsebool -P allow_polyinstantiation 1
# setsebool -P allow_polyinstantiation 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow getsebool allow_polyinstantiationコマンドを入力すると、SELinux でポリインスタンス化が有効になっているかどうかを確認できます。必要な権限を使用して、再起動後もデータが永続的になるようにディレクトリー構造を作成します。
mkdir /tmp-inst /var/tmp/tmp-inst --mode 000
# mkdir /tmp-inst /var/tmp/tmp-inst --mode 000Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux ユーザー部分を含むセキュリティーコンテキスト全体を復元します。
restorecon -Fv /tmp-inst /var/tmp/tmp-inst
# 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:s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムで
fapolicydアプリケーション制御フレームワークを使用している場合は、/etc/fapolicyd/fapolicyd.conf設定ファイルでallow_filesystem_markオプションを有効にして、基礎となるファイルシステムがバインドマウントされているときに、fapolicydがファイルアクセスイベントを監視できるようにします。allow_filesystem_mark = 1
allow_filesystem_mark = 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow /tmp、/var/tmp/、およびユーザーのホームディレクトリーのインスタンス化を有効にします。重要pam_namespace_helperプログラムは/etc/security/namespace.d内の追加ファイルを読み取らないため、/etc/security/namespace.d/ディレクトリー内の別のファイルではなく、/etc/security/namespace.confを使用します。マルチレベルセキュリティー (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
/tmp /tmp-inst/ level root,adm /var/tmp /var/tmp/tmp-inst/ level root,adm $HOME $HOME/$USER.inst/ levelCopy to Clipboard Copied! Toggle word wrap Toggle overflow マルチレベルセキュリティー (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
/tmp /tmp-inst/ user root,adm /var/tmp /var/tmp/tmp-inst/ user root,adm $HOME $HOME/$USER.inst/ userCopy to Clipboard Copied! Toggle word wrap Toggle overflow
セッションに
pam_namespace.soモジュールが設定されていることを確認します。grep namespace /etc/pam.d/login
$ grep namespace /etc/pam.d/login session required pam_namespace.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: クラウドユーザーが SSH キーを使用してシステムにアクセスできるようにします。
-
openssh-keycatパッケージをインストールします。 /etc/ssh/sshd_config.d/ディレクトリーに次の内容のファイルを作成します。AuthorizedKeysCommand /usr/libexec/openssh/ssh-keycat AuthorizedKeysCommandRunAs root
AuthorizedKeysCommand /usr/libexec/openssh/ssh-keycat AuthorizedKeysCommandRunAs rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow sshd_configのPubkeyAuthentication変数がyesに設定されているかどうかを確認して、公開鍵認証が有効になっていることを確認します。デフォルトでは、sshd_configの行がコメントアウトされているにもかかわらず、PubkeyAuthenticationは yes に設定されています。grep -r PubkeyAuthentication /etc/ssh/
$ grep -r PubkeyAuthentication /etc/ssh/ /etc/ssh/sshd_config:#PubkeyAuthentication yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
ポリインスタンス化を適用する各サービスのモジュールに、
session required pam_namespace.so unmnt_remntエントリーを、session 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 [...]
[...] session include system-auth session required pam_namespace.so unmnt_remnt [...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- 非 root ユーザーとしてログインします。ポリインスタンス化が設定される前にログインしていたユーザーは、変更が有効になる前にログアウトしてログインする必要があります。
/tmp/ディレクトリーが/tmp-inst/の下にマウントされていることを確認します。findmnt --mountpoint /tmp/
$ findmnt --mountpoint /tmp/ TARGET SOURCE FSTYPE OPTIONS /tmp /dev/vda1[/tmp-inst/<user>] xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquotaCopy to Clipboard Copied! Toggle word wrap Toggle overflow SOURCEの出力は環境によって異なります。* 仮想システムでは、/dev/vda_<number>_と表示されます。* ベアメタルシステムでは、/dev/sda_<number>_または/dev/nvme*が表示されます。