研究室のサーバーに対する攻撃ログを解析してみた-夏休みの自由研究2024
夏休みの自由研究2024
先日インターンで、ログの解析手法を学びテンションが上がった勢いをそのままに、研究室の外部公開サーバーに対する攻撃ログを解析してみました!
今回の調査対象は、SSHログイン試行です。
SSHログインが失敗した場合、/var/log/btmp
というファイルにバイナリ形式で保存されます。
そして、このファイルは、lastb
というコマンドを用いて中身を見ることができます。
今回はこの知識だけを頼りに手探りで解析を進めていきました。
補足ですが、研究室のサーバーはパスワード認証をそもそも許可していないため、どれだけ攻撃が来たとしてもそれらは全てpreauthで止まっており、サーバーを危険に晒すようなことをしておりません。
今回調査した内容
- IPから攻撃元を可視化
- 日毎の攻撃回数の推移を可視化
- 試行回数の多いユーザー名ランキング
- 試行回数の多い地域ランキング
調査方法
基本は、grepとawk、シェルスクリプトでゴリゴリ手作業でログの整形を行いました。
便利なツールを使えば楽をできたのかもしれませんが、今回僕はシェルコマンドで色々やるという部分が楽しくてログ解析をしていたため、今回は敢えてこの手法で解析しました。
ただ、全てシェルコマンドでやるのも流石に非効率なので可視化の部分はGoogle Spread Sheetを使いました。
しかし、IPから攻撃元を可視化する際に用いたGeo Mapは微妙だったため、それだけはわざわざGrafanaサーバーを立てて可視化を行いました。
もっともっとログ解析をしてやろうと意気込んでいたのですが、シェルコマンドから離れれば離れるほどモチベが低下し、今回はこの辺りで力尽きました。
めんどくさくなって放り投げたこと
未来の自分や後輩が骨を拾ってくれるかもしれないという一縷の望みにかけて、やり残したことを箇条書きにしておきます。(あとは頼んだ)
- 全ての可視化をGrafanaで行う
- 毎月自動でログを収集して可視化を行う
- 解析の切り口を色々変えて新たな知見を得る
IPから攻撃元を可視化
Grafanaを用いて、IPから位置情報を取得して攻撃元IPを可視化してみました。
日毎の攻撃回数の推移を可視化
アベレージは2000程度で、Aug 16とAug 26には6000以上にスパイクしていることがわかります。
試行回数の多いユーザー名ランキング
第1位 admin (1,227件)
言わずと知れた脆弱なユーザー名No.1
まさか外部公開サービスに用いられているサービスのユーザー名とパスワードをadmin, adminになんてしてないですよね?
第2位 ubuntu (1,034件)
ubuntuが第2位にくるのは個人的には意外でした。
やはり、Linuxディストリビューションの中で圧倒的シェアを誇るだけはありますね。
testやuserなど普遍的な名前を押し除けて堂々の第2位でした。
第3位 test (839件)
やはり、つけがちな名前上位層のtest
ちなみに16位には、test1もあったのでtest系は相当数使われているということですね。
試行回数の多い地域ランキング
個別の地域について特に思うところはないので、ランキングを紹介するに留めておきます。
Discussion