SFTP
SFTP ポート ガイド: SSH 経由の安全なファイル転送
SFTP が SSH を使用する方法、ポート 22 をいつ公開するか、リモート アクセスをテストする方法、およびアカウント、ディレクトリ、監査ログを保護する方法を理解します。
- 既定ポート
- 22
- プロトコル
- TCP
- 主な用途
- 安全なファイル転送
- トランスポート
- SSH
> SFTPポートとは何ですか?
SFTP は SSH ファイル転送プロトコルです。通常、SSH と同じ TCP ポート、ポート 22 上で実行され、SSH トランスポートを使用してユーザーを認証し、ファイル転送を暗号化し、ディレクトリ操作を保護します。従来の FTP とは異なり、SFTP には個別のコマンド チャネルとデータ チャネルが必要ありません。
SFTP は通常、ポート 22 で SSH を使用します。
SSH サーバーが 22 でリッスンしており、アカウントに対して SFTP が有効になっている場合、SFTP クライアントは通常、別のポートを開かなくても接続できます。
安全な転送には引き続きアクセス制御が必要
暗号化により転送中のファイルは保護されますが、それでも強力な認証、制限されたディレクトリ、最小限の権限、およびログ記録が必要です。
SFTP の仕組み
SFTP は、暗号化が追加された FTP ではありません。これは、SSH セッション内で実行される別のプロトコルです。クライアントは SSH サーバーに接続し、パスワード、キー、証明書、またはその他の SSH でサポートされる方法で認証した後、SFTP サブシステムを起動して、ディレクトリの一覧表示、ファイルのアップロード、ファイルのダウンロード、パスの名前変更、アクセス許可の管理を行います。
SFTP は SSH 上で動作するため、SSH 暗号化、ホスト キー検証、および成熟した認証制御の恩恵を受けます。したがって、ほとんどの展開では、SFTP ポートは TCP 22 になります。一部の組織では、バックグラウンド スキャンのノイズを減らすために SSH と SFTP を別のポートに移動しますが、ポートを変更しても認証と認可の制御は置き換えられません。
SFTP 対 FTP、FTPS、および SCP
クラシック FTP は通常、コマンドにはポート 21 を使用し、転送には別のデータ ポートを使用します。そのため、ファイアウォールと NAT はより複雑になり、プレーン FTP は暗号化せずに認証情報とデータを送信します。 FTPS は FTP に TLS を追加しますが、コマンド チャネルとデータ チャネルを備えた FTP モデルは引き続き維持されます。
SFTP は 1 つの SSH 接続を使用します。これは通常、ファイアウォールの通過を許可しやすく、監査も容易です。 SCP も SSH を使用しますが、SFTP はより豊富なファイル管理操作を提供し、インタラクティブな転送、パートナーのドロップ、および自動化されたファイル ワークフローにとってより適切なデフォルトです。
SFTP アクセスを開く必要がある場合
パートナー、自動化ジョブ、バックアップ プロセス、展開パイプライン、または内部チームがサーバーとファイルを安全に交換する必要がある場合に、SFTP アクセスを開きます。一般的な例には、ベンダー データ フィード、夜間のエクスポート、ログ収集、安全なドキュメント配信、顧客またはフィールド デバイスの制御されたアップロード領域などがあります。
SFTP が暗号化されているからといって、広く公開しないでください。インターネットに接続された SSH サービスは、資格情報攻撃や自動スキャンを引き起こします。小規模なグループのみがアクセスする必要がある場合は、送信元 IP を制限するか、VPN またはプライベート ネットワークの背後で SFTP を公開するか、より強力なポリシー制御を備えたマネージド転送ゲートウェイを使用します。
SFTP ポートを開く前に
SFTP 用にポート 22 を開く前に、SSH サーバーがインストールおよび実行されており、SFTP サブシステムを許可するように構成されていることを確認してください。次に、どのユーザーまたはサービス アカウントに接続するか、どのディレクトリを表示できるか、パスワード認証を許可するかどうか、アップロードとダウンロードをどのように記録するかを決定します。
ネットワーク到達可能性をアカウント認証から分離します。ポート チェッカーは、インターネットから TCP 22 に到達できるかどうかを表示できますが、特定のユーザーがログインできるかどうか、または chroot ディレクトリが正しいかどうかを証明することはできません。 SFTP クライアントまたは ssh コマンドライン テストを使用して、アプリケーション レベルの動作を確認します。
Windows、Linux、macOS で SFTP を有効にする方法
Windows Server で、OpenSSH サーバーをインストールして有効にし、Windows Defender ファイアウォールで受信 TCP 22 を許可し、sshd サービスが実行されていることを確認します。サーバーがクラウド環境にある場合は、クラウド ファイアウォールまたはセキュリティ グループでポート 22 も許可します。広範な管理者アクセスではなく、専用のアカウントを使用してください。
Linux では、OpenSSH サーバーをインストールし、sshd がポート 22 でリッスンしていることを確認し、sshd_config で SFTP サブシステムが有効になっていることを確認します。制限されたファイル転送アカウントの場合は、ユーザーが対話型シェルを取得できないように、chroot ディレクトリ、所有権ルール、および ForceCommand Internal-sftp を設定します。
macOS では、組み込みの SSH サービスを通じて SFTP を利用できます。ローカル ネットワーク、開発マシン、またはラボ環境で最もよく使用されます。信頼されたネットワークを超えて公開する場合は、サーバーで使用するのと同じキーベースの認証とファイアウォール ルールを適用します。
- サービス層: OpenSSH サーバーまたは別の SSH 実装が実行されており、SFTP サブシステムを有効にする必要があります。
- ネットワーク層: ホスト ファイアウォール、クラウド セキュリティ グループ、ルーター転送、および VPN ポリシーは、選択された TCP ポートを許可する必要があります。
- アカウント層: ユーザーには最小限の権限、専用ディレクトリが必要であり、必要な場合を除いてシェル アクセスは許可されません。
- 監査層: 成功した転送、失敗したログイン、キーの変更、権限エラー、および異常なソース ネットワークをログに記録します。
SFTP接続をテストする方法
パブリック ホスト名または IP アドレスとポート 22 に対する外部ポート チェックから開始します。ポートが開いている場合は、SSH サービスへの TCP パスに到達できます。次に、SFTP クライアントを使用するか、sftp user@example.com を実行して、認証、ホスト キーの信頼性、ディレクトリ アクセス、アップロード権限を確認します。
下位レベルの詳細が必要な場合は、ssh -vvv user@example.com を使用して SSH ハンドシェイクをテストするか、ss -tlnp、netstat、または PowerShell を使用してサーバー上のリスナーを確認します。クラウド サーバーの場合は、両方の層で接続を許可する必要があるため、ホスト ファイアウォール ルールとクラウド セキュリティ グループを比較します。
一般的な SFTP トラブルシューティングのケース
SFTP ポートが閉じていると表示される場合は、sshd が実行中でないか、別のポートでリッスンしているか、ホストのファイアウォールによってブロックされている可能性があります。チェックがタイムアウトした場合、クラウド セキュリティ グループ、ルーター NAT ルール、ISP フィルター、VPN ポリシー、または送信元 IP 許可リストによって、パケットがサーバーに到達する前にドロップされている可能性があります。
ポートは開いているが SFTP ログインが失敗する場合は、ユーザー名、キーのアクセス許可、パスワード ポリシー、MFA 要件、許可されたユーザー、chroot 所有権、ForceCommand ルール、およびサーバー ログを検査します。よくある間違いは、chroot ディレクトリにユーザーに書き込み権限を与えることです。 OpenSSH では、chroot が安全に動作するために、特定の所有権と許可のパターンが必要です。
SFTP のセキュリティ チェックリスト
パスワードよりも SSH キーまたは証明書ベースの認証を優先します。 root ログインを無効にし、接続できるユーザーを制限し、キーをローテーションし、未使用のアカウントを削除し、パスフレーズまたはハードウェアバックアップストレージを使用して秘密キーを保護します。パートナー アクセスの場合は、パートナーごとに 1 つのアカウントを作成して、アクティビティを明確に関連付けて取り消すことができるようにします。
chroot または厳密にスコープされたディレクトリを使用してファイル システム アクセスを制限し、必要でない限り書き込み可能な共有フォルダーを避け、ログインの失敗と異常な転送量を監視します。 SFTP がインターネットに接続されている場合は、レート制限、ソース許可リスト、侵入検出、SSH サーバーの定期的なパッチ適用を組み合わせます。
よくある質問
SFTP はどのポートを使用しますか?
SFTP は SSH 経由で実行されるため、通常は TCP ポート 22 を使用します。 SSH サーバーが別のポートでリッスンするように構成されており、クライアントがそのポートを指定している場合は、別のポートで実行できます。
SFTP は FTPS と同じですか?
いいえ。SFTP は、SSH 内で実行されるファイル転送プロトコルです。 FTPS は TLS で保護された FTP です。これらは異なるプロトコルであり、クライアントとサーバーの両方が同じプロトコルをサポートしない限り、互換性はありません。
ポート 22 をインターネットに開かずに SFTP を使用できますか?
はい。 SFTP は、VPN、プライベート ネットワーク、要塞ホスト、ゼロトラスト アクセス レイヤー、またはソース IP ホワイトリスト経由でのみ公開できます。多くの場合、SSH をインターネット全体に公開するよりも安全です。
ポート 22 が開いているのに SFTP が失敗するのはなぜですか?
認証中または SFTP サブシステムが失敗しているときに、TCP ポートに到達できる可能性があります。アカウント権限、キー形式、chroot 所有権、ForceCommand 設定、許可されたユーザー、MFA ポリシー、および SSH サーバー ログを確認します。