server-memo.net

suコマンドを実行できるユーザを制限する方法

      2017/05/10

なぜsuの使用を制限するの?

多くのLinux初期設定では全てのユーザが「su」コマンドを使用することによって、rootユーザになることが出来てしまいます。

これは、rootのパスワードが分ってしまえば誰でもssh経由でrootになれるということになり、セキュリィテ上ちょっと問題があるので「su」を実行出来るユーザの制限を行うことにします。

パスワード管理の甘いユーザのアカウント経由で攻撃を受けたり、何かの拍子でrootのパスワードを知ってしまったユーザに、色々と設定等をいじられては困りますから…

注意点

この設定を行うとwheelグループ以外のユーザが「su」コマンドでrootになれないだけでは無く、他のユーザにもsuすることが出来なくなりますので注意してください。

設定

「su」の実行制限として、wheelグループに所属しているユーザのみ「su」の実行が可能という条件で設定を行っていきます。

設定項目

「su」の使用を制限するには下記の設定を行う必要があるので、それぞれの設定方法について説明を行っていきます。

  • /etc/pam.d/su
  • su 許可ユーザをwheelグループに追加

/etc/login.defsの設定について

以前は「/etc/login.defs」に「SU_WHEEL_ONLY yes」という設定の追加が必要でしたが最近は必要ありません。(CentOS6とCentOS7で確認しました)

/etc/pam.d/su

「pam_wheel.so」モジュールを使用するように設定を変更し、wheelグループに属しているユーザのみ 「su」が出来るように設定変更します。

# cp -p /etc/pam.d/su /etc/pam.d/su_yyyymmdd
# vi /etc/pam.d/su

設定内容

下記のコメントで無効化されている箇所の「#」を外して設定を有効化します。

変更前
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
変更後
# Uncomment the following line to require a user to be in the "wheel" group.
auth           required        pam_wheel.so use_uid

※なお、別のOS(ディストリビューション)やバージョンによっては、以下のような設定な場合もあるようです。

#auth required /lib/security/$ISA/pam_wheel.so use_uid
#auth required /lib/security/pam_wheel.so group=wheel
#auth required /lib/security/pam_wheel.so use_uid group=wheel

編集時の注意

間違って下記部分のコメントをはずしてしまうと、wheelグループに属しているユーザが「su」を実行するとパスワードなしでrootになれてしまうので、間違えないよう十分に注意してください。

# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid

設定を有効化させるのは「required」の方です。

ユーザをwheelグループに追加

最後に「su」を許可するユーザをwheelグループへ追加します。
追加は下記のどちらかの方法で行うことが出来るので、それぞれの方法を説明していきま。

  • /etc/groupを編集
  • usermodコマンドを使用

/etc/groupファイルを編集

グループの設定ファイルである「/etc/group」を直接編集して、wheelグループにユーザを追加します。

# cp -p /etc/group /etc/group_yyyymmdd
# vi /etc/group

編集内容

今回は、hogeというユーザをwheelグループに追加してみます。

複数のユーザを追加する際は「,」で区切っていきます。

編集前
wheel:x:10:
編集後
wheel:x:10:hoge  <--hogeユーザを追加

usermod コマンドを使用

「usermod」コマンドを使用してwheelグループにユーザを追加する場合は「-G」オプションを使用して、指定したユーザの副グループを指定します。

# usermod -G wheel ユーザ名

wheelグループにhogeユーザを追加する場合は、下記のようにコマンドを実行します。

# usermod -G wheel hoge
設定確認

設定が完了しましたら、念のため「/etc/group」ファイルの中身を確認してwheelグループにユーザが追加されているか確認してみましょう。

# grep wheel /etc/group
wheel:x:10:hoge

動作確認

動作確認時の注意点

設定が完了しましたら動作確認を行っていきますが、設定に間違いなどがあった場合ssh経由でrootになることが出来なくなる場合があるので、現在接続しているrootユーザでの接続は動作確認が取れるまで絶対に切断しないようにしてください。

sshで接続して動作確認を行う場合は、新規に接続を行って動作確認を行いましょう。

wheelグループ以外のユーザで「su」を実行

まずは、wheelグループに登録されていないユーザで「su」コマンドを実行してましょう。

CentOS7の場合下記の通り「拒否されたパーミッション」といったメッセージが表示され「su」が出来なくなっているはずです

$ su -
パスワード:
su: 拒否されたパーミッション

CentOS6の場合は「パスワードが違います」といったメッセージが表示され、「su」が出来なくなっているはずです。

$ su -
Password:
su: パスワードが違います

wheelグループのユーザで「su」を実行

wheelグループに所属しているユーザで「su」を実行して、rootになれるか確認してみてください。

問題なくrootユーザになれるようでしたら、設定作業は完了となります。

 - システム設定