suコマンドを使って、とあるユーザ(またはグループ)になれるユーザ(またはグループ)を制限する方法

ググってもやりたい事が載っていなかったので検証した結果を書きます。
(ちなみにuidをgidに変えるとユーザ指定がグループ指定になります。)
やりたい事
・管理ユーザ(mnguser)/(管理グループ(mnggrp))
⇒rootになれるユーザ。(sudo可能)
・メンテナンスユーザ(menteuser)/(メンテナンスグループ(mentegrp))
⇒開発グループに属しているユーザがsuでrootになれるユーザ
・開発ユーザ(devuser)/(開発グループ(devgrp))
⇒通常は参照のみだが、たまにリカバリでroot(sudo)権限を持つメンテユーザにsu可能なユーザ
・参照ユーザ(viewuser)/(参照グループ(viewgrp))
⇒参照のみ。rootにsu不可能。sudoも不可能。
■suは参照ユーザ以外使えること
■sudoは管理ユーザとメンテナンスユーザが使える。
■メンテナンスユーザには開発グループ(と管理グループ)に属しているユーザがsuでなれること(参照ユーザはsuが使えるけど、認証にはじかれて結局は、メンテナンスユーザになれない)
wheelグループ以外のユーザが「su」コマンドでrootになれないだけでは無く、他のユーザにもsuすることが出来なくなりますので注意
環境

RHEL7.6で検証済み(CentOS7でも同じ(はず))

 

手順

1.メンテナンスユーザをwheelグループに追加する。(管理ユーザも同様に追加)

usermod -aG wheel menteuser

※オプションの-aGは、セカンダリ(副)グループ追加になります。(aをつけない場合、セカンダリグループが上書きになってしまうので注意)

2.wheelグループに属しているとsudoが使える設定になってることを確認

visudo とは、sudo コマンドを複数のユーザーが使えるようにしたりするコマンド

/etc/sudoers に設定ファイルがありますが、viで直接修正するとミスった時にsudoが使えなくなる可能性がある為、文法チェックをしてくれるvisudoを必ず使用すること。(修正後の保存は:wq)

## Allows people in group wheel to run all commands
%wheel        ALL=(ALL)       ALL

コメントアウト(行頭に#がないこと)されていないことを確認。(デフォルトでコメントアウトされてなくて有効)

 

/var/log/secure
・ sudo コマンドを使用する度に実行履歴が記録されます。実行履歴には sudo コマンドを実行したユーザー名、sudo コマンドと共に実行したコマンドなどが含まれます。

 

設定変更する部分

『cd /etc/pam.d』でディレクトリ移動して、『cp -p su su_yyyymmdd』 でバックアップを取ってから、viで『/etc/pam.d/su』を開いて編集します。

 

変更前

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth            required        pam_wheel.so use_uid
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so

 

変更後

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid root_only
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account [success=ignore default=1] pam_succeed_if.so uid = 1001 quiet
account required pam_succeed_if.so gid = 3000 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so

1.赤文字の部分でコメントアウトされているので外します(頭の#を削除する)

(上のtrustじゃない方です。trustの方だとパスワード無しで認証が通ってしまいます!)

 

2.auth required pam_wheel.so use_uid root_only

※root_onlyオプションをつけることで,rootへの昇格のみを制限します

 

3.メンテナンスユーザ(menteuser)のuidが1001、開発グループ(devgrp)のgidが3000の場合、

account sufficient pam_succeed_if.so uid = 0 use_uid quiet」行のすぐ下に、

account [success=ignore default=1] pam_succeed_if.so uid = 1001 quiet
account required pam_succeed_if.so gid = 3000 use_uid quiet

を追記する。(修正後の保存は:wq)

 

コンソールはrootになっているものを一枚残しておきましょう。(万が一の為)

確認には新規でコンソールを起動して確認する。

 

もしそれでもダメなら「sudo -i」でrootになれるはず(これで僕は助かった経験あり^^)

バックアップから戻すのもよし、再編集するのもよしかと思います。

 

 

今回、今までの記事と方向性をガラッと変えてみました。(ちゃんと仕事してますw)

 

このブログを読んでいただきありがとうございます。
それでは

タイトルとURLをコピーしました