RedhatでFTPサーバーを構成する

RedhatでFTPサーバーを構成する

Redhatにvsftpdをインストールしました。以下を使用してFTPサーバーにログインしたときにこれを見つけるまで、すべてがファイルでした。

FTPローカルホスト

or fileZilla次のエラーが発生します。

ERROR:
- 500 OOPS: cannot change directory:/foo

また、ログディレクトリを変更するとき

- /var/log/xferlog

到着

- /usr/local/data

それから私は次を得ます:

  500 OOPS: failed to open xferlog log file:/usr/local/data/vsftpd.log

したがって、協会解決策は次のとおりです。

This happens because SELinux isn’t properly configured for your ftp service. Either disable SELinux or configure it for ftp.

To disable SELinux, edit /etc/selinux/config and set “SELINUX=disabled”, then reboot.

SElinuxを無効にせずにftpを有効にする方法は?

答え1

vsftpdSELinuxは外部からファイルを提供し/var/ftpたりログを作成したりすることはできません。/var/log 故意に。 SELinuxの目的は、災害を軽減することです。 FTPは基本的に安全ではありません。 SELinuxで実行するのは、vsftpd攻撃者がFTPサービスを攻撃することを決定した場合に発生する可能性があるダメージを最小限に抑えるため、良い考えです。

まったく安全でないサービス(つまり、SELinuxを使用してロックせずに)を実行するのはvsftpd愚かです。

このように再構成する必要がある場合は、FTP関連のSELinuxポリシーを再構築する必要がありますが、それは簡単な作業ではありません。このaudit2allowツールは役に立ちます

SELinux を無効にするのが危険すぎて、新しい SELinux ポリシーを構築するのが難しすぎると思われる場合は、次のことをお勧めします。SFTPまたはscp代わりに。 RHELはsshd工場で構成および実行されるため、操作に特別な作業を行う必要はありません。

答え2

通常、/var/log/messages で selinux 拒否を見つけることができます。これを試してみてください(ルートとして):

grep avc /var/log/messages | grep ftp

必要な設定に従って出力を確認し、拒否がエラーであることを確認します。変更するステートメントに関する情報に焦点を当てるには、必要に応じて grep ステートメントを調整します。一時的にシステムを緩和モード()に設定してから必要な作業を実行するsetenforce 0ことが便利な場合がよくあります。/var/log/messagesSELinux ポリシーで修正する必要のあるエラーのリストが収集されます。編集する拒否のリストが満足のいくものである場合は、次のように新しいポリシーを作成してください。

# ensure you have audit2allow
which audit2allow

# if no audit2allow, install it:
yum install policycoreutils-python

# replace the following with your tuned grep (if necessary)
grep avc /var/log/message | grep ftp | audit2allow -M my_vsftp

現在のディレクトリには、読み取り可能でmy_vsftp.teコンパイルされた2つの新しいmy_vsftp.ppファイルがあります。 *.teファイルを確認して適切であることを確認してください。 *.te*.pp

SELinuxルールを開けすぎると脆弱になる可能性があるため、ここに注意してください。 SELinuxを読むことをお勧めします。

cat my_vsftp.te

ポリシーが適切である場合は、インストールして有効にしてください。

mkdir /usr/share/selinux/packages/my_vsftp
mv my_vsftp.* /usr/share/selinux/packages/my_vsftp/
semodule -i /usr/share/selinux/packages/my_vsftp/my_vsftp.pp

システムが稼働していることを確認し(getenforcesetenforce 1)、FTPサーバーをテストして/var/log/messages拒否を監視します。

答え3

どこでもvsftpdアクセスを可能にする少し大胆なソリューションは次のとおりです。

setsebool -P allow_ftpd_full_access=1

その時点で、vsftpdはシステムのほぼどこにでもアクセスできます。

関連情報