rkhunterが仕事をした日
昨日は友人の葬儀に出るため、仕事を抜け出して仙台まで行って帰って来るという強行スケジュールだった。東京を離れている間に、サーバに仕掛けてあるrkhunterさんがメールを送ってきてたので、「誤検知だろうなあ。」と思いながら、そのサーバにsshしたら、パスワードが改竄されていた。「うお!」とか思った。
ssh可能な唯一のユーザがやられた!
いや待てよ。バックアップサーバは、自動化のために向こうに公開鍵渡してある。
試したら、ログインできた。
さて、まずは、rkhunterのログ確認と。検知できたってことは、rkhunterは信用して良さそうだしね。
SHV5とね。ちょっと調べてみよう。その間に、もう一人の鯖管に同セグメントのサーバをファイアーウォールでガードしてもらおう。
……。ぐぐっても全然情報でてこない。出てきてもrkhunterのログとか載せてるサイトばかりだ。
じゃあ、rkhunterのログで引っかかってるところ見てみよう。
/usr/lib/libsh/.backup/ってところにいろんなバイナリが。
- ls
- find
- ps
- top
- lsof
などなど。こういうときにこそ便利なコマンドがほぼ全滅。まあ当たり前なんだけどね。
ここらで、OS入れなおすかどうかの打ち合わせ。稼動中のサービスも多かったので、とりあえず、出来るところまで頑張ることになった。
mnt可能でクリーンなバイナリが入ってるデバイスがないので、rpmから入れなおすことにした。
どのパッケージに入ってるかわからないものは、rpm -qfね。
最初は、まずlsを信用したいから、fileutils。そしてrootなのにパーミッションで弾かれる。lsがリネーム出来ないだと?ls -l /bin/ls
とかしてみる。
権限はあるじゃん!とか思ったが、uidが122、gidが114とかになってた。明らかにおかしい。いや、そもそもlsが信用できないんだけど?
んで、lsattrする。s,i,aがついてる。そういうことか。iだけ外せば大丈夫だと思うけど、疑心暗鬼なのでchattr -sia /bin/ls
で。
いくつかそういうプロセスを経て、fileutils、findutils、procpsまで入れてから、色々確認。uid,gidはやっぱりおかしい。あとpsで怪しいプロセスがうじゃうじゃ出てきやがった。
明らかに変なものは落としたり、findで該当のuid,gidを持つファイルを全走査して掃除(ファイルもプロセスも。)。もう一人に手伝ってもらって、/usr/lib/libsh/配下のファイルのタイムスタンプに近いログを調査してもらう。
opensslの穴を突かれたような感じ。ということで、nobodyユーザ、nobodyグループなファイルを全走査して掃除。む、無体めー!
その後の穴ふさぎが大変で、「だから、サポート終わってるディストリ使うの止めて下さいっ言ったたじゃないですか!」と言うようなことを言ったり。
opensslのバージョンアップが5時間掛けても依存解決出来なかったので、そこは古いままで、プロキシ前面に立ててとりあえずの対応は終了。
セキュリティの大切さを痛感したよ。正月空けてないぐらいから、「破られたら大変だから、時間見て固めていきましょうね。」とか言ってたのに、遅すぎた。
いや、あの台数を2人で見るのは無理だなあ。
改竄検出できただけマシだけど、やっぱり検出後じゃ遅すぎるわなあ。ということで、30時間は起きてるので、そろそろ寝ます。おやすみなさい。