21.2. FTP
FTP
( File Transfer Protocol )は、現在インターネット上で見られる、最も古く、一般的に使用されているプロトコルです。この目的は、ユーザーがリモートホストに直接ログインしなくても、もしくはリモートシステムの使用法についての知識がなくとも、ネットワーク上のコンピューターホスト間で確実にファイルを転送することです。これにより、ユーザーは、標準の簡単なコマンドセットを使用してリモートシステム上のファイルにアクセスすることができます。
本セクションでは、
FTP
プロトコルの基本と、Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux に同梱されているプライマリー FTP
サーバーである vsftpd
について概説します。
21.2.1. ファイル転送プロトコル (FTP)
FTP は、クライアント/サーバーアーキテクチャーを使用し、
TCP
ネットワークプロトコルを使用してファイルを転送します。FTP
は古いプロトコルであることから、暗号化されていないユーザー名とパスワード認証を使用します。このため、安全でないプロトコルとみなされており、絶対的に必要でない限り、使用するべきではありません。ただし、FTP
はインターネット上で非常に有益であるため、共有ファイルの公開で必要となる場合がよくあります。このため、システム管理者は、FTP
の固有の特性を認識する必要があります。
本セクションでは、vsftpd を設定して
TLS
によるセキュアな接続を確立する方法と、SELinux を用いて FTP
サーバーのセキュリティーを保護する方法を説明します。FTP
の代用となるのは、OpenSSH スイートからの sftp です。OpenSSH の設定方法および SSH
プロトコル全般に関する情報は、14章OpenSSH を参照してください。
インターネット上で使用されているほとんどのプロトコルとは異なり、
FTP
が正しく機能するためには複数のネットワークポートを必要とします。FTP
クライアントアプリケーションが FTP
サーバーへの接続を開始すると、コマンド ポート と呼ばれるポート 21
をサーバー上で開きます。このポートは、すべてのコマンドをサーバーに発行するために使用されます。サーバーから要求されたデータは、データポート を介してクライアントに返されます。データ接続のポート番号、およびデータ接続を初期化する方法は、クライアントが active モードまたは passive モードでデータを要求するかどうかによって異なります。
これらのモードの定義は以下のとおりです。
- アクティブモード
- アクティブモードは、
FTP
プロトコルでクライアントへのデータ転送に使用される独自の方法です。FTP
クライアントがアクティブモードのデータ転送を開始すると、サーバーは、サーバーのポート20
から、クライアントで指定されたIP
アドレスとランダムな非特権ポート(1024
以上)への接続を開きます。この配置は、クライアントマシンが1024
を超えるポートを介して接続を受け入れることができる必要があることを意味します。インターネットのようなセキュリティー保護されていないネットワークが増加するにともない、ファイアウォールを使用したクライアントマシンの保護が普及しています。このようなクライアント側のファイアウォールは、アクティブモードのFTP
サーバーから着信する接続を拒否する場合が多いため、パッシブモードが実現されました。 - パッシブモード
- パッシブモードはアクティブモードと同様に、
FTP
クライアントアプリケーションによって開始されます。サーバーからデータを要求する際に、FTP
クライアントはパッシブモードでデータにアクセスしたいことを示し、サーバーはサーバー上のIP
アドレスとランダムな非特権ポート(1024
以上)を提供します。クライアントは、サーバー上のそのポートに接続して要求した情報をダウンロードします。パッシブモードは、クライアント側のファイアウォールによるデータ接続障害の問題を解決しますが、サーバー側のファイアウォール管理を複雑化させてしまう場合があります。FTP
サーバー上の特権のないポートの範囲を制限することにより、サーバー上で開いているポートの数を減らすことができます。またこの方法により、サーバーを対象としたファイアウォールのルール設定の手順が簡略化されます。パッシブポートの制限の詳細は、「ネットワークオプション」 を参照してください。