Carpe Diem

備忘録。https://github.com/jun06t

suコマンドの制限

ユーザ間の移動に便利なsuコマンドですが、セキュリティ的にはやや問題があります。 なぜならパスワードさえ分かれば、rootを除くどのユーザにもなれてしまうからです。 またrootもデフォルトではパスワードロックが有効になっているためにsuではなれませんが、もしroot権限で root@server:~# passwd なんてやってしまうとそのロックが外れて誰でもsuでrootになれる可能性ができ、セキュリティ的に非常に問題です。 そこで今回はそのsuコマンドを使用できるユーザの制限をします。 ◆rootのパスワードロックの有効化 まずは先ほど外してしまったパスワードロックを有効化します。rootユーザでパスワードを変更していない場合は必要ありません。 $ sudo usermod -p '!' root これで再びパスワードロックがかかりました。 ◆suユーザの制限 PAMを使います。ググるとwheelグループにsu権限を与えるとありますが、今のUbuntuにはwheelグループはないので(多分)、新しくwheelグループを作る必要があります。が、モッと楽にできて、今現在はwheelの代わりにadmグループを使用しているとのこと。なのでsuを使えるようにしたいユーザをadmグループに含めます。 $ sudo gpasswd -a user1 adm ちなみに消したい場合は以下 $ sudo gpasswd -d user1 adm もし上のコマンドを実行したのがuser1本人であれば、設定を反映させるため一度ログアウトしてください。別ユーザで上の設定をしたのであれば特に必要ありません。補足ですがgroup情報は以下で確認できます。 # less /etc/group 次に/etc/pam.d/suを編集します。 # emacs -nw /etc/pam.d/su 15行目くらいで以下のように編集してください # (Replaces the `SU_WHEEL_ONLY' option from login.defs) # auth       required   pam_wheel.so auth       required   pam_wheel.so group=adm 保存して完了です。特にサービスやモジュールのリロードは必要ありません。 試しに権限のないユーザで実行しようとすると $ su user2 Password: su: Permission denied と、正しいパスワードを入力してもuser2になることはできません。 ソース: suコマンドの実行を制限する。 suコマンドを制限する