LoginSignup
10
10

More than 1 year has passed since last update.

【Linux】su,sudo設定

Last updated at Posted at 2020-07-17

基本ユーザにはrootになることを禁止し、
かつ
sudoコマンドを使った場合に証跡を残させたい
って時の設定。

CentOS7とUbuntu16.04で分けて書いていきます。

1.1 su禁止設定(CentOS) 

/etc/pam.d/suファイルを編集します。
auth required pam_wheel.so use_uidのコメントを外します。

/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

これでwheelグループに属するユーザのみsuでき、他は禁止する設定となります。

1.2 su禁止設定(Ubuntu)

CentOSとファイルは同じですが項目の記載を変更します。
group=admを追記します。

/etc/pam.d/su
auth required pam_wheel.so group=adm

ubuntuにはwheelグループがないので、admにしておきます。
→admグループに所属するユーザのみがsuできる
という設定です。

2.sudo設定(共通) 

visudo

コマンドで/etc/sudoersファイルを編集します。

書き方おさらい

visudo
ユーザー名 ALL = (ALL:ALL) ALL

【ユーザー名】で権限を付けるユーザを指定。
先頭に%をつけるとグループ単位で指定できます。 

一つめのALLはホストに対する許可なのでたいていALLで大丈夫です。

二つめのALLは「どのユーザになるか」

三つめのALLは上記のグループ版
コロン(:)をつけると指定できます。無しでもOK

四つめのALLは「どのコマンドを実行できるか」
コマンドのパスを,区切りで書いていきます。

また、コマンド先頭に!を付けると実行させないの意味となります。

visudo(例)
%group01 ALL=(ALL:ALL) ALL,!/bin/su,!/usr/sbin/visudo,!/usr/bin/bash,!/usr/bin/sh,!/usr/bin/vi /etc/sudoers

→group01グループに属するユーザはすべてのコマンドを全てのユーザとしてsudoで実行することができる。ただしsuとsudoersファイルの編集はできない。

ちなみに、
禁止したいコマンドを1つにまとめることもできます。

visudo(禁止するコマンドをまとめる)
##kinshi
Cmnd_Alias KINSHI = /bin/su,/usr/sbin/visudo
dangogrp ALL=(ALL) ALL, !KINSHI 

こんな感じで。
禁止設定自体を変更されるのを防ぐためsudoでsuコマンド,sudoers編集を禁止しておきましょう。


上記の方法は完全に禁止できるわけではなく、 抜け道があります。
例えば、シェルコマンドを別のディレクトリにコピーする、別名にする、外部コマンドを起動する、上記で禁止している以外のシェルコマンドを使うなど。
対応策としてコマンドの許可をホワイトリスト形式にする等ありますが、運用が大変な気がします、、、 

3 sudoの証跡を残す(syslogの設定ファイルのみOSで異なる) 

実行結果自体は監査ログに吐かれているのですが、
CentOS:/var/log/secure
Ubuntu:/var/log/auth.log

これらのファイルが実行結果に埋もれてしまうので、出力先を変更しましょう。
ログを出力するファイルを作成して所有者とグループを変更しておきます。
(CentOSのログファイル所有者はrootなので変更なしでOK)

touch /var/log/sudo.log
chown syslog /var/log/sudo.log
chgrp adm /var/log/sudo.log

/etc/sudoersの設定

visudo

でsyslogへ転送する設定を行います。
Defaultsが並んでいる箇所の下に追記

visudo(/etc/sudoers)
# sudo log
Defaults syslog=local3

local3の部分は0-7のどれでもかまいません。空いてるやつで。

syslogの設定

・Centosの場合

vi /etc/rsyslog.conf 

・ubuntuの場合

vi /etc/rsyslog.d/50-default.conf

以下を追記。先ほどのlocalの番号に合わせます。

#sudo log
local3.*    -/var/log/sudo.log

syslogサービス再起動

systemctl restart rsyslog



これで作成した/var/log/sudo.logにsudoコマンドの証跡が残ります。
試しにroot権限でls -lコマンドを実行すると、

sudo ls -l /

ログにはこんな感じで残ります。

/var/log/sudo.log
May 28 14:16:10 host01 sudo: user01 : TTY=pts/0 ; PWD=/home/user01 ; USER=root ; COMMAND=/bin/ls -l



これでユーザがroot権限でやばいコマンド打っても特定・説教できますね。

以上お

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10