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
vsftpd
SELinuxは外部からファイルを提供し/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/messages
SELinux ポリシーで修正する必要のあるエラーのリストが収集されます。編集する拒否のリストが満足のいくものである場合は、次のように新しいポリシーを作成してください。
# 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
システムが稼働していることを確認し(getenforce
、setenforce 1
)、FTPサーバーをテストして/var/log/messages
拒否を監視します。
答え3
どこでもvsftpdアクセスを可能にする少し大胆なソリューションは次のとおりです。
setsebool -P allow_ftpd_full_access=1
その時点で、vsftpdはシステムのほぼどこにでもアクセスできます。