9.4. FTP サービスのセキュリティー保護
ファイル転送プロトコル (FTP) を使用して、ネットワーク経由でファイルを転送できます。ユーザー認証を含むサーバーとの FTP トランザクションは、すべて暗号化されるわけではないため、サーバーがセキュアに設定されていることを確認してください。
RHEL 8 は、2 つの FTP サーバーを提供します。
- Red Hat Content Accelerator (
tux
) - FTP 機能を備えたカーネル空間 Web サーバー。
- Very Secure FTP Daemon (
vsftpd
) - セキュリティーを重視した、FTP サービスのスタンドアロンの実装。
vsftpd
FTP サービスをセットアップするためのセキュリティーガイドラインを以下に示します。
9.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/banners/ftp.msg
)######### Hello, all activity on ftp.example.com is logged. #########
複数のバナーの管理を簡素化するには、すべてのバナーを
/etc/banners/
ディレクトリーに配置します。バナーファイルへのパスを
/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.
9.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
を有効にします。
匿名ユーザーによるディレクトリーの読み取りと書き込みを許可すると、盗まれたソフトウェアのリポジトリーになってしまう可能性があります。
9.4.3. FTP のユーザーアカウントのセキュリティー保護
FTP は、認証のために安全でないネットワークを介して暗号化されていないユーザー名とパスワードを送信します。システムユーザーが自分のユーザーアカウントからサーバーにアクセスできないようにして、FTP のセキュリティーを向上させることができます。
以下の手順のうち、お使いの設定に該当するものをできるだけ多く実行してください。
手順
/etc/vsftpd/vsftpd.conf
ファイルに次の行を追加して、vsftpd
サーバーのすべてのユーザーアカウントを無効にします。local_enable=NO
-
/etc/pam.d/vsftpd
PAM 設定ファイルにユーザー名を追加して、特定のアカウントまたは特定のアカウントグループ (root
ユーザーやsudo
権限を持つユーザーなど) の FTP アクセスを無効にします。 -
/etc/vsftpd/ftpusers
ファイルにユーザー名を追加して、ユーザーアカウントを無効にします。
9.4.4. 関連情報
-
システムの
ftpd_selinux(8)
の man ページ