Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

16.2.2. vsftpd サーバー

Very Secure FTP Daemon (vsftpd) は、高速で安定性があり、また重要な点として安全性を確保するため、土台から設計されています。vsftpd は、多数の接続を効率的かつ安全に処理できるため、Red Hat Enterprise Linux とともに配布されるのはスタンドアロン FTP サーバーのみです。

vsftpd で使用されるセキュリティーモデルには、以下に挙げる 3 つの主要な側面があります。

  • 特権プロセスと非特権プロセスの確固たる分離: 別個のプロセスが異なるタスクを処理します。各プロセスは、そのタスクに必要な最低限の権限で稼働します。
  • 高い権限を必要とするタスクを、必要最小限の権限を伴うプロセスで処理: libcap ライブラリー内にある互換性を利用して、通常は完全な root 権限を必要とするタスクを、権限が低いプロセスでより安全に実行できます。
  • ほとんどのプロセスを chroot jail で実行: 可能な場合は常に、プロセスは、ルートディレクトリーを共有ディレクトリーに変更します。すると、このディレクトリーは、chroot jail と見なされます。たとえば、/var/ftp/ ディレクトリーが主要な共有ディレクトリーの場合、vsftpd/var/ftp/ を新しいルートディレクトリー (/) に再割り当てします。これにより、新たな root ディレクトリー下に格納されていないディレクトリーに対する、ハッカーの潜在的な悪質行為を行うことができなくなります。

これらのセキュリティープラクティスを使用すると、vsftpd によるリクエスト対応方法に以下のような影響があります。

  • 親プロセスは、必要最小限の権限で稼働: 親プロセスは、リスクレベルを最低限に抑えるために必要とされる権限のレベルを動的に算出します。子プロセスは、FTP クライアントとの直接的なインタラクションを処理し、可能な限り権限なしに近い形で稼働します。
  • 高い権限を必要とするオペレーションはすべて、小さな親プロセスによって処理: Apache HTTP Server の場合とほぼ同様に、vsftpd は権限のない子プロセスを起動し、着信接続を処理します。これにより、権限のある親プロセスを最小限に抑えられ、比較的少ないタスクを処理することになります。
  • 親プロセスは、権限のない子プロセスからのリクエストはどれも信頼しない: 子プロセスとの通信はソケット上で受信し、子プロセスからの情報の有効性は動作を実施する前に確認されます。
  • FTP クライアントとのインタラクションの大半は、chroot jail 内の権限のない子プロセスによって処理: これらの子プロセスには権限がなく、共有ディレクトリーへのアクセスしかないため、プロセスがクラッシュした際に攻撃者がアクセスできるのは共有ファイルのみです。

16.2.2.1. vsftpd の起動と停止

現行のセッションで vsftpd サービスを起動するには、シェルプロンプトで root として以下を入力します。

~]# systemctl start vsftpd.service

現在のセッションでサービスを停止するには、root で以下を入力します。

~]# systemctl stop vsftpd.service

vsftpd サービスを再起動するには、root で以下のコマンドを実行します。

~]# systemctl restart vsftpd.service

このコマンドは停止し、即座に vsftpd サービスを起動します。これは、この FTP サーバーの設定ファイルを編集した後に設定変更を行う最も効率的な方法です。では、以下のコマンドを使用して、すでに実行している場合にのみ、vsftpd サービスを再起動することができます。

~]# systemctl try-restart vsftpd.service

デフォルトでは、vsftpd サービスがブート時に自動的に起動することは ありません。ブート時に vsftpd サービスが起動するようにするには、root でシェルプロンプトに以下を入力します。

~]# systemctl enable vsftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

Red Hat Enterprise Linux 7 でシステムサービスを管理する方法は、10章systemd によるサービス管理 を参照してください。