それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

TripWire的なことをRuby で小1時間で書いてみた。

TripWire とは、侵入されファイルが改変されたら、それを通知する仕組みです。

Tripwireは、導入時のファイル状態をデータベース化し、そのデータベースとファイルの現状を比較することにより、ファイルの追加/変更/削除を検知するため、Linuxインストール後の初期の段階で導入しておくのが望ましい。

http://fedorasrv.com/tripwire.shtml

TripWire っていろいろな機能があるけど、改ざん検出に絞れば、md5sum してれば、同じこと出来るじゃん。

/etc の改変があったら検出する。

目的を達するために、最短距離を考える。

たとえば、1分ごとのファイル検出をするなら、次で充分

while (1) ; do
last_state=$(date -d " -1 minute"  +"%Y-%m-%d#%H_%M").md5sum
current_state=$(date  +"%Y-%m-%d#%H_%M").md5sum
find /etc/ -type f    -exec md5sum {} \; >  $current_state
str=$(diff -urN  $last_state $current_state)
if[ -z $str] ; do
  echo $str | mail -s "変更検知"  "takuya@example.com" 
fi;
sleep 60;
done

30分ほどで書いてみた。


指定フォルダのmd5sum をとって、ソレを比較する。パーミッションについてはまた別にやろうと思う。

昔から思ってること

ファイル検出って◯◯システム入れるって感じでテンプレ作るのは「お仕事」として正しいんだけど

ファイル検出の根本原理を知らないまま、インストールしてJ-SOX対応したよ、とか監査基準がとか言ってほしくない。とくに監査法人は何も知らなさすぎて、「指定ソフト」を「入れて」いれば「OK」とかになりかねない。インストール・チェックだけがテンプレ仕事なら、それね、コンピュータにやらしたほうがすげー正確だよ。TripWireの「設定をテスト」するファイルを書く「お仕事」とかなら有りだと思うんですよね。

パスワードのハッシュ一致もせずに、生パスワードの「ゆうちょ銀行」や「発車オーライ」があって、その他にも、J-SOX対応(?)して個人情報保護法をクリア(??)して、誤安心のPマーク取得してさ、基準クリアするだけの簡単なお仕事?? あれで平気で仕事してるんだから困ったもんだ。

誰が見てんのさ。

情報セキュリティの試験で、IDSとかWAFをインストールとか出てくるんだけど、そういうのもうクラウド化されて、Herokuでいいじゃんね。

TripWire より chef とか、puppet使うべき

大事なのは「検出」より「復旧」です。

書き換えられても「とっとと元通り」にしちゃえばいいわけで。puppet でファイルを監視して、更新があったら通知しつつ、ファイル書き戻しちゃえば良いと思いますよ。

検出&バックアップを兼ねたソリューション

rsync しておくも確実じゃないですかね

rsync -a /shuld/be/etc/ /etc

上で同期しつつ、変更がないか調べてみる

-n オプションで変更があれば転送候補として出てくる。

rsync -na /etc /shuld/be/etc/ /etc

rsync ならパーミッションもチェックしてくれるので安心ですね。

ヒューリスティックな解法大好き。

etcのバージョン管理

etckeeper 入れてばgit でバージョン残るから確実です。