18.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 ディレクトリとして再割り当てします。これにより、新たな root ディレクトリ下に格納されていないディレクトリに対する、潜在的な悪質ハッカー行為を行うことができないようにします。
これらのセキュリティプラクティスを使用すると、vsftpd による要求対応方法に以下のような影響を及ぼします:
  • 親プロセスは、必要最小限の権限で稼働します — 親プロセスは、リスクレベルを最低限に抑えるために必要とされる権限のレベルを動的に算出します。子プロセスは、FTP クライアントとの直接的なインタラクションを処理し、可能な限り無しに近い権限で稼働します。
  • 高い権限を必要とするオペレーションはすべて、小さな親プロセスによって処理します — Apache HTTP Server とほぼ同様に、vsftpd は権限のない子プロセスを起動させ、着信接続を処理します。これにより、権限のある親プロセスを最小限に抑えられ、比較的少ないタスクを処理することになります。
  • 親プロセスは、権限のない子プロセスからのすべての要求を信頼しません — 子プロセスとの通信はソケット上で受信され、子プロセスからの情報の妥当性は動作を実施する前にチェックされます。
  • FTP クライアントとのインタラクションの大半は、chroot jail 内の権限のない子プロセスによって処理されます — これらの子プロセスには権限がなく、共有ディレクトリへのアクセスしかないため、プロセスがクラッシュした際に攻撃者がアクセスできるのは共有ファイルのみです。