デフォルトのSSHポート番号は22ですが、デフォルト故にハッカーからの標的にされやすい特徴があります。
EC2にて、インスタンスを作成後、ポート番号を変更する手順を記述します。
手順
- EC2インスタンスにSSHで接続
-
sshd_config
の中身を書き換える -
reload
で設定を反映 - AWSコンソールにて、インバウンドの設定を変更
インスタンスに接続
mbp:~ mac$ ssh -i .ssh/秘密鍵ファイル ec2-user@パブリックIP
Last login: Tue Jun 4 14:42:14 2019 from 110.235.247.88
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
sshd_config
の設定を書き換えます
# Port 22
となっている場所をコメントアウトし、任意のポート番号にします。
エフェメラルポート番号(49152~65535)から指定すれば良いので、今回は50022
に指定しました。
なお、エフェメラルポート番号とはIANAという団体が使用を推奨しているポート番号範囲です。
参考記事:エフェメラルポート 【 ephemeral ports 】 ダイナミックポート
sudo vi /etc/ssh/sshd_config
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 50022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
設定を反映するため、下記コマンドを入力します。
sudo service sshd reload
内容が反映されているか、netstat
で確認します。
LISTEN
に50022があることから、うまくいっています。
なお、ESTABLISHED
に22と記載されていますが、これは現在ポート番号22で接続している状態を示しています。
後に、50022でssh接続したあとは、22と表示されません。
sudo netstat -anp | grep sshd
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 3599/sshd
tcp 0 36 172.31.36.147:22 110.235.247.88:56226 ESTABLISHED 14847/sshd: ec2-use
tcp6 0 0 :::50022 :::* LISTEN 3599/sshd
AWSコンソールにて、インバウンドの設定
TCP Ruleにポート番号50022を指定し、SSHの記述は削除します。
EC2インスタンスの接続確認
ポート番号50022を指定してSSH接続できるか確認します。
ssh -i .ssh/秘密鍵ファイル ec2-user@パブリックIP -p 50022
Last login: Wed Jun 5 03:45:55 2019 from 110.235.247.88
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
参照元
AWS EC2 Amazon Linuxインスタンス起動後、最初にやることまとめ(SysVinit編)
【AWS】SSHのポート番号を変更してみよう 【使ってみた】