連載
» 2003年02月22日 00時00分 UPDATE

不正侵入の手口と対策(6):アクセスログの改ざんと検出方法 (2/2)

[木村靖,三井物産セキュアディレクション株式会社]
前のページへ 1|2       

ログ監視ツール 〜 LogWatch

 先述のless、tail、grepなどを使えば、ほとんどのログ調査は事足りる。しかし、実際は管理者が24時間常時ログを監視するということは、まず不可能に近いだろう。そういったことを踏まえ、ここではログの監視を毎日定期的に行い、結果を加工してレポートしてくれるLogWatchを紹介する。

 LogWatchは、Kirk Bauer氏が中心となって開発を行っているPerlで書かれたログ監視ツールで、Red Hat Linux 7.3ではLogWatchバージョン2.6が標準でインストールされ、1日1回ログのチェックを定期的に行っている。

LogWatchの入手とインストール

(1) LogWatchのダウンロード

 LogWatchは、LogWatchのサイト(http://www.logwatch.org/)からダウンロードする。本稿では最新安定バージョンの4.3.1のRPM版(logwatch-4.3.1-1.noarch.rpm)をダウンロードし、使用することにした。

(2)LogWatchのインストール

 最新版4.3.1をインストールする前に、まずは旧バージョン2.6をアンインストールする。

# rpm -q logwatch
logwatch-2.6-2
# rpm -e logwatch-2.6-2

 続いて最新版をインストールする。

# rpm -ihv logwatch-4.3.1-1.noarch.rpm
Preparing... ########################################### [100%]
1:logwatch   ########################################### [100%]
# rpm -q logwatch
logwatch-4.3.1-1

 LogWatchのRPM版をインストールすると、/etc/log.dディレクトリ以下に各種関連ファイルやディレクトリが生成される。

/usr/sbin以下
・logwatch LogWatchの実行スクリプト。実体は/etc/log.d/scripts/logwatch.pl。
/etc/log.d以下
・logwatch LogWatchの実行スクリプト。実体は/etc/log.d/scripts/logwatch.pl。
・logwatch.conf LogWatchの全体的な設定ファイル。実体は/etc/log.d/conf/logwatch.conf。
・conf チェック対象のログやサービスに関する設定ファイルが格納されている。
・scripts LogWatchで実行される各種スクリプトが格納されている。
/etc/cron.daily以下
・0logwatch cronによって1日1回実行される。実体は/etc/log.d/scripts/logwatch.pl。

LogWatchの各種設定

(1)全般の設定 (logwatch.conf)

 LogWatchに関する全般の設定は、/etc/log.d/conf/logwatch.confで行う。表2にlogwatch.confの設定項目を示す。

 なお、logwatch.confの書式は、

<Name> = <Value>

の形式で指定する。この書式はlogwatch.confに限らず、そのほかの設定ファイルにおいても同じだ。

名前 内容
LogDir チェックするログの格納先を指定
TmpDir 一時的なファイルの保存先
MailTo 結果レポートのメール送信先を指定
Print 結果を標準出力(STDOUT)に出力するか(Yes)
あるいはMailTo宛にメールで送るか(No)
UseMkTemp mktempコマンドで一時ファイルを生成 (Yes)
mktempが-dをサポートしていない場合 (No)
Save 結果レポートをファイルとして保存
標準では無効(コメントアウト):保存しない
Archives アーカイブされたファイルも調査 (Yes)
標準では無効(コメントアウト):調査しない
Range チェック対象となるログファイルの日付範囲を指定
すべて(All)、当日(Today)、昨日(Yesterday)
Detail 結果レポートの詳細レベル
Low(0)、Med(5)、High(10)のいずれかを指定
Service LogWatchでチェックの対象となるサービスを指定
/etc/log.d/scripts/services以下のファイルが対象
LogFile 特定のログファイルのみをチェック
標準では無効(コメントアウト):すべてチェック
mailer メール送信で用いるメールプログラムのパスを指定
HostLimit 特定のホスト名に関するログエントリのみチェックする
標準では無効(コメントアウト):制限しない
表2 logwatch.confの設定項目

 ほとんどの場合は、標準設定のままで問題ないだろう。

  • 個別設定

 ログファイルごと、あるいはサービスごとに設定を変更する場合は、/etc/log.d/conf以下のlogfilesまたはservicesディレクトリに格納されているファイルを修正すればよい。

 ・/etc/log.d/conf/logfilesディレクトリ下 (ログファイルごとの設定)

 ログファイルごとに個別設定する。各設定ファイルで指定可能な値は以下のとおりとなる。

名前 内容
LogFile チェックするログファイルの名前を指定。絶対パス指定で ない場合は、LogDirのディレクトリパスが適用される
Archive チェックするアーカイブファイルのパターンを指定
*ApplyStdDate 標準的なsyslogが出力する日付の形式に一致した行だけを取り出す
*OnlyHost 当該ホストに関する内容のみチェック
*RemoveService チェック対象外のサービス(文字列)のパターンを指定

 例えば/var/log/secureに関する設定は、/etc/log.d/conf/logfiles/secure.confで定義する。標準では以下のように設定されている。

LogFile = secure
Archive = secure.*
Archive = secure.*.gz
*OnlyHost
*ApplyStdDate

 ・/etc/log.d/conf/services (サービスごとの設定)

 サービスごとに個別設定する。各設定ファイルで指定可能な値は以下のとおりとなる。

名前 内容
Title 結果レポート出力時のタイトルを指定
LogFile ログファイルのグループを指定
*OnlyService 指定したサービスにマッチする行のみチェック対象にする
*RemoveHeaders 標準的なsyslogフォーマットの各行から、ヘッダの部分を取り除く(“月 日 時:分:秒 ホスト名 サービス名[プロセスID]:”の部分)
*Remove 指定した文字列にマッチした行はチェック対象外にする(大文字小文字の区別なし)

 例えばsendmailに関する設定は、/etc/log.d/conf/services/sendmail.confで定義する。標準では以下のように設定されている。

Title = "sendmail"
LogFile = maillog
*OnlyService = sendmail
*RemoveHeaders

  • LogWatchの実行

 LogWatchを定期的に実行するには、cronを使えばよいが、本稿で使用したRPM版のLogWatchは、インストール時に自動的にcronに登録するようになっていた。Red Hat Linux 7.3の場合、毎日4時2分になるとLogWatchのスクリプト(/etc/cron.daily/0logwatch)が実行される。

/etc/crontab:
02 4 * * * root run-parts /etc/cron.daily

 実行が終了すると、例えばrootあてに以下のようなメールが届く。

################### LogWatch 4.3.1 (01/13/03) ####################
Processing Initiated: Mon Feb 16 16:25:03 2003
Date Range Processed: yesterday
Detail Level of Output: 0
Logfiles for Host: www.example.co.jp
################################################################


--------------------- pam_unix Begin ------------------------

su:
Sessions Opened:
y-kimura(uid=500) -> root: 1 Time(s)


---------------------- pam_unix End -------------------------


------------------- Connections (secure-log) Begin ----------


New Users:
kimu(501)


**Unmatched Entries**
useradd[25202]: new group: name=kimu, gid=501


-------------------- Connections (secure-log) End -----------

###################### LogWatch End #########################

 上から順に説明すると、「pam_unix」の項目では、suコマンドでユーザーy-kimuraがroot権限にスイッチしたことが記録されており、その回数は1回(Time)であることが分かる。

 次の「Connections (secure-log)」は、新しいユーザーkimuが生成されたことを示している。また、「**Unmatched Entries**」以下の行は、設定ファイルに記載されていないパターンがログに含まれた場合に出力される。

 また、「pam_unix」は/var/log/messagesから、「Connections (secure-log)」は、/var/log/secureに出力された内容を解析した結果となる。なお、どの項目がどのファイルを参照しているかについては、/etc/log.d/conf/services以下のファイルを見ればよい。

  • pam_unixの場合:
    /etc/log.d/conf/services/pam_unix.conf
Title = "pam_unix"
LogFile = messages

  • Connections (secure-log)の場合:
    /etc/log.d/conf/services/secure.conf

Title = "Connections (secure-log)"
LogFile = secure


 以上を踏まえ、例えば上記の結果より、/var/log/secureに出力されるuseraddのサービス名をレポートに含めないようにするには、以下のとおりに設定すればよい。

 例:/var/log/secureに出力されるサービス名useraddを無視する

 テキストエディタを用いて/etc/log.d/conf/logfiles/secure.confに以下の1行を追加する。

*RemoveService = useradd

 保存終了した時点で、今後/var/log/secureにサービス名useraddが記録されていたとしても、LogWatchのレポートには出力されなくなる。

 以上、LogWatchについて解説した。実際は標準設定で運用し、必要に応じて設定を変更することで、結果レポートを少しずつ調整して行けばよいだろう。 なお、今回はcronによる定期的な実行を説明したが、LogWatchを手動で実行させる場合は、単に以下を実行すればよい。

# /usr/sbin/logwatch

 細かな設定が必要な場合はオプションを指定する。オプションの詳細については、man logwatchかlogwatch --helpで確認してほしい。


 6回にわたり「不正侵入の手口と対策」と題して、攻撃者が行うであろう一連の侵入手口とその対策方法を紹介してきた。連載の冒頭でも述べたように、本連載は攻撃者の手口(心理)を知ってもらうことで、より効果的なサーバの運用管理に役立ててもらうことを目的としたしたが、お役に立てただろうか。

 今後もインターネット上で起こるセキュリティ侵害は後を絶たないだろうし、また、攻撃者の手口もどんどん多様化してくることが予想される。そういった攻撃を未然に防ぐためにも、「サーバ自身(守るべき資産)のセキュリティ確保」が大事であることを、ここで改めて認識してほしい。(今回で連載は終了いたします。ご愛読ありがとうございました。

筆者紹介

三井物産株式会社GTIプロジェクトセンタ

主に、不正アクセス監視サービス、セキュリティ検査、セキュリティポリシー策定支援などのサービス提供している。また、セキュリティに関する教育サービスも実施中。

木村 靖(きむら やすし)

セキュリティコンサルタントとして、不正アクセス監視やセキュリティ検査 などに従事している。金融機関、官公庁、大手製造業などへのセキュリティシ ステムの導入、セキュリティ検査などの実績を持つ。


前のページへ 1|2       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。