RHEL6.4でsudo設定してログローテートしてみました

職場でsudoを使うことになったので、
sudo設定とログローテートをテストしてみました。

1.背景
現状、一般ユーザからrootユーザにsuして利用しているが、
複数人で使用する為に誰が特権コマンドを発行しているかログから追えない。
sudoを使用することで特権操作記録を残したい。

2.環境
OS:Redhat Enterprise Linux 6.4

3.設定内容

server-adminsグループに所属するユーザのみsudoを使用できる。
sudoでは全ての操作を許可する。
sudoではパスワード入力を必要としないようにする。
sudo設定後はrootアカウントはロックをかけて無効にする。
sudoのログ出力先をデフォルトの/var/log/secureから
/var/log/sudo.logに変更する。
sudo.logはdailyでローテートし、300日保存とする。
ログファイル名には日付を付けてgzip圧縮保存する。

4.設定手順

グループ(server-admins)を追加
# groupadd server-admins

ユーザ(user1)を追加
# useradd user1

user1のパスワード設定
# passwd user1

user1をグループ(server-admins)に追加する
# usermod -G server-admins user1

/etc/sudoersを編集する
# visudo
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
#server-adminsグループにパスワード無しで全ての操作を許可する
%server-admins   ALL=(ALL)      NOPASSWD: ALL

# 最終行に追記
Defaults syslog=local1

# vi /etc/rsyslog.conf
# 42行目: 以下のように追記
*.info;mail.none;authpriv.none;cron.none;local1.none   /var/log/messages

# sudo log messages
local1.*                                               /var/log/sudo.log

rsyslogサービスの再起動
# /etc/rc.d/init.d/rsyslog restart

# vi /etc/logrotate.d/sudo
/var/log/sudo.log { # 対象のログファイル
    ifempty            # ログファイルが空でもローテーションする
    dateformat .%Y%m%d # dateフォーマットを任意のものに変更する
    missingok          # ログファイルがなくてもエラーを出さない
    compress           # 圧縮する
    dateext            # ファイル名に日付を付ける
    daily              # 毎日ローテートする
    rotate 300          # 300世代分古いログを残す
    postrotate         # ローテート後にsyslogを再起動
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

rootユーザをロック(無効化)する
# passwd -l root

5.動作確認

user1でログイン
$ sudo date

rootユーザにsu
(rootがロック掛かっていてもsudoならsuでrootになれます)
$ sudo su -

# view /var/log/sudo.log
user1でsu - の記録が確認できます。

ログローテート手動実行
# /usr/sbin/logrotate /etc/logrotate.d/sudo

/var/log/sudo.logがローテートされて、
/var/log/sudo.log.20210213.gz
が出来上がります。

ログローテートステータス編集
(ローテート出来ない時は日付を前に戻します)
# vi /var/lib/logrotate.status

6.参考

rootユーザをロック解除(有効化)する
# passwd -u root

7.参考URL
CentOSでuserをsudo可能にする
https://qiita.com/Esfahan/items/a159753d156d23baf180

Sudo を設定する(CentOS6)
https://www.server-world.info/query?os=CentOS_6&p=initial_conf&f=8

ログ・ローテーションの設定 〜 CentOS6
https://easyramble.com/setup-log-rotation.html

任意のログをlogrotateを使って管理する
https://qiita.com/Esfahan/items/a8058f1eb593170855a1

8.まとめ
sudoとログローテート設定することが出来ました。

Comments are closed.