在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

SELinux 不会允许vsftpd从外部以外的地方提供文件/var/ftp或写入日志/var/log 故意。 SELinux 的目的就是减轻灾难。 FTP 从根本上来说是不安全的。在 SELinux 下运行vsftpd是一个好主意,因为它可以最大限度地减少攻击者决定攻击您的 FTP 服务时可能造成的损害。

运行一个根本不安全的服务(比如vsftpd不使用 SELinux 锁定它)是愚蠢的。

如果你绝对必须像这样重新配置它,你需要重写与 FTP 相关的 SELinux 策略,但这不是一个简单的工作。audit2allow工具可以提供帮助

如果您认为禁用 SELinux 风险太大并且构建新的 SELinux 策略太困难,我建议使用SFTP或者scp反而。 RHEL 出厂时已sshd配置并正在运行,因此您无需执行任何特殊操作即可使其正常工作。

答案2

您通常可以在 /var/log/messages 中找到 selinux 拒绝。试试这个(作为root):

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.temy_vsftp.pp.文件*.te可读,已*.pp编译。检查 *.te 文件以确保其合适。

这里要小心,因为开放太多 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 几乎可以到达系统上的任何地方......

相关内容