#suを使用制限すると?
一部を除いたLinux初期設定では全ユーザがsuを使用することで、rootユーザになることが出来てしまいます。rootのパスワードが分ってしまえば誰でもssh経由でrootになれてしまいますのでセキュリティ上まずい場面もあると思います。今回は「su」を実行出来るユーザを制限する事にしました。
##注意点
この設定を行うと以下2点が実行できなくなります。
・wheelグループ以外のユーザが「su」コマンドでrootになれなくなります。
・他ユーザにもsuすることが出来なくなります。
今回は__wheelグループに所属しているユーザだけが「su」実行可能__という制限設定を構築していきたいと思います。
#具体的実行ステップ 設定項目
下記3ステップでsu利用制限させる事が出来ます。
ステップ1 /etc/pam.d/su を編集する
ステップ2 su 許可ユーザをwheelグループに追加
ステップ3 動作確認
※ 以前は「/etc/login.defs」ファイル内に「SU_WHEEL_ONLY yes」設定追加が必要でしたが、CentOS6及びCentOS7では不要です。
#ステップ1 /etc/pam.d/su
/etc/pam.d/su のファイルの中にある「pam_wheel.so」モジュールを使用するように設定変更します。これによりwheelグループに属しているユーザだけが「su」が出来るように設定が変更になります。
# 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
##ちょい注意ポイント sufficient
間違って下記部分のコメントをはずすと wheelグループに属しているユーザが「su」を実行するとパスワードなしでrootになれてしまいます。コメントを外す時は間違えないよう十分に注意してください。
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
設定を有効化させるのは「required」です。
#ステップ2 ユーザをwheelグループに追加
「su」を許可するユーザをwheelグループへ追加します。追加方法は2つあります。下記のどちらかの方法で行うことが出来るのでそれぞれの方法を説明していきます。
グループを追加する方法は2つある
1. /etc/groupを編集する
2. usermodコマンドを使用する
##1つめ /etc/groupファイルを編集
グループの設定ファイルである「/etc/group」を直接編集して、wheelグループにユーザを追加します。
# vi /etc/group
編集内容
今回は、hogeというユーザをwheelグループに追加してみます。複数のユーザを追加する際は「,」で区切っていきます。
編集前
wheel:x:10:
編集後
wheel:x:10:hoge <--hogeユーザを追加しました。
##2つめ usermod コマンドを使用
「usermod」コマンドを使用しwheelグループにユーザを追加する場合は「-G」オプションを使用し指定したユーザの副グループを指定します。
# usermod -G wheel ユーザ名
wheelグループにhogeユーザを追加する場合は、下記のようにコマンドを実行します。
# usermod -G wheel hoge
###グループがユーザに追加しているか設定を確認
設定が完了しましたら、念のため「/etc/group」ファイルの中身を確認してwheelグループにユーザが追加されているか確認してみましょう。
# grep wheel /etc/group
wheel:x:10:hoge
#ステップ3 動作確認
設定が完了しましたらsu実行可能userが制限できているか確認します。設定に間違いなどがあった場合ssh経由でrootになることが出来なくなる場合があるので、現在接続しているrootユーザでの接続は動作確認が取れるまで__絶対に切断しない__よう留意してください。sshで接続して動作確認を行う場合は、新規に接続を行って動作確認を行いましょう。
##wheelグループ以外のユーザで「su」を実行
wheelグループに登録されていないユーザで「su」コマンドを実行します。CentOS7の場合下記の通り「拒否されたパーミッション」といったメッセージが表示され「su」が出来なくなっているはずです。CentOS6の場合は「パスワードが違います」といったメッセージが表示され、「su」が出来なくなっているはずです。
$ su -
パスワード:
su: 拒否されたパーミッション
$ su -
Password:
su: パスワードが違います
##wheelグループのユーザで「su」を実行する
wheelグループに所属しているユーザで「su」を実行して、rootになれるか確認してみてください。問題なくrootユーザになれるようでしたら、設定作業は完了となります。
#余談
他の記事も参考にさせていただきながら実際に制限して思ったのですが、信頼できる仲間やシステム業者の方々と構築していく環境を整備していく方が楽しいし安心できるとおもいました。もちろん今回の実行権限をシステム制御する事は有効です。同時に例えば万全な制御をしない時に仲間からアラートで知らせてくれるような構築メンバーとの信頼関係を日頃から築いている事もかなり重要だと感じました。