21.2.2. vsftpd サーバー
vsftpd
( Very Secure FTP Daemon)は、高速で安定性があり、安全性が重要なように、最大で重要なものから設計されています。vsftpd
は、多数の接続を効率的かつ安全に処理できるため、Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux とともに配布される唯一のスタンドアロン FTP
サーバーです。
vsftpd
で使用されるセキュリティーモデルには、以下に挙げる 3 つの主要な側面があります。
- 特権プロセスと非特権プロセスの確固たる分離: 別個のプロセスが異なるタスクを処理します。各プロセスは、そのタスクに必要な最低限の権限で稼働します。
- 高い権限を必要とするタスクを、必要最小限の権限を伴うプロセスで処理:
libcap
ライブラリー内にある互換性を利用して、通常は完全な root 権限を必要とするタスクを、権限が低いプロセスでより安全に実行できます。 - ほとんどのプロセスを chroot jail で実行 する - 可能な場合は常に、プロセスはルートディレクトリーを共有ディレクトリーに変更します。このディレクトリーは、chroot jail と見なされます。たとえば、
/var/ftp/
ディレクトリーが主要な共有ディレクトリーである場合、vsftpd
は/var/ftp/
を新しい root ディレクトリー(/
)に再割り当てします。これにより、新たな root ディレクトリー下に格納されていないディレクトリーに対する、ハッカーの潜在的な悪質行為を行うことができなくなります。
これらのセキュリティープラクティスを使用すると、
vsftpd
によるリクエスト対応方法に以下のような影響があります。
- 親プロセスは、必要最小限の権限で稼働: 親プロセスは、リスクレベルを最低限に抑えるために必要とされる権限のレベルを動的に算出します。子プロセスは、
FTP
クライアントとの直接的な対話を処理し、できるだけ権限なしに近い状態で稼働します。 - 高い 権限を必要とする操作はすべて、小さな親プロセスによって処理され ます。Apache
HTTP
Server と同様に、vsftpd
は権限のない子プロセスを起動し、着信接続を処理します。これにより、権限のある親プロセスを最小限に抑えられ、比較的少ないタスクを処理することになります。 - 親プロセスは、権限のない子プロセスからのリクエストはどれも信頼しない: 子プロセスとの通信はソケット上で受信し、子プロセスからの情報の有効性は動作を実施する前に確認されます。
FTP
クライアントとのインタラクションの大半は、chroot jail 内の権限のない子プロセスによって処理: これらの子プロセスには権限がなく、共有ディレクトリーへのアクセスしかないため、プロセスがクラッシュした際 に攻撃者がアクセスできるのは共有ファイルのみです。
21.2.2.1. vsftpd の起動と停止
vsftpd RPM は、
/etc/rc.d/init.d/vsftpd
スクリプトをインストールします。これは、service コマンドを使用してアクセスできます。
サーバーを起動するには、
root
で以下を入力します。
~]# service vsftpd start
サーバーを以下のように停止するには、以下を実行します。
~]# service vsftpd stop
restart
オプションは、vsftpd
を停止して起動する簡単な方法です。これは、vsftpd
の設定ファイルを編集した後に設定変更を行う最も効率的な方法です。
root
で以下のコマンドを入力し、サーバーを再起動するには、以下を実行します。
~]# service vsftpd restart
condrestart
(条件付き再起動)オプションは停止し、現在実行している場合にのみ vsftpd を起動します。このオプションは、デーモンが実行されていない場合はデーモンを起動しないため、スクリプトに便利です。try-restart
オプションは同義語です。
root タイプでサーバーを条件的に再起動するには、以下を実行します。
~]# service vsftpd condrestart
デフォルトでは、vsftpd サービスはブート時に自動的に起動 されません。vsftpd サービスが起動時に開始するように設定するには、/sbin/chkconfig、/usr/sbin/ntsysv、または Services Configuration Tool プログラムなどの initscript ユーティリティーを使用します。これらのツールの詳細は、12章サービスおよびデーモン を参照してください。