8.4. FTP サービスのセキュリティー保護

ファイル転送プロトコル (FTP) を使用して、ネットワーク経由でファイルを転送できます。ユーザー認証を含むサーバーとの FTP トランザクションがす s べて暗号化されているわけではないため、サーバーが安全に設定されていることを確認する必要があります。

RHEL 9 は、2 つの FTP サーバーを提供します。

  • Red Hat Content Accelerator (tux): FTP 機能を持つカーネルスペースの Web サーバー。
  • Very Secure FTP Daemon (vsftpd): スタンドアロンの、セキュリティー指向の FTP サービスの実装。

vsftpd FTP サービスをセットアップするためのセキュリティーガイドラインを以下に示します。

8.4.1. FTP グリーティングバナーのセキュリティー保護

ユーザーが FTP サービスに接続すると、FTP はグリーティングバナーを表示します。このバナーにはデフォルトで、バージョン情報が含まれており、攻撃者がシステムの弱点を特定するのに役立つ場合があります。デフォルトのバナーを変更することで、攻撃者がこの情報にアクセスできないようにします。

/etc/banners/ftp.msg ファイルを編集して、単一行のメッセージを直接含めるか、複数行のメッセージを含めることができる別のファイルを参照して、カスタムバナーを定義できます。

手順

  • 1 行のメッセージを定義するには、次のオプションを /etc/vsftpd/vsftpd.conf ファイルに追加します。

    ftpd_banner=Hello, all activity on ftp.example.com is logged.
  • 別のファイルでメッセージを定義するには以下を実行します。

    • バナーメッセージを含む .msg ファイルを作成します。(例: /etc/vendors/ftp .msg)

      ######### Hello, all activity on ftp.example.com is logged. #########

      複数のバナーの管理を簡素化するには、すべてのバナーを /etc/vendors/ ディレクトリーに配置します。

    • バナーファイルへのパスを /etc/vsftpd/vsftpd.conf ファイルの banner_file オプションに追加します。

      banner_file=/etc/banners/ftp.msg

検証

  • 変更されたバナーを表示します。

    $ ftp localhost
    Trying ::1…
    Connected to localhost (::1).
    Hello, all activity on ftp.example.com is logged.

8.4.2. FTP での匿名アクセスとアップロードの防止

デフォルトでは、vsftpd パッケージをインストールすると、/var/ftp/ ディレクトリーと、ディレクトリーに対する読み取り専用権限を持つ匿名ユーザー用のディレクトリーツリーが作成されます。匿名ユーザーはデータにアクセスできるため、これらのディレクトリーに機密データを保存しないでください。

システムのセキュリティーを強化するために、匿名ユーザーが特定のディレクトリーにファイルをアップロードできるが、データは読み取れないように、FTP サーバーを設定できます。次の手順では、匿名ユーザーが root ユーザー所有のディレクトリーにファイルをアップロードできるが変更できないようにする必要があります。

手順

  • /var/ftp/pub/ ディレクトリーに書き込み専用ディレクトリーを作成します。

    # mkdir /var/ftp/pub/upload
    # chmod 730 /var/ftp/pub/upload
    # ls -ld /var/ftp/pub/upload
    drwx-wx---. 2 root ftp 4096 Nov 14 22:57 /var/ftp/pub/upload
  • /etc/vsftpd/vsftpd.conf ファイルに以下の行を追加します。

    anon_upload_enable=YES
    anonymous_enable=YES
  • オプション: システムで SELinux が有効で Enforcing に設定されている場合には、SELinux ブール属性 allow_ftpd_anon_write および allow_ftpd_full_access を有効にします。
警告

匿名ユーザーによるディレクトリーの読み取りと書き込みを許可すると、盗まれたソフトウェアのリポジトリーになってしまう可能性があります。

8.4.3. FTP のユーザーアカウントのセキュリティー保護

FTP は、認証のために安全でないネットワークを介して暗号化されていないユーザー名とパスワードを送信します。システムユーザーが自分のユーザーアカウントからサーバーにアクセスできないようにして、FTP のセキュリティーを向上させることができます。

以下の手順のうち、お使いの設定に該当するものをできるだけ多く実行してください。

手順

  • /etc/vsftpd/vsftpd.conf ファイルに次の行を追加して、vsftpd サーバーのすべてのユーザーアカウントを無効にします。

    local_enable=NO
  • /etc/pam.d/vsftpd PAM 設定ファイルにユーザー名を追加して、特定のアカウントまたは特定のアカウントグループ (root ユーザーや sudo 権限を持つユーザーなど) の FTP アクセスを無効にします。
  • /etc/vsftpd/ftpusers ファイルにユーザー名を追加して、ユーザーアカウントを無効にします。

8.4.4. 関連情報

  • ftpd_selinux(8) の man ページ