文書の過去の版を表示しています。
sshサーバへの不正アクセスユーザ名の傾向と対策(2015年11月)
sshサーバ(sshd)への総当たり攻撃(Brute-force attack)は2015年の今では,珍しいものでもないが,総当り攻撃を仕掛けてくる側(クラッカー)が,どの様なユーザー名で総当りをしているのか少し調べてみることにしてみた.
私はインターネット上に2015年11月現在で4台サーバを設置していて,その 4台の sshd サーバのログから,どの様なユーザ名でアクセスを仕掛けてくるかを調べてみた.
何種類のユーザー名でsshdに接続してきているか
$ cat *.log | grep sshd | grep "Invalid user" | awk '{print $8;}' | sort | uniq -c | sort -nr | wc -l 2464
2464種類のユーザー名でsshdへアクセスを仕掛けてきている.
sshdへの不正アクセスユーザ名上位20位
$ cat *.log | grep sshd | grep "Invalid user" | awk '{print $8;}' | sort | uniq -c | sort -nr | head -20 373 admin 183 oracle 176 ubnt 147 test 121 teamspeak 112 git 98 minecraft 92 teamspeak3 90 ftp 82 nagios 81 user 70 deploy 62 jenkins 61 support 58 wordpress 58 hadoop 56 pi 55 guest 55 demo 54 ts
表にしてみる
順位 | sshd不正アクセスユーザ名 | 件数 |
---|---|---|
1 | admin | 373 |
2 | oracle | 183 |
3 | ubnt | 176 |
4 | test | 147 |
5 | teamspeak | 121 |
6 | git | 112 |
7 | minecraft | 98 |
8 | teamspeak3 | 92 |
9 | ftp | 90 |
10 | nagios | 82 |
11 | user | 81 |
12 | deploy | 70 |
13 | jenkins | 62 |
14 | support | 61 |
15 | wordpress | 58 |
16 | hadoop | 58 |
17 | pi | 56 |
18 | guest | 55 |
19 | demo | 55 |
20 | ts | 54 |
- | 合計 | 2084 |
上位20位の合計件数で,全体の約84%にあたる.
admin ユーザ,いわゆる管理者ユーザ名として “admin” と言う名称を用いるのは想像に難しくない.
興味深い点としては,第3位の “ubnt” ユーザ名である.
私はてっきり Linux ディストリビューションの ubuntu の略かと思ったのだが,“ubnt ssh server” で検索すると,どうも異なるようだ.
他,目立つものとしては,“oracle”,“teamspeak”,“git”,“minecraft”,“wordpress” と言うように,ソフトの名前がそのままユーザ名として扱われている.
これも,これらのサーバを稼働させる時に,非rootで稼働させたいが,良いユーザ名が思いつかない時に,安易にソフト名をユーザ名にするのは想像に難しくないので,そのようなユーザ名が狙われているのだろう. あるいは,何らかの設定テンプレートにあるユーザ名をそのまま使っているのかも知れない.
17位にあるユーザ名 “pi” は,Raspberry pi 向け Linux ディストリビューションの一つである Raspbian の標準ユーザ名が “pi” であり,それが狙われていると思える. Raspbian の “pi” ユーザ名は,標準のパスワードは “raspberry” なので,特に何もケアせずに Raspberry pi で Raspbian イメージを動かしてインターネットから見える所に置くと,即不正アクセスされるだろう.
対策
まず,当然のこととして,インターネットから見える所で sshd を動かしているならば,sshd への認証は公開鍵暗号方式のみとするのが良いだろう.
管理者アカウント(それこそ admin)を複数名でログインして作業する必要がある場合は,作業者ごとに ssh 鍵ペアを作成し,公開鍵を authorized_keys に登録すればよいだろう.
そうすれば,もし誰かの作業者の秘密鍵が流出したとしても,その作業者の公開鍵のみを authorized_keys から消してしまえば,他の作業者の鍵はそのまま使える.パスワードを変える必要もない.
とは言うものの,公開鍵がない場合のバックアップ手段としてパスワード認証を使いたい場合や,私のようにズボラな人間(!!)がパスワード認証を使いたい場合がある.
その様な場合は,あまり安直なユーザ名を用いないほうが良いだろう.管理者アカウントを複数名で使う場合は,まず各自のユーザ名でログインして,それから su コマンドなどで管理者アカウントになれば良い.