配置 SELinux

设置以下 SELinux 布尔值以禁用 FTP 用户的 SELinux MAC(强制 Linux 控制)。

这是必要的,因为 /var/www/html 目录的 SELinux 文件上下文是 httpd_sys_content_t 。
因此,FTP 用户可能会面临权限问题。

# setsebool -P ftpd_full_access 1
on it road .com

配置 Linux 防火墙:

在 Linux 防火墙中允许 FTP 服务端口。

# firewall-cmd --permanent --add-service=ftp
success
# firewall-cmd --reload
success

创建 Chroot FTP 目录:

为用户创建 chroot FTP 目录。

# mkdir /var/www/html/user{1..2}

设置 chroot jail 目录的所有权。

# chown -R user1:apache /var/www/html/user1
# chown -R user2:apache /var/www/html/user2

在每个目录中创建一个空的测试文件。

# touch /var/www/html/user1/user1_files
# touch /var/www/html/user2/user2_files

现在可以使用user1 和 user2 用户通过 ftp登录到服务器进行测试。检查是否可以访问测试文件,同时是否被限制在/var/www/html/user1,2中。

Chroot FTP 用户到 /var/www/html 目录

Linux 如何限制ftp用户只能访问他们的主目录或者一个指定的目录?(配置 chroot jail 到他们的主目录)

下面的教程,我们将使用VSFTPD进行配置说明。

如果还没有安装VSFTPD 软件,则先安装:

# dnf install -y vsftpd

重启 FTP 服务:

重启 FTP 服务。

# systemctl enable --now vsftpd.service

检查 FTP 服务的状态。

# systemctl status vsftpd

为 FTP 服务创建自签名 SSL 证书:

为我们的 FTP 服务器创建一个自签名 SSL 证书。
这是必须的,否则我们将无法以 FTP 用户身份登录。

执行以下 openssl 命令来生成自签名 SSL 证书和私钥。

# openssl req -x509 -nodes -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.pem -days 365 -newkey rsa:2048

配置 VSFTPD 服务:

在 vsftpd user_list 文件中添加用户。

# vi /etc/vsftpd/user_list

这里使用 user1 和 user2两个用户

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
user1
user2

备份 vsftpd.conf 文件,然后在 vim 文本编辑器中编辑它。

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org
# vi /etc/vsftpd/vsftpd.conf

在此文件中找到并设置以下指令。
这些设置与 chroot FTP 和 SSL 配置有关。

userlist_enable=YES
userlist_deny=NO
ssl_enable=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1_2=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_min_port=30000
pasv_max_port=31000
debug_ssl=YES
chroot_local_user=YES
local_root=/var/www/html/$USER
user_sub_token=$USER
allow_writeable_chroot=YES
日期:2020-09-17 00:12:27 来源:oir作者:oir