FTP・FTPS・SFTPの違いや特徴について
(1) FTPについて
(1-1) FTPの概要と仕組み
(1-2) FTPのセキュリティ面について
(1-3) ファイアウォール設定
(2) FTPSについて
(2-1) FTPSの概要と仕組み
(2-2) ファイアウォール設定
(3) SFTPについて
(3-1) SFTPの概要と仕組み
(3-2) SFTPのセキュリティ面について
(1) FTPについて
(1-1) FTPの概要と仕組み
FTPは「File Transfer Protocol」の略で、データの送受信に使われている非常に重要なプロトコルです。FTPは「■コマンドチャネル」と「■データチャネル」と呼ばれる2つのプロトコルを使って通信をします。
■コマンドチャネル
「コマンドチャネル」は別名「制御チャネル」とも呼ばれ、一般的にはFTPサーバ(接続される側)のサーバの「21番ポート」で動作しており、クライアントからの接続を許可したり、FTPのクライアント←→サーバ間の簡単なコマンドの交換や応答を担当しています。
一例として、FTPのユーザ認証をする際の「USER」や「PASS」コマンドはコマンドチャネルにより受け渡しされます。コマンドチャネルは、基本的にはクライアント側から「QUIT」コマンドが送信されるか、それ以外の何らかの理由で切断されるまでは存続し続けます。
■データチャネル
「データチャネル」には2つのモードがあり、「アクティブモード」と「パッシブモード」があります。概要について別記事(⇒アクティブとパッシブの違い)でご紹介していますので、もしよければご覧ください。
(図111)データチャネル=アクティブモードの図
(図113)データチャネル=パッシブモードの図
(1-2) FTPのセキュリティ面について
FTPのコマンドチャネルやデータチャネルは「暗号化」をしていないため、傍受されて読み取られるリスクがあります。この脆弱性を利用した攻撃を「man-in-the-middle attack」と呼ばれています。
(1-3) ファイアウォール設定
■サーバ側
・21番ポートの受信を許可する
・パッシブモード用のランダムポート範囲(例:3000~3500)の受信を許可する
■クライアント側
・21番ポートへの送信を許可する
・パッシブモード用のランダムポート範囲(例:3000~3500)への送信を許可する
FW設定を「アクティブモード」と「パッシブモード」で分けて見ると次のようになります。
(図112)
(図114)
(2) 実施手順
(2-1) FTPSの概要と仕組み
FTPSはFTPの通信をSSL(⇒SSLとは?)を使って暗号化し、セキュリティを強化した技術です。
データの送受信に関しては基本的にFTPと同じです。FTPSには大きく2つの種類があります。
・Explicit(明示的)モード
・Implicit(暗黙的)モード
「暗黙的モード」では、データの受け渡しをする前に必ずSSLのセッションを確立する方式です。一般的に990ポートで作動しており、SSLは全ての接続要求で必要となっています。SSLを使用していない場合はサーバへのアクセスを拒否する仕組みになっています。
「明示的モード」ではサーバとクライアントが「どこまでセキュアにするか?」を調節する事ができます。この機能の大きなメリットとして、FTPもFTPSも両方同じポートで扱える点が挙げられます。
明示的モードではまず始めに暗号化していないセッションを確立します。そして認証情報を送付する前に、クライアントはサーバに対して「コマンドチャネル」をSSLで暗号化するようリクエストします。暗号化のリクエストは「AUTH TLS」や「AUTH SSL」コマンドを送る事で行います。
このSSLで暗号化した接続が確立されて、初めてFTPクライアントはFTPサーバに対して認証情報を送付します。
(2-2) ファイアウォール設定
・パッシブモード用のランダムポート範囲(例:3000~3500)への送信を許可する
(3) 実施手順
(3-1) SFTPの概要と仕組み
FTPSと混同しやすいですが、完全に別物になります。
SFTPは「SSH」と呼ばれる、ネットワーク上の機器の遠隔操作するための仕組みをベースにしています。SSHの良く目にする例として「TeraTerm」からサーバに対してリモートでログインする時などが挙げられます。
(3-2) SFTPのセキュリティ面について
クライアントとサーバの間でやり取りされるデータは全て暗号化されます。加えて、SFTPは「公開鍵」や「秘密鍵」によって「公開鍵認証」と呼ばれる認証方式を利用する事もできます(従来方式との併用も可)。
(3-3) ファイアウォール設定
■サーバ側
・22番ポートの受信を許可する
■クライアント側
・22番ポートからの送信を許可する