基本ユーザにはrootになることを禁止し、
かつ
sudoコマンドを使った場合に証跡を残させたい
って時の設定。
CentOS7とUbuntu16.04で分けて書いていきます。
1.1 su禁止設定(CentOS)
/etc/pam.d/su ファイルを編集します。
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
これでwheelグループに属するユーザのみsuでき、他は禁止する設定となります。
1.2 su禁止設定(Ubuntu)
CentOSとファイルは同じですが項目の記載を変更します。
group=adm
を追記します。
auth required pam_wheel.so group=adm
ubuntuにはwheelグループがないので、admにしておきます。
→admグループに所属するユーザのみがsuできる
という設定です。
2.sudo設定(共通)
visudo
コマンドで /etc/sudoers ファイルを編集します。
書き方おさらい
ユーザー名 ALL = (ALL:ALL) ALL
ユーザー名 で権限を付けるユーザを指定。
先頭に%をつけるとグループ単位で指定できます。
一つめのALLはホストに対する許可(たいていALLで大丈夫です。)
二つめのALLは"どのユーザになるか"
三つめのALLは上記のグループ版
コロン(:)をつけると指定できます。無しでもOK
四つめのALLは"どのコマンドを実行できるか"
コマンドのパスを,区切りで書いていきます。
また、コマンド先頭に!を付けると実行させないの意味となります。
%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つにまとめることもできます。
##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が並んでいる箇所の下に追記
#sudolog
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 /
ログにはこんな感じで残ります。
May 28 14:16:10 host01 sudo: user01 : TTY=pts/0 ; PWD=/home/user01 ; USER=root ; COMMAND=/bin/ls -l
これでユーザがroot権限でやばいコマンド打っても特定・説教できますね。
以上お