SSHハニーポット
ハニーポットというのは脆弱な環境をエミュレーションすることで攻撃者を観察できるというもので、ここではkippoというハニーポットを使った。
desaster/kippo · GitHub
Kippoは脆弱なidとpasswordで動いているSSHDをエミュレーションして、どんなログイン試行があったかとか侵入されてから攻撃者がどんなコマンドを打ったかとかログを取ることができる。rootでは動かないため、仮にkippoを乗っ取られても被害は食い止められるようになっている。
インストール方法は割愛。kippoだけなら設定に気を遣うべきところは特にないが、kippo-graphで可視化する場合、ちゃんとApacheとかphpMyadminとか隠す必要がある。
アタック
昨日から試験的にSSHハニーポットを動かしてたんだけど、一日で1160回のログイン試行を受けてた。Shodanのスキャン以外接続元は全て中国で、パスワードに1qaz@WSXとHuawei123が使われていたのが面白かった。
— 能登だでぃ子 (@ntddk) 2014, 7月 5初日はShodan(後述)と中国だけだったが、たまにルーマニアとカンボジアからも来るようになった。
広西チワン族自治区のあるアドレスレンジから日に500回くらい試行があって、GoogleMap上では「茶店」となっているんだけど、お前データセンターだろ。
バナーの書き換え
中国からのSSHアタックを簡単で完璧な阻止率100%の対策について - lql.be::hateda
リンク通り、issue.netに天安門事件と書き加えただけ。
結果
中国からの試行が一見減った(324 -> 246)ように思えたのでぬか喜びしていたが、それでもアタックは普通に来る。
バナーの部分から金盾の検閲範囲外になってるので「SSHのバナーに天安門事件と表示すれば中国からのアタックを防げる」はガセみたいですね、自分のハニーポットへのアタックが減ったのは単純に攻撃者が休んでるだけっぽい
— 能登だでぃ子 (@ntddk) 2014, 7月 6天安門事件と書けばアクセスを防げるというのはひとえに金盾のキーワード検索によるものだが、バナーと言えどSSH通信は金盾の検閲範囲外にあたる。バナーはDiffie-Hellman鍵交換の後に来るからだ。
解決策
で、OpenSSH 6.1 からカスタマイズ可能なバージョン番号部分のバナー (VersionAddendum) は、DH 鍵交換の前。ここなら金盾検出大丈夫だけど、新しいバージョンの OpenSSH か独自ビルドしないといけないし、仕様上 US-ASCII しか書けない。
— Tsukasa #01 (@a4lg) 2014, 7月 6まあ実際こんなことする人いないと思うので、ポートノッキングなり強固なパスワードを使うとかするしかない。てか鍵使えよ。
Shodan
SHODAN - Computer Search Engine
Shodanという凶悪な検索エンジンがあって、インターネットに接続されている機器を検索することができる。
IPAテクニカルウォッチ 「増加するインターネット接続機器の不適切な情報公開とその対策」の公開:IPA 独立行政法人 情報処理推進機構
ハニーポットを動かし始めて12時間弱でShodanからのスキャンが来た。
Added port 2222 which is used by the Kippo SSH honeypot: http://t.co/0t6YQjober #shodan #honeypot #kippo
— John Matherly (@achillean) 2014, 6月 17Kippoはデフォルトだと22番ポートを2222番ポートにNATして使うことになっている。だが、ShodanはデフォルトポートからKippoを検出機能を備えているので別のポートを使った。これでスキャンは来るけどShodanに掲載されずに済む。
Shodanのスキャンは複数国から来るので、抜本的な対策は難しい。ハニーポットではなく一般的なSSHサーバーを動かす場合はShodanを意識したほうがいい。