SSH
SSH ポート ガイド: 安全なリモート サーバー アクセス
SSH がポート 22 を使用する方法、ポート 22 をいつ公開するか、リモート アクセスをテストする方法、およびブルート フォースと資格情報のリスクを軽減する方法を理解します。
- 既定ポート
- 22
- プロトコル
- TCP
- 主な用途
- 安全なリモート運用
SSHポートとは何ですか?
SSH (セキュア シェル) は、リモート サーバー管理用の標準暗号化プロトコルです。デフォルトでは、TCP ポート 22 でリッスンし、クライアントはそこで認証を行い、サーバーのホスト キーを検証し、セキュア シェル セッション、トンネル、またはオートメーション接続を開きます。
ポート 22 はデフォルトの SSH ポートです
ほとんどの Linux サーバー、ネットワーク デバイス、Git サービス、デプロイメント ツール、および SFTP セットアップは、別の設定がされていない限り、SSH が TCP 22 で到達可能であることを想定しています。
SSH 公開は意図的に行う必要があります
オープン SSH ポートは管理に便利ですが、脆弱なパスワードや漏洩したキーを探す攻撃者によって最初にスキャンされるサービスの 1 つでもあります。
SSH の仕組み
SSH は、クライアントとリモート サーバーの間に暗号化されたチャネルを作成します。接続のセットアップ中に、クライアントはサーバーのホスト キーを検証し、双方で暗号化をネゴシエートし、ユーザーはパスワード、SSH キー、証明書、ハードウェア バックキー、または別の構成された方法を使用して認証します。
認証後、SSH は対話型シェルを提供し、単一のリモート コマンドを実行し、ポートを転送し、ファイルをコピーし、Git、rsync、Ansible、デプロイメント パイプラインなどの強力なツールを実行できます。この柔軟性こそが、SSH が運用上重要である理由であり、暴露に慎重なポリシーが必要な理由です。
SSH アクセスを開く必要がある場合
管理者、自動化ツール、CI/CD ジョブ、構成管理、Git サービス、またはブレークグラス ワークフローでサーバーまたはデバイスへのリモート アクセスが必要な場合は、SSH を開きます。パブリック クラウド サーバーの場合、SSH は多くの場合、上位レベルのツールがインストールされる前に使用される最初の管理パスです。
少数のグループのみがアクセスを必要とする場合は、インターネット全体に SSH を公開しないでください。可能であれば、VPN、要塞ホスト、ゼロトラスト アクセス、クラウド シリアル コンソール、ソース IP 許可リスト、またはプライベート ネットワーク接続を優先します。パブリック SSH が避けられない場合は、最初から強力な認証と監視を強制します。
ポート 22 を開く前
ポート 22 を開く前に、sshd が実行中であり、目的のインターフェイスでリッスンしており、実際に必要な認証モデルに設定されていることを確認してください。パスワードを許可するかどうか、どのユーザーがログインできるか、root ログインを無効にするかどうか、および管理アクションをどのように監査するかを決定します。
ポート チェッカーは、ネットワークの外部から TCP 22 に到達できるかどうかを確認できますが、ユーザーが安全にログインできることを証明することはできません。 ssh -vvv、サーバー ログ、アカウント レベルのテストを使用して、ホスト キーの信頼性、キーのアクセス許可、MFA ポリシー、シェル アクセス、および sudo ルールを検証します。
Windows、Linux、macOS で SSH を開く方法
Windows Server で、OpenSSH Server をインストールして有効にし、sshd サービスを開始し、Windows Defender ファイアウォールで受信 TCP 22 を許可します。クラウドでホストされている Windows サーバーも、一致するクラウド ファイアウォールまたはセキュリティ グループ ルールを必要とします。
Linux では、OpenSSH サーバーをインストールし、sshd_config を確認し、ufw、firewalld、nftables、iptables などのホスト ファイアウォールを通過する TCP 22 を許可します。クラウド インスタンスでは、プロバイダー セキュリティ グループが同じソース ネットワークを許可することも必要です。
macOS では、信頼されたネットワークで SSH が必要な場合にリモート ログインを有効にします。インターネットへの公開については、サーバーと同じ制御 (キーベースの認証、ファイアウォールのスコープ設定、ロギング、タイムリーな更新) を適用します。
- サービス層: sshd がインストールされ、実行され、選択した TCP ポートでリッスンする必要があります。
- ネットワーク層: ホスト ファイアウォール、クラウド ファイアウォール、ルーター NAT、および VPN ポリシーはすべて、目的のソース ネットワークを許可する必要があります。
- ID 層: SSH キー、証明書、またはハードウェアでサポートされたキーを好みます。広範なパスワードへのアクセスを避けてください。
- 監査層: 成功したログイン、失敗した試行、ソース IP、ユーザーの変更、sudo イベント、およびキーのローテーションをキャプチャします。
SSH 接続をテストする方法
パブリック ホスト名または IP アドレスとポート 22 に対する外部ポート チェックから開始します。結果がオープンであれば、SSH への TCP パスに到達可能です。次に、ssh user@example.com または ssh -vvv user@example.com を実行して、ホスト キー、認証方法、およびセッション セットアップを確認します。
サーバー上で、ss -tlnp、netstat、または PowerShell を使用してリスナーを確認します。クラウド サーバーが関係している場合は、ホスト ファイアウォール ルールとクラウド セキュリティ グループを比較してください。これは、どちらかの層が正しいように見えても、どちらかの層が SSH をブロックする可能性があるためです。
一般的な SSH トラブルシューティングのケース
ポート 22 が閉じられている場合、sshd は停止されるか、別のポートにインストールされるか、プライベート インターフェイスにのみバインドされるか、ホスト ファイアウォールによってブロックされる可能性があります。チェックがタイムアウトすると、クラウド セキュリティ グループ、ルーター NAT ルール、ISP フィルター、VPN ポリシー、または送信元 IP 許可リストによってパケットがドロップされる可能性があります。
ポートは開いているがログインに失敗する場合は、ユーザー名、キーのアクセス許可、authorized_keys ファイル、パスワード ポリシー、MFA 要件、AllowUsers または DenyUsers ルール、root ログイン設定、およびサーバー ログを検査します。 SSH 障害の多くは、ポートの問題ではなく認証の問題です。
SSH のセキュリティ チェックリスト
root ログインを無効にし、パスワードよりもキーまたは証明書を優先し、キーをローテーションし、古いアカウントを削除し、接続できるユーザーを制限します。特権アクセスには MFA またはハードウェア ベースのキーを使用し、秘密キーがパスフレーズまたは安全なハードウェア ストレージで保護されていることを確認します。
ソース許可リスト、要塞ホスト、VPN、レート制限、侵入検知、タイムリーな OpenSSH パッチにより、攻撃対象領域を削減します。 SSH を標準以外のポートに移動すると、ノイズの多いスキャンを減らすことができますが、セキュリティ制御としてではなく、ノイズの軽減としてのみ扱う必要があります。
よくある質問
SSH はどのポートを使用しますか?
SSH はデフォルトで TCP ポート 22 を使用します。サーバーがそのように構成されており、クライアントがカスタム ポートを指定している場合は、別のポートで実行できます。
ポート 22 を開いても安全ですか?
意図的にアクセスが強化されている場合は安全です。キーまたは証明書を使用し、root ログインを無効にし、ソース ネットワークを制限し、失敗した試行を監視し、SSH サーバーにパッチを適用したままにします。
ポート 22 は開いているのに、SSH ログインが失敗するのはなぜですか?
認証が失敗しても、TCP ポートに到達できる可能性があります。ユーザー名、キー権限、authorized_keys、MFA、許可されたユーザー ルール、シェル設定、および SSH サーバー ログを確認します。
SSH を別のポートに変更する必要がありますか?
ポートを変更すると自動スキャンのノイズが軽減されますが、強力な認証、アクセス制御、ロギング、パッチ適用に代わるものではありません。