「取り敢えず乗っ取れそうなサーバがあるなら攻撃する」ぐらいの勢いでSSHに接続する輩。その数は浜の真砂のなんとやらです。
そこでふと思ったのが「どこの国からの不正攻撃が多いのか」という興味。これを調べてみます。
環境
- Ubuntu 24.04
- 公開鍵認証
- fail2ban導入済み
まず、現在のBANリストの傾向を見る
以下を使って調べます。
sudo fail2ban-client status sshd | grep "Currently banned"
結果
|- Currently banned: 8473
なんと、8500にも及ぶIP群。これらをnslookup / digで調べるのは非効率。そして、それらを一覧してシェルスクリプトを組むのもDNSのクエリーを食い潰します。
geoiplookupによる調査
そこで、geooplookupを用います。
インストールは以下の方法で。(筆者は好みでaptitudeを用いています)
sudo aptitude install geoip-bin geoip-database
インストール後、
geoiplookup 8.8.8.8
を入力。
GeoIP Country Edition: US, United States
が帰ってくればOKです。
では、GeoIPで実際に、fail2banが検知したものを見てみます。
sudo fail2ban-client status sshd | grep "IP list" | sed 's/.*IP list: \+//' | tr ' ' '\n' | while read ip; do geoiplookup "$ip" | cut -d: -f2; done | sort | uniq -c | sort -rn | head -n 20
こちらの結果は
1716 CN, China
1134 US, United States
498 CA, Canada
487 SG, Singapore
476 VN, Vietnam
394 ID, Indonesia
344 HK, Hong Kong
327 DE, Germany
314 IN, India
229 RU, Russian Federation
212 KR, Korea, Republic of
175 BR, Brazil
167 GB, United Kingdom
164 IR, Iran, Islamic Republic of
149 NL, Netherlands
124 FR, France
95 JP, Japan
86 TH, Thailand
71 IT, Italy
69 ES, Spain
ここから分かること
組織的なスキャンの存在:
上位10カ国だけで、全体の半分近く(約5,700件)を占めています。特定の地域に設置されたデータセンターやクラウドプロバイダーのIP群から、システマチックに攻撃が来ていることが推測できます。
「日本国内」がランク外の安心感:
上位10カ国に日本(JP)が入っていないことから、ターゲットを絞った攻撃というよりは、「世界中を無差別に絨毯爆撃しているボット」に私のサーバーが見つかり、それをFail2Banがコツコツと捕獲し続けている状況です。
まとめ
「vps一本でサーバを公開する」という宣言は自由ではありますが「これだけの悪意と戦う自由」との隣り合わせ。
鍵交換認証にする理由
- パスワードが送信されない
- パスワード認証では、パスワード自体がネットワーク上を流れるため盗聴リスクがあります。
- 鍵認証では、秘密鍵が署名を生成し、署名のみが送信されるため、秘密情報が直接送られることはありません。
- 総当たり攻撃に強い
- パスワードは文字数が少ないと短時間で破られる可能性があります。
- 鍵認証では、2048ビット以上の鍵が使われることが多く、現在の一般的なサーバの計算能力では事実上破ることが不可能です。
- 盗聴されても再利用できない
- 鍵認証では毎回異なるチャレンジに対して署名を行うため、録音や再送信による攻撃(リプレイ攻撃)が通用しません。
- フィッシング耐性が高い
- パスワード認証は偽サイトに入力してしまうリスクがあります。
- 鍵認証では秘密鍵がローカルに保管されており、外部に送信されないためフィッシングに強いです。
は、心に留めておくべきSSHの運用です。

