如何在CentOS 7上使用VSFTPD安装FTP服务器?
如果您正在寻找一种在网络上可靠高效地共享文件的方法,FTP(文件传输协议)是一个流行的选择。在本文中,我们将引导您完成在 CentOS 7 上使用 VSFTPD(非常安全的 FTP 守护程序)安装 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 监狱来实现此目的,这会将用户限制在其自己的主目录中,并阻止他们访问文件系统的其他部分。
要创建 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 连接。
要在 VSFTPD 中使用 FTPS,您需要获取 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 服务器,并开始与网络上的其他计算机共享文件。