主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

Linux ファイルの変更を監視するには

最終更新日 2014-11-25 06:17:31 (1年以上前の記事です)

例えば Web コンテンツがハッキングなどによって書き換えられてしまった際にそれを検知できると助かります。
Tripwire などの商用ツールも有りますが、 Linux には auditd というデーモンがあります。これが割りと便利なので簡単な使い方をメモ。

特定のディレクトリを丸ごと監視

例えば /var/www ディレクトリ内で発生する書き込み、属性の変更を監視したい場合、以下の様なルールを作る。

# vi /etc/audit/audit.rules
# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page

-w /var/www/ -p wa -k web-wa

-w は監視対象ディレクトリ
-p は監視の種類、 w: 書き込み a: 属性 r: 読み込み など
-k はログを見る際などのキーになる

更に特定のディレクトリだけは関しから外したいような場合は

-a exit,never -F dir=/var/www/tmp -k exclude
-a exit,never -F dir=/var/www/cache -k exclude
-a exit,always -F dir=/var/www -F perm=wa -k web-wa

などとやるとできる。

変更検知時にメールを飛ばす

auditd 自体にそういう機能があるかはよくわからないが、とりあえず rsyslog と連携させれば通知メールは送れる。

syslog plugin を有効にする

まずは audisp という auditd の出力を少し拡張してくれるようなサービスの設定を変更して、 syslog へログを送るようにする。

vi /etc/audisp/plugins.d/syslog.conf
active = yes
direction = out
path = builtin_syslog
type = builtin
args = LOG_INFO
format = string

これで auditd を再起動すれば、ログが syslog にも送られる。

rsyslog の onmail モジュールを使ってメール送信

ここで rsyslog 側に流れてきた auditd のログを検知して、メールを送信するように onmail モジュールの設定を行う。

vi /etc/rsyslog.d/onmail.conf
$ModLoad ommail
$ActionMailSMTPServer localhost
$ActionMailFrom from@from.com
$ActionMailTo rcpt@to.com
$template mailSubject,"web contents updated on %hostname%"
$template mailBody,"RSYSLOG Alert\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
# make sure we receive a mail only once in six
# hours (21,600 seconds ;))
$ActionExecOnlyOnceEveryInterval 300
if $msg contains 'web-wa' then :ommail:;mailBody
最終更新日 2014-11-25 06:17:31

コメント このエントリーをはてなブックマークに追加

フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank1, rank2, rank3, rank7, rank9, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google