如何在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 服务器,并开始与网络上的其他计算机共享文件。

更新于:2023年5月12日

3K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告