Tomorrow Will Be A Better Day

Published

- 1 min read

sshの接続ポート番号を変更することで、意図しない不正アクセスを防ぐ方法

img of sshの接続ポート番号を変更することで、意図しない不正アクセスを防ぐ方法

検証背景

EC2を建てて、ssh接続するポート番号を22のデフォルトにしておくと、 以下の様な不正アクセスを試みるログが残ることがある。

こうした不正アクセスを防ぐため、sshのポート番号を変更するだけでも効果があるとのことで、実際に1週間ほどEC2を放置してみた。

検証環境

OS : Ubuntu14.04

Instance Type : t2.micro

設定内容

そのため、/etc/ssh/sshd_config の下記の部分を書き換え、service ssh restart を行う。

[Tips]

sshを再起動するときは、いったん22と10022の両方をセキュリティグループに登録しておき、新しいセッションで10022に接続できることを確認した後、 sshを再起動したセッションを閉じる方が混乱せずにすむ

結果

注)個人検証のために、SSHの接続を一時的に全許可するだけのハニーポットを準備したときの結果です。 ホスト名などが外に漏れているサーバであれば、これが数万数十万件の規模で不正アクセスがきます。

不正アクセス件数

ポート番号を変更するだけで、見事に不正アクセス数がなくなった。 #他の運用中サーバでも、1700~2200ぐらいは不正アクセスを試みた記録が残っている

ユーザごとの不正アクセス件数

不正アクセスを試みようとしている主なユーザは、以下のようなユーザであった。 test,admin,guestなどは結構作りがちだが、パスワード認証とかだと破られる可能性があるので、注意しておいた方がよさげ。

対応方針

AWSのデザインパターンの一つ、CDP:OnDemand Bastionパターンを使う。

必要なタイミングで踏み台サーバを起動する

可能であれば、これが一番やりやすい方針だと思うけど、 OnDemand Bastionについて基本的なところおさらいを見ていると、やはり踏み台サーバを常時稼動させておきたいという要件も出てくる。

踏み台サーバのポートだけ変更しておく

下図のような構成で、踏み台サーバだけsshのポート番号を変更しておけば、 不正アクセスも防げ、かつVPC内部のssh接続はデフォルトの22ポートが利用できる。

bastion

appサーバに接続する際は、~/.ssh/configに以下のような定義を記載しておく。

この状態で、$ssh app.testと接続すれば、bastion.test経由でapp.testまでsshでログイン可能となる。

Related Posts

There are no related posts yet. 😢