「sudoによる入出力のロギング」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「<!-- vim: filetype=mediawiki --> sudo では、入出力のロギングを行えます。使い方によっては、ターミナルの入出力を記録できます...」)
(相違点なし)

2013年9月7日 (土) 21:07時点における版

sudo では、入出力のロギングを行えます。使い方によっては、ターミナルの入出力を記録できます。

概要

sudo では、入出力のロギングを行えます。使い方によっては、ターミナルの入出力を記録できます。

事前準備

user というユーザーを用意します。パスワードを設定します。

$ sudo adduser
$ sudo passwd user

設定

sudo visudo で sudoers に設定を行います。入出力のロギングの設定を追加します。

User_Alias OPS_USERS = user
Defaults:OPS_USERS log_output,log_input
OPS_USERS ALL=(ALL) ALL

ログのディレクトリ

ログ は、 /var/log/sudo-io に格納されます。

使い方

ロギング

ユーザー user で sudo コマンドでzsh を起動します。zshzsh から派生プロセスへの入出力がすべて記録されます。

$ su user
$ sudo zsh
# ps
# top
# vim /tmp/XYZ
# exit
$

ターミナルの入出力がすべて保存されます。

ロギングしたデータの一覧

sudoreplay コマンドでログインしたセッションの一覧を確認できます。

$ sudo sudoreplay -l
Sep  7 20:07:56 2013 : user : TTY=/dev/pts/3 ; CWD=/home/user ;
	USER=root ; TSID=000001 ; COMMAND=/bin/zsh
Sep  7 20:08:51 2013 : user : TTY=/dev/pts/3 ; CWD=/home/user ;
	USER=root ; TSID=000002 ; COMMAND=/bin/zsh
Sep  7 20:09:28 2013 : user : TTY=/dev/pts/3 ; CWD=/home/user ;
	USER=root ; TSID=000003 ; COMMAND=/bin/zsh

ユーザー foo のセッションを一覧表示します。

sudoreplay -l user foo

イベントの再生

sudoreplay コマンドを使用して、ターミナルの入出力を再現できます。 sudoreplay -l で確認した TSID を指定します。

$ sudo sudreplay 000003

作成されるファイル

$ sudo find /var/log/sudo-io/00/00/01
/var/log/sudo-io/00/00/01
/var/log/sudo-io/00/00/01/ttyout
/var/log/sudo-io/00/00/01/stdin
/var/log/sudo-io/00/00/01/stdout
/var/log/sudo-io/00/00/01/ttyin
/var/log/sudo-io/00/00/01/stderr
/var/log/sudo-io/00/00/01/log
/var/log/sudo-io/00/00/01/timing
/var/log/sudo-io/00/00/01
セッションのログのディレクトリです。
/var/log/sudo-io/00/00/01/ttyout
セッションの tty の出力ファイルです。
/var/log/sudo-io/00/00/01/stdin
stdin のログです。
/var/log/sudo-io/00/00/01/stdout
stdout のログです。
/var/log/sudo-io/00/00/01/ttyin
セッションの tty の入力ファイルです。
/var/log/sudo-io/00/00/01/stderr
stderr のログです。
/var/log/sudo-io/00/00/01/log
セッションログの情報です。
/var/log/sudo-io/00/00/01/timing
セッションのタイミングのファイルです。

stdin, stdout, stderr のファイルは、任意のコマンドのパイプラインの一部として sudo が使わない場合は、空っぽです。

関連項目