最先端のセキュリティのAWSで不正アクセスを受けてみました

不正アクセスの標的となるサーバをインターネットに開放してみました

インターネットは大変便利ですが、利便性の裏にウイルス、マルウェア、不正アクセスを試みるロボット(BOT)、悪意のあるハッカーからのアタックといった危険性も持ち合わせていることは皆さんもよくご存知ではないでしょうか。今回は、インターネットに悪意のあるアタックの標的となるサーバを公開し、不正アクセスに関する実態を調べてみます。

標的となるサーバインスタンスをデプロイ

悪意のあるハッカーからの攻撃をうける標的サーバを構築してみます。短期間の検証のためだけのサーバですので、わざわざ物理マシンやOSパッケージを購入するのも気が引けますので、クラウドを利用してマウスポチポチでさくっと作って、利用が終わったら削除して利用料を支払っておしまいと言うライトな感じがよさそうです。

と言うわけで、AWSにAmazonLinuxを一番安い t3.nano でデプロイしました。

設定変更によりセキュリティを固める

ハッカーやボットからの大量のアタックをうけるサーバですので、セキュリティを下記の通りかなり厳しく設定しました。

SSHでログインできるアカウントは一つに限定(非管理者権限)
意図的に設定ミスしておりSSHでログインできない
ログイン処理の過程で強制ログアウトさせる
それでもログインに成功した場合、監視プロセスがOSを強制停止する

上記のようにガチガチにセキュリティを固めてみました。以上により準備が整いましたので、接続元をしぼらずに大々的にSSHを開放してみます。

インターネット開放後、2時間でBOTに見つけられてしまう!

このサーバのIPアドレスは対外的に告知してもいません。ドメインにも関連付けしていないため、不正アクセスが来るのか不安でしたが、ポートを開放して2時間もするとさっそくBOTがかぎつけ、SSHサービスがオープンしていることを認識されました。不正なログインを何度も行ってきたことを確認でき、めでたく悪意のあるBOTに発見されたようですので、このままサーバを2週間ほど放置して経過を観察してみたいと思います。

実機のsecureログ(*)ログは一部加工しています

May 15 06:53:12 myhost sshd[2874]: User root from **.**.**.** not allowed because not listed in AllowUsers
May 15 06:53:12 myhost sshd[2874]: input_userauth_request: invalid user root [preauth]
May 15 06:53:13 myhost sshd[2874]: Received disconnect from **.**.**.** port 40890:11: Bye Bye [preauth]
May 15 06:53:13 myhost sshd[2874]: Disconnected from **.**.**.** port 40890 [preauth]
May 15 06:53:13 myhost sshd[2876]: Invalid user adm from **.**.**.** port 41426
May 15 06:53:13 myhost sshd[2876]: input_userauth_request: invalid user adm [preauth]
May 15 06:53:13 myhost sshd[2876]: Received disconnect from **.**.**.** port 41426:11: Bye Bye [preauth]
May 15 06:53:13 myhost sshd[2876]: Disconnected from **.**.**.** port 41426 [preauth]
May 15 06:53:14 myhost sshd[2878]: Invalid user adm from **.**.**.** port 42114
May 15 06:53:14 myhost sshd[2878]: input_userauth_request: invalid user adm [preauth]
May 15 06:53:14 myhost sshd[2878]: Received disconnect from **.**.**.** port 42114:11: Bye Bye [preauth]
May 15 06:53:14 myhost sshd[2878]: Disconnected from **.**.**.** port 42114 [preauth]
May 15 06:53:14 myhost sshd[2880]: Invalid user user from **.**.**.** port 42754
May 15 06:53:14 myhost sshd[2880]: input_userauth_request: invalid user user [preauth]
May 15 06:53:14 myhost sshd[2880]: Received disconnect from **.**.**.** port 42754:11: Bye Bye [preauth]
May 15 06:53:14 myhost sshd[2880]: Disconnected from **.**.**.** port 42754 [preauth]
May 15 06:53:15 myhost sshd[2882]: Invalid user ubnt from **.**.**.** port 43280
May 15 06:53:15 myhost sshd[2882]: input_userauth_request: invalid user ubnt [preauth]
May 15 06:53:15 myhost sshd[2882]: Received disconnect from **.**.**.** port 43280:11: Bye Bye [preauth]
May 15 06:53:15 myhost sshd[2882]: Disconnected from **.**.**.** port 43280 [preauth]
May 15 06:53:16 myhost sshd[2884]: Invalid user adm from **.**.**.** port 43918
May 15 06:53:16 myhost sshd[2884]: input_userauth_request: invalid user adm [preauth]
May 15 06:53:16 myhost sshd[2884]: Received disconnect from **.**.**.** port 43918:11: Bye Bye [preauth]
May 15 06:53:16 myhost sshd[2884]: Disconnected from **.**.**.** port 43918 [preauth]
May 15 06:53:16 myhost sshd[2886]: Invalid user guest from **.**.**.** port 44518
May 15 06:53:16 myhost sshd[2886]: input_userauth_request: invalid user guest [preauth]
May 15 06:53:16 myhost sshd[2886]: Received disconnect from **.**.**.** port 44518:11: Bye Bye [preauth]
May 15 06:53:16 myhost sshd[2886]: Disconnected from **.**.**.** port 44518 [preauth]
May 15 06:53:17 myhost sshd[2888]: Invalid user test from **.**.**.** port 45072
May 15 06:53:17 myhost sshd[2888]: input_userauth_request: invalid user test [preauth]
May 15 06:53:17 myhost sshd[2888]: Received disconnect from **.**.**.** port 45072:11: Bye Bye [preauth]
May 15 06:53:17 myhost sshd[2888]: Disconnected from **.**.**.** port 45072 [preauth]
May 15 07:56:43 myhost sshd[3049]: Invalid user adm from **.**.**.** port 35611
May 15 07:56:43 myhost sshd[3049]: input_userauth_request: invalid user adm [preauth]

[注] 不正アクセスの接続元として記録されているIPアドレスはハッカーの端末ではなく、ハッカーに侵入されBOTをインストールされた端末であると想定されますので、非公開と致します。

不正アクセス被弾の集計結果発表

2週間サーバをインターネットにこっそりと公開し、不正なログイン試行を受け続けた結果を集計してみました。

第一位の発表です。圧倒的に多かったのは Unix/Linux 系OSの管理者・特権ユーザであるrootが第一位となりました。ユーザが確実に存在すること、ログインに成功すればそのコンピュータの全権限を掌握できることから、13,063件と2位以下に2桁の差をつけて圧倒的件数を記録しました。

第2位と第3位はuserとtestで、それぞれ174件と172件でした。皆様の会社に検証環境、評価環境など気軽に立てたサーバで、ユーザ名:(パスワード)の組み合わせが user:(user) や test:(test) といったユーザを作成したまま放置されているサーバはありませんか?guest:(guest)も含め、この手のよくあるユーザ名でパスワードがユーザ名と同一のアカウントは真っ先に不正ログインの被害にあってしまうアカウントです。このようなユーザは放置せず、類推不可能なパスワード、認証キーペアやその他いろいろな仕組みを組み合わせるなどして、不正ログインができないようにしておきましょう。

その他にも注意すべきアカウントとして、先のよく使われる文字列を組み合わせたftptestなどtestを含むアカウント名へのアタックが220件、それから容易にそのユーザが存在することが推測可能なtomcat postgres などのミドルウェア名と同じユーザ名へのアタックやWindowsやウェブサービスの管理者として利用されるAdministratorやadminでのログインも数十件記録されていました。

□接続元ホスト数 765台

□総ログイン試行回数 15857回

□狙われたユーザ名 上位10件

------------------------

13063
root
174
user
172
test
128
ubnt
103
nagios
86
fake
77
ubuntu
69
bin
66
zabbix
65
guest

------------------------

実際の不正アクセス件数はもっと多い(ログに残る不正アクセスの試行はほんの一部)

サーバへの不正アクセス試行の総件数の集計結果を公開しておりますが、残されたログから全てが分かるわけではありません。サーバ上のログに記録される不正アクセスの試行は、ほんの一部です。セッションが成立する前に行われるアタックなど、ログに出力されないものも多く存在します。また、今回、AWSのセキュリティ機能で接続そのものを許可しなかったサービスへのアタックなどは、通信そのものがブロックされていますので、不正な接続はサーバまで届きません。最近は、連続でログインに失敗した接続元は自動的にしばらくの間、接続をブロックする機能も有効になっていることが多く、これらの通信はサーバに届きませんので、ログには記録されません。これらの機能を無効にし、すべての接続を受け付けてしまえば、もっとたくさんの不正アクセスの試行が記録されていることでしょう。また、通信成立前に行われるアタックもカウントが可能であれば件数はもっと増加すると考えられます。

業務で利用される商用サーバへの不正アクセスはもっと多い

今回の検証で利用したサーバは、世間一般に広く告知されていないこっそりと公開されたサーバです。それでも二時間もするとBOTを埋め込まれたコンピュータからのランダムな接続試験にSSHサービスが応答したため、BOTプログラムに発見されてしまいました。ドメインを取得し、世間に広く告知されている商用サービスを提供するサーバへの不正なアタックは、何倍(膨大な件数)にも増加します。

世界中の不特定多数で共同利用されるインターネット回線はそのままでは安全とは言えません。自ら学びサーバセキュリティの設定を実施するか、閉域網の活用などを専門家・業者に依頼して十分な安全性を確保して下さい。

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る