CIS Level 1 - Server (1)
はじめに
RHEL OSインストール時のGUI画面でセキュリティプロファイルの設定項目がありますが、普段検証環境でサーバを立てるときは何も設定せずに構築していました。今回はこのセキュリティプロファイルで指定できる「CIS Level1 - Server」を指定して構築し、どのようなセキュリティ設定がなされるか確認します。
セキュリティプロファイルとは
セキュリティプロファイルとは、CIS、STIG、PCI-DSSなどのセキュリティ基準に基づいて、OSを安全に構成するための設定テンプレートです。RHELのOSインストール時に選択することで、インストール設定が基準を満たしているか確認し、必要なセキュリティ設定を適用します。
OSインストール
OSインストール時は以下の設定を選択後の状態からセキュリティプロファイルを設定します。
- ソフトウェア選択 … 最小限インストール
- インストール先 … 自動パーティション設定
- rootパスワード … 8文字(数字+アルファベット)
- ネットワークとホスト名 … IPv4固定IP、IPv6自動
- パスワードによるroot SSHログインを許可

セキュリティプロファイル選択画面で、「セキュリティポリシーを適用」のトグルをオンにし、「CIS Red Hat Enterprise Linux 9 Benchamark for Level1 - Server」を選択して「プロファイルの選択ボタン」をクリックします。

下段の「完了済みの変更または必要な変更」の欄に警告メッセージが出てきます。
パーティションを分けなければいけないというメッセージと、インストール予定パッケージ、インストール除外パッケージを指定したというメッセージになっています。セキュリティ的に必要なパッケージの追加とOS動作に不要なパッケージの除外設定が行われています。



パーティションの方は手動で指定し直す必要があるので、インストールGUIのパーティション設定画面で設定します。
作成しなければならないのは以下のパーティションです。領域を分けることで容量枯渇による影響をOSや他の領域に及ぼさないような分け方となり、また領域毎にセキュリティ制限を設定することが可能になります。
- /tmp
- /home
- /var/log/audit
- /var/log
- /var
- /var/tmp

※パーティションサイズは適当です。
指定の通りにパーティション設定を行うと、セキュリティプロファイルの項目に「すべてOK」と表示されますので、OSインストールを進められます。

確認
OSインストール完了後、セキュリティプロファイルに「CIS Level 1 - Server」を指定してOSインストールを行った場合と、セキュリティプロファイルを指定せずにOSインストールを行った場合で、それぞれの/etc/fstabを比較してみます。
CIS Level 1 - Server を指定した場合:
/dev/mapper/rhel_rhel98-root / xfs defaults 0 0
UUID=bf537d02-5f36-4977-983e-33f8fc3b5a88 /boot xfs defaults 0 0
UUID=DF08-9EAB /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/rhel_rhel98-home /home xfs defaults,nodev,nosuid 0 0
/dev/mapper/rhel_rhel98-tmp /tmp xfs defaults,nodev,noexec,nosuid 0 0
/dev/mapper/rhel_rhel98-var /var xfs defaults,nodev,nosuid 0 0
/dev/mapper/rhel_rhel98-var_log /var/log xfs defaults,nodev,noexec,nosuid 0 0
/dev/mapper/rhel_rhel98-var_log_audit /var/log/audit xfs defaults,nodev,noexec,nosuid 0 0
/dev/mapper/rhel_rhel98-var_tmp /var/tmp xfs defaults,nodev,noexec,nosuid 0 0
/dev/mapper/rhel_rhel98-swap none swap defaults 0 0
tmpfs /dev/shm tmpfs defaults,relatime,inode64,nodev,noexec,nosuid 0 0CIS Level 1 - Server を指定しない場合:
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=003ee957-e80b-4e5d-8c66-51a3158da35d /boot xfs defaults 0 0
UUID=1636-2733 /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/rhel-home /home xfs defaults 0 0
/dev/mapper/rhel-tmp /tmp xfs defaults 0 0
/dev/mapper/rhel-var /var xfs defaults 0 0
/dev/mapper/rhel-var_log /var/log xfs defaults 0 0
/dev/mapper/rhel-var_log_audit /var/log/audit xfs defaults 0 0
/dev/mapper/rhel-var_tmp /var/tmp xfs defaults 0 0
/dev/mapper/rhel-swap none swap defaults 0 0CIS Level 1 - Serverを指定した場合では動作を制限するマウントオプションが追加されています。tmpfsの/dev/shmも切り出されて制限が追加されています。追加されたマウントオプションの意味は以下です。
- nodev: デバイス特殊ファイルをデバイスとして利用させない
- noexec: プログラムを直接実行させない
- nosuid: SUID/SGIDによる権限変更をさせない
noexecが設定されている/dev/shmでプログラムが直接実行されないことを確認してみると、直接実行が拒否されました。
但し、他のプログラムから読み込まれる場合は拒否されずに実行されてしまいます。
# cat /dev/shm/hello.sh
echo "Hello world"
# chmod +x /dev/shm/hello.sh
# ll /dev/shm/hello.sh
-rwxr-x---. 1 root root 19 8月 20 11:37 /dev/shm/hello.sh
# /dev/shm/hello.sh
-bash: /dev/shm/hello.sh: 許可がありません
# sh /dev/shm/hello.sh
Hello worldまとめ
今回は、CIS Level 1を適用した環境で設定されるディスクのマウントオプションについて、通常インストール時との違いや、noexecを設定した領域での動作を確認してみました。CIS Level 1では、noexecのほかにもnodevやnosuidなどのマウントオプションが設定され、ファイルシステムから利用できる機能を制限することでセキュリティを強化しています。
CIS Level 1を導入する際には、設定を適用するだけでなく、各オプションの役割やアプリケーションへの影響についても確認しておくことが重要です。

