Contents
概要
suが可能なユーザーを制限します。sudoとは別です。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
所感
本稿の設定により一般ユーザーがsuコマンドでrootへのアクセス試行を防止できますが、合わせてSSHのrootログインも無効化したほうが良いでしょう。尚、対象のCentOSの管理者が1人であれば敢えて管理ユーザーを作成するメリットは多くありません。逆に通常使用しない管理不行き届きのユーザーが存在することがセキュリティリスクにつながる場合もあります。
設定
管理ユーザー
ここでいう管理ユーザーはsuコマンドが実行可能なユーザーを差します。ユーザー名、グループ名、番号等は任意です。wheelグループに含めます。
[root@centos ~]# groupadd -g 1000 myadmin [root@centos ~]# useradd -g 1000 -u 1000 myadmin [root@centos ~]# usermod -G wheel myadmin [root@centos ~]# passwd myadmin
追加した内容は下記のコマンドで確認できます。
[root@centos ~]# id myadmin uid=1000(myadmin) gid=1000(myadmin) groups=1000(myadmin),10(wheel)
/etc/pam.d/su
suのデフォルト値
コメント行等を削除した/etc/pam.d/suは下記の通りです。
#%PAM-1.0 auth required pam_env.so auth sufficient pam_rootok.so auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so
suの設定
PAMモジュール(pam_wheel.so)を使用してsuが可能なユーザーを制限します。対象の設定ファイルは/etc/pam.d/suです。以降、wheelグループに含まれるユーザーのみがsuコマンドを使用できます。
[root@centos ~]# vim /etc/ssh/sshd_config #%PAM-1.0 auth required pam_env.so auth sufficient pam_rootok.so auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so
仮にwheelグループに含まれないユーザーからsu -(rootへのスイッチ)を実行すると、下記のようにパスワードを求められますが、正しいパスワードを入力しても拒否されます。誤ったパスワードを入力した場合でも同じ結果となります。尚、su自体の制限となるため、root以外へのsuも全て禁止されます。
[user@centos ~]$ su - パスワード: su: 拒否されたパーミッション
CentOS 8 管理ユーザーの作成と su コマンドの制限