如何使用 VSFTPD 在 CentOS 7 上安装 FTP 服务器?
如果您正在寻找一种可靠且高效的方式在网络上的计算机之间共享文件,FTP(文件传输协议)是一个流行的选择。在本文中,我们将引导您完成使用 VSFTPD(非常安全的 FTP 守护进程)在 CentOS 7 上安装 FTP 服务器的步骤,VSFTPD 是一个用于类 Unix 系统的轻量级且安全的 FTP 服务器。
第1步:更新系统
在安装任何新软件包之前,最好先更新您的系统,以确保您拥有最新的安全补丁和软件更新。为此,请运行以下命令 -
sudo yum update
第2步:安装VSFTPD
要在 CentOS 7 上安装 VSFTPD,请运行以下命令 -
sudo yum install vsftpd
安装完成后,您可以使用以下命令启动服务并使其在启动时自动启动 -
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
步骤3:配置VSFTPD
接下来,我们需要配置 VSFTPD 以允许 FTP 连接并指定 FTP 用户帐户。
使用您喜欢的文本编辑器打开 VSFTPD 配置文件。我们将在本例中使用 nano -
sudo nano /etc/vsftpd/vsftpd.conf
对配置文件进行以下更改
取消注释以下行以允许本地用户登录 -
local_enable=YES
取消注释以下行以允许对 FTP 服务器进行写访问 -
write_enable=YES
取消注释以下行以允许用户上传文件 -
anon_upload_enable=YES
将以下行添加到文件末尾以指定 FTP 用户帐户 -
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
保存并关闭文件。
第 4 步:创建 FTP 用户帐户
现在,让我们创建一些 FTP 用户帐户。您可以使用以下命令创建一个新的用户帐户 -
sudo useradd -m ftpuser
此命令创建一个用户名为“ftpuser”的新用户帐户,并为该用户创建一个主目录。
使用以下命令为新用户设置密码 -
sudo passwd ftpuser
出现提示时输入用户的安全密码。
使用以下命令将新用户添加到 VSFTPD 用户列表 -
sudo bash -c 'echo "ftpuser" >> /etc/vsftpd/user_list'
对您要创建的每个其他 FTP 用户重复这些步骤。
第 5 步:测试 FTP 服务器
最后,让我们测试 FTP 服务器以确保一切正常工作。
打开 FTP 客户端并使用服务器的 IP 地址或主机名以及您之前创建的 FTP 用户帐户连接到服务器。
如果一切正常,您应该能够从服务器上传和下载文件。
虽然 VSFTPD 的基本安装和配置应该足以让您的 FTP 服务器启动并运行,但您可以采取一些额外的步骤来增强安全性和提高性能。
配置防火墙
默认情况下,CentOS 7 启用了防火墙,这可能会阻止传入的 FTP 连接。您可以通过使用以下命令向防火墙添加规则来允许 FTP 流量 -
sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --reload
此命令允许 FTP 流量永久通过防火墙并重新加载防火墙规则。
启用 SSL/TLS 加密
FTP是一种未加密的协议,这意味着通过网络传输的数据可以被攻击者拦截和读取。为了增强安全性,您可以为 FTP 服务器启用 SSL/TLS 加密。为此,您需要获取 SSL/TLS 证书并配置 VSFTPD 以使用它。
要获取证书,您可以使用免费的证书颁发机构,例如 Let's Encrypt。拥有证书后,您可以通过将以下行添加到 VSFTPD 配置文件来将 VSFTPD 配置为使用 SSL/TLS 加密 -
ssl_enable=YES
rsa_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/example.com/privkey.pem
确保将“example.com”替换为您自己的域名。
配置被动模式
默认情况下,FTP 使用主动模式,如果您的服务器位于 NAT(网络地址转换)防火墙后面,这可能会导致问题。为了避免这些问题,您可以将 VSFTPD 配置为使用被动模式。
为此,请将以下行添加到 VSFTPD 配置文件 -
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=<your server's public IP address>
确保将“<您服务器的公共 IP 地址>”替换为您自己的公共 IP 地址。
限制用户访问
为了提高安全性,您可能需要限制 FTP 用户可以访问的目录。您可以通过创建 chroot Jail 来实现此目的,它将用户限制在自己的主目录中,并阻止他们访问文件系统的其他部分。
要创建 chroot 监狱,请将以下行添加到 VSFTPD 配置文件 -
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
然后,创建 chroot 列表文件并添加要限制到其主目录的用户的用户名 -
sudo nano /etc/vsftpd/chroot_list
ftpuser1
ftpuser2
保存并关闭文件。
启用日志记录
要监视 FTP 服务器活动并解决问题,您可以在 VSFTPD 中启用日志记录。默认情况下,VSFTPD 记录到系统日志文件,但您也可以将其配置为记录到单独的文件。
要启用日志记录到单独的文件,请将以下行添加到 VSFTPD 配置文件 -
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
然后,创建日志文件并设置适当的权限 -
sudo touch /var/log/vsftpd.log
sudo chmod 644 /var/log/vsftpd.log
重新启动 VSFTPD 以应用更改 -
sudo systemctl restart vsftpd
现在,VSFTPD 会将所有 FTP 服务器活动记录到指定的日志文件中。
使用 SFTP 代替 FTP
SFTP(SSH 文件传输协议)是 FTP 的更安全的替代方案,它使用加密来保护传输中的数据。如果您担心 FTP 服务器的安全性,您可能需要考虑使用 SFTP。
要在 CentOS 7 上设置 SFTP 服务器,您可以使用操作系统附带的 OpenSSH。 OpenSSH 提供 SSH 访问和 SFTP 文件传输功能。
要为用户启用 SFTP,请将以下行添加到用户的 SSH 配置文件中 -
sudo nano /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User ftpuser
ChrootDirectory /home/ftpuser
ForceCommand internal-sftp
确保将“ftpuser”替换为您要为其启用 SFTP 的用户的用户名。
保存并关闭文件。
然后,重新启动 SSH 服务以应用更改 -
sudo systemctl restart sshd
现在,用户可以使用其 SSH 凭据连接到 SFTP 服务器并安全地传输文件。
使用虚拟用户
默认情况下,VSFTPD 使用系统用户来验证 FTP 连接。但是,您也可以使用虚拟用户,这些用户在单独的用户数据库中定义,不需要系统帐户。
使用虚拟用户可以更安全,因为您不需要为每个 FTP 用户创建系统帐户。它还允许您为不同的用户指定不同的权限。
要将虚拟用户与 VSFTPD 一起使用,您需要安装用户数据库并配置 VSFTPD 来使用它。一种流行的用户数据库是 PAM(可插入身份验证模块)。
要安装 PAM,请运行以下命令 -
sudo yum install pam
然后,为 VSFTPD 创建一个 PAM 配置文件 -
sudo nano /etc/pam.d/vsftpd
将以下行添加到文件中 -
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
保存并关闭文件。
创建一个新的用户数据库并添加一些虚拟用户 -
sudo touch /etc/vsftpd/ftpd.passwd
sudo htpasswd -c /etc/vsftpd/ftpd.passwd ftpuser1
sudo htpasswd /etc/vsftpd/ftpd.passwd ftpuser2
将“ftpuser1”和“ftpuser2”替换为虚拟用户的用户名。
然后,配置 VSFTPD 以使用新的用户数据库 -
sudo nano /etc/vsftpd/vsftpd.conf
将以下行添加到文件中 -
guest_enable=YES
guest_username=ftp
user_sub_token=$USER
local_root=/var/www/$USER
virtual_use_local_privs=YES
pam_service_name=vsftpd
保存并关闭文件。
重新启动 VSFTPD 以应用更改 -
sudo systemctl restart vsftpd
现在,您可以使用您创建的虚拟用户连接到 FTP 服务器。
使用 FTPS 代替 FTP
FTPS(基于 SSL/TLS 的 FTP)是 FTP 的另一种安全替代方案,它使用加密来保护传输中的数据。与使用 SSH 协议的 SFTP 不同,FTPS 使用 SSL/TLS 加密来保护 FTP 连接。
要将 FTPS 与 VSFTPD 结合使用,您需要获取 SSL/TLS 证书并配置 VSFTPD 来使用它,如本文前面所述。
然后,将以下行添加到 VSFTPD 配置文件以启用 FTPS -
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/example.com/privkey.pem
确保将“example.com”替换为您自己的域名。
重新启动 VSFTPD 以应用更改 -
sudo systemctl restart vsftpd
现在,您可以使用FTPS连接到FTP服务器来安全地传输文件。
结论
在本文中,我们向您展示了如何安装和配置 VSFTPD,这是一个适用于类 Unix 系统的轻量级且安全的 FTP 服务器。通过执行以下步骤,您可以在 CentOS 7 计算机上快速设置 FTP 服务器并开始与网络上的其他计算机共享文件。