FTPS SFTP 概要
FTPSとSFTPどちらにしようか迷ったので、ザックリまとめてみた。
■FTPS [File Transfer Protocol over SSL/TLS]
FTPの通信をSSL/TLS暗号化(SSL/TLSセッションで通信を行う)
FTPの脆弱性をカバーするために、転送される情報を「SSL/TLS」を利用して暗号化するプロトコル
FTP同様、コマント゛チャネルとデータチャネル2つの接続を使用する
両方の接続を暗号化するか、データチャネルのみを暗号化するかの選択が可能
ユーザID認証:証明書&パスワード
ユーザID・パスワード・証明書、またはその両方を使用して接続を認証
FTPSサーバに接続するとき、FTPSクライアントは、まずサーバの証明書が信頼できるかどうかを確認
[証明書が信頼されるケース]
・既知の認証局(CA)によって署名されている場合
・自己証明され、信頼できるキーストアに公開証明書のコピーがある場合
[使用ポート]
FTPデータ転送ポート:989
FTP制御ポート:990
□SSL/TLS
公開鍵暗号と共通鍵暗号という暗号化技術の組み合わせで、暗号化された安全な通信を確保する仕組み
SSLがバージョンアップを重ねTLS
SSLサーバ証明書は認証局(CA)から発行されている
■SFTP [SSH file Transfer Protocol]
SSHの通信を使って、ファイル転送(FTP)を行う。SSHで動作するアプリケーション
最初にSSHで接続し、ログイン後はFTP風のコマンドでファイルの受け渡しを行う
SSH接続するため、別途FTPサーバを建てる必要はない
OpenSSHなら、sshd_configに設定を追加するだけで、SFTPサーバとすることができる
ユーザID認証:キー認証&パスワード
1つの接続のみを使用し、認証情報と転送するデータファイルを暗号化
[接続認証方法]
・FTP同様、ユーザIDとパスワードを使用。ただし、資格情報は暗号化されている
・SSHキー
最初にSSH秘密鍵と公開鍵を生成
SSH公開鍵を送信し、サーバにロードしてアカウントに関連付ける
SFTPサーバに接続すると、クライアントソフトウェアは公開キーをサーバに送信して認証を行う
公開鍵が秘密鍵と一致し、指定されたユーザまたはパスワードが一致する場合、認証が成功
[使用ポート]
SSHと同じ:22
□SSH
リモートにあるサーバを端末から操作する際、通信される一切の情報を暗号化するプロトコル
「OpenSSH」ソフトなどで使用ができ、Linuxはデフォルトでインストールされている
Windowsでは「Cygwin」「WinSCP」、Gitに同梱されている「GitBash」で使用可能
※補足
ファイアウォールの使いやすさからはSFTP
複数チャネルを利用するFTPSはファイアウォール内のポート範囲を開く必要がありネットワークのセキュリティリスクとなる