はじめに
初期設定では、ポート22を使ってどこからでもSSH接続できる状態になっていたため、推測されにくいポート番号(例:2222)に変更し、特定のサーバからのみSSH接続できるように制限しました。
SSHはデフォルトでポート22を使用するため、そのままにしておくとセキュリティリスクが高くなります。今回は、そのリスクを下げるための設定手順をまとめます。
環境
- Amazon Linux 2023
- セキュリティグループ(インバウンドルール)では、ポート22 / 0.0.0.0/0(全世界)からのSSH接続が許可されている状態
手順
1. インバウンドルールにポート2222を追加
今回はポート2222を使用します。
AWSマネジメントコンソールから、接続を許可したいサーバのパブリックIPアドレスに対して、ポート2222のインバウンドルールを追加します。
※この時点では、ポート22のルールは削除しないでください(後述のサーバ設定で2222が使えるようになるまで必要です)。
2. サーバ側でポート2222を許可
※使用するOSによりコマンドが異なる場合があります。以下はAmazon Linux 2023の例です。
-
まず、ポート22でSSH接続しておきます。
-
/etc/ssh/sshd_config
ファイルに以下の1行を追加します:Port 2222
-
変更後、以下のコマンドを順に実行して設定を反映させます:
# 設定の整合性チェック(エラーがなければ何も出力されません) sudo sshd -t # sshd 再起動(再起動中、一時的に接続が切れる場合あり。注意) sudo systemctl restart sshd # sshdのステータス確認(active (running) ならOK) sudo systemctl status sshd # リッスンしているポートの確認 sudo ss -tlnp | grep sshd
3. ポート2222で接続できるか確認
別のターミナルやPCから、以下のようにポート2222でSSH接続できるか確認します:
# -pオプションでポート指定
ssh -p 2222 ユーザー名@ホスト名またはIP
# 例(EC2の場合)
ssh -p 2222 ec2-user@203.0.113.10
または、~/.ssh/config に以下のような設定を記載することで、簡略化できます:
Host example-server
HostName 203.0.113.10
User ec2-user
Port 2222
4. ポート22の設定を削除
接続確認が取れたら、ポート22の設定を削除またはコメントアウトします。
sshd_config での修正
- Port 22
その後、再び以下を実行:
コマンド一覧
bash コピーする 編集する # 設定の整合性チェック sudo sshd -tsshd 再起動
sudo systemctl restart sshd
ステータス確認
sudo systemctl status sshd
リッスンポート確認
sudo ss -tlnp | grep sshd
おわりに
SSHポートの変更により、セキュリティを強化することができますが、新しいポートでの接続が確認できてから既存のポートを削除することが重要です。
特に本番環境では、操作ミスによって接続できなくなるリスクがあるため、慎重に進めてください。