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位
「sshd への不正アクセス」は,当初は上記と同じ方法で調べたが,その場合は root 等の様な存在するユーザ名に対しての情報は得られなかったので,「パスワード認証に失敗したユーザ」として調べる.上記の何種類のユーザ名かの調べ方とは少し異なるので注意.
$ cat *.log | grep sshd | grep "Failed password for " | sed -e 's/ invalid user / /' | awk '{print $9;}' | more | sort | uniq -c | sort -nr | head -20 485 root 150 admin 106 ubnt 47 test 28 user 26 support 20 pi 18 wordpress 13 oracle 11 guest 11 aaron 11 a 8 nmis 7 agsadmin 6 ftpuser 6 D-Link 5 vagrant 5 cisco 5 PlcmSpIp 4 postgres
表にしてみる
順位 | sshd不正アクセスユーザ名 | 件数 |
---|---|---|
1 | root | 485 |
2 | admin | 150 |
3 | ubnt | 106 |
4 | test | 47 |
5 | user | 28 |
6 | support | 26 |
7 | pi | 20 |
8 | wordpress | 18 |
9 | oracle | 13 |
10 | guest | 11 |
11 | aaron | 11 |
12 | a | 11 |
13 | nmis | 8 |
14 | agsadmin | 7 |
15 | ftpuser | 6 |
16 | D-Link | 6 |
17 | vagrant | 5 |
18 | cisco | 5 |
19 | PlcmSpIp | 5 |
20 | postgres | 4 |
root は UNIX系OSの管理者アカウント名で,数としてはダントツといえる.
admin ユーザ,いわゆる管理者ユーザ名として “admin” と言う名称を用いるのは想像に難しくない.
興味深い点としては,第3位の “ubnt” ユーザ名である.
私はてっきり Linux ディストリビューションの ubuntu の略かと思ったのだが,“ubnt ssh server” で検索すると,どうも異なるようだ.
7位にあるユーザ名 “pi” は,Raspberry pi 向け Linux ディストリビューションの一つである Raspbian の標準ユーザ名が “pi” であり,それが狙われていると思える. Raspbian の “pi” ユーザ名は,標準のパスワードは “raspberry” なので,特に何もケアせずに Raspberry pi で Raspbian イメージを動かしてインターネットから見える所に置くと,即不正アクセスされるだろう.
“D-Link” や “cisco” はネットワーク機器への進入を試みようとしていると思える.
19位の “PlcmSpIp” は,何のユーザ名なのかは分からなかったが,どうも Polycom 製品で使われているユーザ名のようだ.
対策
まず,当然のこととして,インターネットから見える所で sshd を動かしているならば,sshd への認証は公開鍵暗号方式のみとするのが良いだろう.
とは言うものの,公開鍵がない場合のバックアップ手段としてパスワード認証を使いたい場合や,私のようにズボラな人間(!!)がパスワード認証を使いたい場合がある.
その様な場合は,あまり安直なユーザ名を用いないほうが良いだろう.
root は,とにかくリモートからの ssh は出来ないようにしておいたほうが良い.
ソフト名をユーザ名にするのは,そのソフトの標準の設定もあるかも知れないが,変更可能ならば変更しておいたほうが良いだろう.
また,昨今は Raspberry pi の様な小型 Linux-BOX を IoT 機器として運用するケースもある.その様な場合は,ディストリビューション標準のユーザ名は基本的に使わないほうが良いだろうし,いっそ,そのユーザ名は削除したほうが良いかもしれない.
ネットワーク機器は,標準出荷時設定のユーザ名のまま使うのは避けたほうが良いだろう.
「サーバが狙われる」のではなく,IoT機器でも何でも,ssh でリモートログインできそうな機械は,なんでも狙われると考えたほうが良いだろう.