これはシス研 Advent Calendarの11日目の記事です(大嘘)
総インターネット時代のセキュリティ対策
インターネットではみなさんがTwitterで「あけおめ」なんていう何の情報価値もない文章を呟いてトラフィック占有したり,Tumblrでアレゲな画像をPostしてストレージの容量を占有したりしている裏で,一般に「クラック」と呼ばれるログイン試行攻撃を始めとするあらゆるサイバー攻撃が行われており,もうそれは「第3次世界大戦」と言ってもいいのではないかというぐらい世界中で日夜ドンパチしているわけです。つまり「端末をインターネットにつなぐ」と言うのはなんとなくグローバルな感じがしていい言葉に聞こえますが,同時に世界中からの攻撃を受けることがある出入り口を設けることになるわけで,特にサーバなんてのは攻撃に対してそれなりにセキュリティ対策をきちんとしないと大変なことになります。
さらに近年ではVPS(Virtual Private Server)と呼ばれる仮想専用サーバが注目されてきました。仮想的ではありますが自分の専用サーバをインターネット上に設けることができ,しかも維持費も安価だということで,それまでのレンタルサーバと違って自分の好みでソフトウェアを入れてサーバが構築できるサービスです。便利な反面,それまでレンタルサーバのホスティング元が行ってくれていたようなアプリケーションレベルでのセキュリティ対策は自前で行う必要があります。
そんな攻撃対策において,おそらく管理者が一番最初に気を使うのがSSH攻撃です。SSH攻撃は至って初歩的な攻撃なのですが,逆に言えばここを乗っ取られてしまうと攻撃者にサーバを好き勝手し放題にされてしまうため,この攻撃の穴は確実に塞いでおく必要があります。ちなみにSSH攻撃を防ぐ具体的な方法としては以下3つが挙げられます。
- SSHのデフォルトポートである22ポートを使わない
- rootでSSHログインできるようにしない
- ログイン認証には公開鍵認証だけを使えるようにする
システム研究部もConoHaから研究目的という体で借りているVPSサーバがありますが,これらについては全て対策済みです。まぁまだ何も入ってないので攻撃を受けた所で踏み台にするぐらいしか使い道がないのですが。
さてと前置きが長くなりましたが,ここから本題です。
SSHハニーポット
SSHハニーポットというものをご存知でしょうか。「ハニーポット」とは直訳するとあの黄色い体をして赤いTシャツだけを着た熊のキャラクターがよく持っている瓶のことなのですが,コンピュータ用語として別の意味を持っています。
ハニーポット (英語: Honeypot) は、コンピュータセキュリティ用語としては、不正アクセスを受けることに価値を持つシステムのことを指す。元来は「蜜(の詰まった)壷」の意味で、何らかの有益そうな情報や資源がありそうな場所を用意して、それにつられた者を観察したり、肝心な部分で被害を出さないために目をそらせたり、コンピュータ・フォレンジックスを行うための証拠を集めたりする、一種のおとり手法に使われる。手法そのものをハニーポットと呼ぶこともある。
つまり「あえて攻撃の穴を用意しておいて,そこに来た攻撃者の行動を観察しよう」というしくみです。ただ本番環境のSSHであえて攻撃を受けるなんてことをしたら,それこそ本当にシステムごと乗っ取られる可能性があります。そこでハニーポットは「あたかもSSHが動いているかのようなプログラム」を動かしそこに来た攻撃者を観察するという機能を提供してくれます。
今回はSSHハニーポット用のソフトウェアとして「Kippo」というものを使用しました。この部活にも信者が多いPython()で書かれており,起動すると2222番ポートにSSHアクセスの口を作ってくれます。ログインするとコマンドなども実行でき,あたかも本当のLinuxシステムにログインしたかのような気がするのですが,コマンドを実行してもKippoの中だけでの変更しか行われず,Kippoを動かしている実際のシステムにはまったく影響を与えることはありません。
今回はこのKippoをシス研のVPS上で稼働させ,2週間ほど放置してみることにしました。
2週間で8万件の攻撃
基本ほったらかしにしていたのですが,ハニーポットを設置して2週間程度でログイン試行回数がのべ85,801回になっていました。めちゃくちゃ多いです。平均して1日に6000回以上のログイン試行を受けていることになります。インターネットこわい!
しかもKippoに捕まってしまった攻撃者さんは一挙手一投足まで記録されてしまいます。そのログを再生する機能もあり,色々な攻撃者の行動を見た中でも一番面白い攻撃者を動画で紹介します。
初っ端からCountry []: paris
(パリは国名じゃない)とかLanguage []: frances
(フランス語はFrench)とか色々と突っ込みどころ満載な感じでおもしろすぎです。これ以外にもハニーポットに引っかかる攻撃者も居ましたがほとんどがボットらしく,ただ一定時間ごとにコマンドを送り付けてくるといった攻撃でした。
狙われやすいパスワードランキング
Kippoさんは非常に几帳面でログファイルに自身の行動を事細かに記録してくれるのですが,SSHハニーポットに対しての攻撃でログインに失敗したとしても,その失敗した攻撃のIDとパスワードを記録してくれます。つまりこれをリスト化すればどんなパスワードが攻撃に使われているかがわかるはずです。今回はログファイルをコマンドを使って整形・集計をし,狙われやすかったIDとパスワードをランキング形式で発表します(括弧の中の数字はログイン試行回数)。
10位 admin/1234 (57)
単純なパスワードの典型的な例ですね。
9位 admin/root (58)
ユーザ名はadminでパスワードがrootと両方共管理者を意味する単語です。
8位 admin/password (58)
パスワードにpasswordを指定しちゃうパターンですね。
7位 root/(パスワード無し) (68)
もしかしてパスワードすら設定してないのではないかという憶測。
6位 root/123456 (155)
10位のちょっと強化版。パスワード文字長が最低6文字の制限なんかがあるとこうなりそうですね。
5位 D-Link/D-Link (210)
D-Linkは台湾の通信機器メーカーらしく,その会社の製品で使われているデフォルトパスワードであると考えられます。
4位 ftpuser/asteriskftp (218)
AsteriskはオープンソースのIP電話のソフトウェアらしいのですが…そのFTPのユーザなんでしょうか。調べてもよく分かりませんでした。
3位 admin/admin (316)
IDとパスワードがまったく一緒というパターンです。
2位 root/admin (547)
9位の逆バージョンです。
1位 root/root (1479)
これもユーザ名と一緒という攻撃ですね。しかし2位とは約3倍もの差をつけてぶっちぎりの1位!
番外編
ざっくり眺めていて気になった番外です。
- root/supermario (8)
- 赤色をした配管工です HAHAHA(甲高い声)
- root/watanabe!@# (3)
- おそらく管理者がワタナベさんであることを想定した攻撃
- root/takano (1)
- おそらく管理者が(略)
- root/$6$4aOmWdpJ$/kyPOik9rR0kSLyABIYNXgg/UqlWX3c1eIaovOLWphShTGXmuUAMq6iu9DrcQqlVUw3Pirizns4u27w3Ugvb6.:15800:0:99999:7::: (1)
- なげーよ!(おそらく最長)
- root/whatthefuck (6)
- WTF!?
攻撃のランキング生成時に作った攻撃されたリストが眺めているだけで面白かったのでgistに公開しましたので暇があれば眺めてみてはどうでしょうか。
攻撃される可能性パスワードよりも…
パスワードを強固なものを使用するのはある意味では定説なのですが,今回の攻撃解析において一番狙われているユーザ名は「root」もしくは「admin」です。強固なパスワードといえどSSHによるrootユーザのログインを許しているといつか破られてしまう可能性があります。「root」のログイン許可は行わないようにしましょう。
まとめ
今まで「個人で使用するようなサーバにはあまり価値がない」なんて思っていましたが,ただの個人サーバでもこれだけの攻撃を受けることがわかりました。今回は攻撃を受ける対象がSSHハニーポットを使ったものだったので高みの見物だったわけですが,本当に攻撃を受けると情報を片っ端から抜き出されたり攻撃の踏み台にされたりすることが考えられます。みなさんもインターネットにサーバを設けるということはかなりリスキーだということを日頃から考えておきましょう。
コメントを残す