UbuntuでSSHポートを変更する方法
はじめに
Secure Shell (SSH) は、暗号化されたネットワークプロトコルで、ユーザーがリモートシステムに安全にアクセスして管理できるようにします。デフォルトではSSHはポート22で動作しますが、以下の理由でUbuntuシステムのデフォルトポートを変更したい場合があります:
-
セキュリティ向上:SSHのデフォルトポートを変更することで、ポート22を標的にした自動化されたボットやスクリプトからシステムを保護しやすくなります。
-
ログのノイズ削減:非標準ポートに移行することで、自動的なログイン試行の数が減少し、真の脅威の監視が容易になります。
-
コンプライアンス要件:一部のセキュリティポリシーやコンプライアンス基準では、リモートアクセスプロトコルに非標準ポートの使用が求められる場合があります。
-
ISPの制限:場合によっては、インターネットサービスプロバイダー(ISP)が、家庭用接続でのサーバーホスティングを防ぐために、ポート22のトラフィックをブロックまたは制限することがあります。
SSHポートの変更だけでは包括的なセキュリティ対策にはなりませんが、「セキュリティを隠す」という戦略の一部として効果的な方法です。本チュートリアルでは、UbuntuシステムでSSHポートを変更する手順を説明し、より安全なサーバー環境を構築する一助となることを目指します。
事前準備
SSHポートの変更を始める前に、以下の点を確認してください:
-
Ubuntuシステム:このガイドはUbuntu向けですが、他のLinuxディストリビューションでも似た手順が適用される場合があります。
-
RootまたはSudo権限:システム設定を変更するための管理者権限が必要です。
-
基本的なターミナル操作の知識:Linuxコマンドライン操作に慣れている必要があります。
-
SSHアクセス:現在SSHでシステムにアクセスできることを確認してください。
-
バックアップ接続方法:設定変更中に問題が発生した場合に備えて、別のアクセス方法(コンソールアクセスなど)を用意しておきましょう。
SSHポートを変更する手順
1. SSH設定ファイルのバックアップ
システム設定ファイルを変更する前に、バックアップを作成するのが良い習慣です。SSH設定ファイルをバックアップするには、以下のコマンドを使用します:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
このコマンドは、元の設定ファイルのコピーを.bak
拡張子で作成します。問題が発生した場合、このバックアップに戻すことができます。
2. SSH設定ファイルを編集
次に、SSH設定ファイルを開いて編集します。好きなテキストエディタを使用できますが、ここではnano
を使用します:
sudo nano /etc/ssh/sshd_config
このコマンドは、nanoテキストエディタでsshd_config
ファイルをルート権限で開きます。
3. ポート番号の変更
sshd_config
ファイルをテキストエディタで開いたら、#Port 22
と書かれた行を探します。この行は通常コメントアウトされています(行頭に#
が付いていることを示します)。
SSHポートを変更するには:
#
を削除して行のコメントを解除します。22
を希望するポート番号に変更します。
例えば、ポートを2222に変更したい場合、この行は次のようになります:
Port 2222
他のサービスと競合しないように、1024~65535の範囲内でポート番号を選択してください。また、システムで他のサービスが既に使用していないポートを選ぶようにしましょう。
4. 設定ファイルの保存と終了
変更を保存するには:
- nanoを使用している場合は、
Ctrl + X
を押し、続けてY
、最後にEnter
で保存して終了します。 - vimを使用している場合は、
Esc
を押してから:wq
を入力し、Enter
を押します。
5. ファイアウォール設定の調整
Ubuntuシステムで一般的に使用されるUFW(Uncomplicated Firewall)を利用している場合、新しいSSHポートでの接続を許可する必要があります。以下のコマンドを実行してください:
sudo ufw allow 2222/tcp
sudo ufw reload
2222
の部分は、選択した新しいポート番号に置き換えてください。
別のファイアウォールを使用している場合は、そのドキュメントを参照して新しいポートを開く方法を確認してください。
6. SSHサービスの再起動
変更を適用するために、以下のコマンドでSSHサービスを再起動します:
sudo systemctl restart sshd
これで、新しい設定でSSHデーモンが再起動されます。
7. 新しいSSHポートのテスト
現在のSSHセッションを閉じる前に、新しいポートで接続できるかどうかをテストすることが重要です。新しいターミナルウィンドウを開き、次のコマンドで接続してみてください:
ssh -p 2222 username@your_server_ip
2222
を新しいポート番号に、username
を実際のユーザー名に、your_server_ip
をサーバーのIPアドレスに置き換えてください。
接続に成功した場合、古いSSHセッションを閉じ、以降は新しいポートを使用して接続できます。
トラブルシューティング
SSHポートの変更後に問題が発生した場合は、以下を確認してください:
-
接続拒否:新しいポートがファイアウォール設定で開いていることを確認してください。
-
ポートが既に使用中:ポートが既に使用されているエラーが出た場合、別のポート番号を選んでください。
-
SSHサービスが起動しない:
sudo systemctl status sshd
でSSHサービスの状態を確認し、エラーメッセージを確認します。 -
変更を元に戻す:全く接続できない場合は、バックアップアクセス方法(コンソールアクセスなど)を使用し、バックアップ設定ファイルを復元してください:
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config sudo systemctl restart sshd
よくある質問(FAQ)
1. SSHポートの変更は本当に必要ですか?
絶対に必要ではありませんが、SSHポートを変更することで自動攻撃やログのノイズが大幅に減少します。しかし、これはより広範なセキュリティ戦略の一部であるべきで、唯一の対策ではありません。
2. どのポート番号を選べばいいですか?
他のサービスとの競合を避けるため、1024~65535の範囲内でポート番号を選んでください。2222や22222などの一般的な代替ポートは、より高度なスキャンの対象となることが多いため避けるのが無難です。
3. SSHポートの変更は現在の接続に影響しますか?
ポートの変更は現在のSSHセッションには影響しませんが、今後の新しい接続では新しいポート番号が必要です。
4. SSHポートを変更した後に接続する方法は?
接続時に-p
オプションで新しいポート番号を指定してください。例:
ssh -p 2345 username@your_server_ip
5. 必要に応じてSSHポートを22に戻せますか?
はい、このガイドで説明したのと同じ手順を使用して、ポートを22または他の番号に戻すことができます。
6. SSHポートの変更はSFTPやSCPに影響しますか?
SFTPやSCPはSSHと同じポートを使用します。これらのサービスを使用する際にも新しいポートを指定する必要があります。
7. よく知られた代替ポート(2222など)を使用しても安全ですか?
2222などのポートはデフォルトの22よりは良いものの、攻撃者にスキャンされやすいため、よりユニークなポート番号を選ぶ方が安全です。
8. 新しいSSHポートを忘れた場合どうすればよいですか?
新しいSSHポートは安全な場所に記録しておきましょう。忘れてしまった場合、コンソールアクセスなどの代替アクセス方法を使用して確認またはリセットが必要になるかもしれません。
9. SSHポートの変更はサーバーのパフォーマンスに影響しますか?
SSHポートの変更はサーバーのパフォーマンスにほとんど影響を与えません。自動攻撃の減少によるメリットが、パフォーマンスへの影響を上回ることが多いです。
10. チームメンバーや他のユーザーにSSHポートの変更を通知するべきですか?
はい、SSHポートの変更についてはすべての認可ユーザーに通知し、新しい接続情報を提供することが重要です。