pam_ttylog

著者:A.Yoshiyama <yosshy@debian.or.jp>
バージョン:1.0.1 (2011/3/29)

はじめに

pam_ttylog とは、ログインシェルの出力を自動的にログファイルに記録する 為の PAM モジュールです。拙作の scriptedlogin 2.0.0 のPAM版になります。

従来、セキュリティ等の目的でローカルログインやリモートログインのユー ザの操作履歴を取る為に、ユーザのログインシェルの初期実行スクリプト (BASH の .bashrc 等)に script コマンドを埋め込む、カーネルにパッチを 当てる、シリアルポートのログプログラムを使用する等のアプローチが取られ てきましたが、これらの方法には様々な問題がありました。

pam_ttylog では、上記の問題を回避する為、/bin/login プログラム実行中の PAM session セクションで script コマンドと同様の環境を整備する方式を採っ ています。これにより、ログファイルは一般ユーザアカウントのアクセス不可 なディレクトリ下に、一般ユーザアカウントが読み書き削除できないパーミッ ションのファイルとして作成されます。

また、pam_ttylog は PAM モジュール方式を採用しているため、既存の /bin/login や getty、telnet 等、ライブラリ群に一切手を加えないで導入・ 運用できるようになっています。

実行環境

導入方法

インストールは至ってシンプルです。

  1. ソースアーカイブを展開します。

  2. 下記コマンドを実行します:

    make
    su root
    make install
    

デフォルトでは、/lib/security 下に pam_ttylog.so 本体、/usr/local/bin 下に操作再生ツール ttylogreplay(script コマンド付属のscriptreplay コマ ンドの修正版)をインストールします。また、ログファイルは /var/log/pam_ttylog 下に保存されるようになっています。

上記のデフォルト設定を変更したい場合は、Makefile や pam_ttylog.c を修正 して下さい。

設定方法

pam_ttylog を使用する為には、各種サービスの PAM 設定ファイルの session セクションで下記のように pam_ttylog を宣言してください。

session optional pam_ttylog.so

動作確認は上記設定を /etc/pam.d/login の末尾に追加して行いました。なお、 login 以外のプログラムの設定ファイルではほとんど試していません(ssh で 試した時はダメでした)。

使用上の注意

ログファイルの存在ぐらいは確認しても構いませんが、間違えても現在使用中 のシェルのログファイルを cat で表示しないで下さい!無限ループになります。 既にログアウトしたシェルの操作履歴なら、内容を表示しても問題ありません。

操作ログファイル

ログファイルは2つあります:

/var/log/pam_ttylog/
  <日付>-<ログイン時刻>-<ユーザ名>-<tty名>:操作ログ
  <日付>-<ログイン時刻>-<ユーザ名>-<tty名>-t:タイミングログ

前者は操作ログそのものです。ざっと操作履歴を確認するためにはこちらの内 容を確認して下さい。

後者は前者の出力タイミングを記録したものです(script コマンドの同様の機 能と同じ事をしています)。こちらを使用してコンソール操作を「再生」する 為には、pam_ttylog に同梱された ttylogreplay コマンドを下記要領で使用し ます(pam_ttylog と同時にインストールされます):

ttylogreplay <操作ログ> [<タイミングログ>]

綺麗に表示する為には、ユーザがログインしたターミナル環境と同じ環境で ttylogreplay コマンドを実行する必要があります。

運用上の注意

Important

ユーザのログイン毎にログファイルは増えていきます。ログファイルの整理 は怠らないようにして下さい。

制限事項

pam_ttylog は PAM に完全に依存し、/bin/login にある程度依存したツールで す。このため、下記のケースではログを採取できません。

ライセンス

pam_ttylog は script 由来の BSD ライセンス部分と、pam_unix 由来の BSD 似/GNU GPL ver.2(デュアルライセンス)部分がマージされています。この結果、 基本的には BSD ライセンスが適用されると考えています。

ttylogreplay は script コマンドの付属ツール、scriptreplay コマンドに手 を加えたものです。ライセンスはオリジナルのまま(パブリックドメインの模 様)です。

免責表示

pam_ttylog は BSD ライセンスで配布されているフリーソフトウェアです。本 プログラムの使用により生じた一切の損害について作者は補償しません。

更新履歴