如何在 CentOS 8 上搭建安全的 FTP 服务器

举报
Yuchuan 发表于 2021/07/31 22:45:16 2021/07/31
【摘要】 FTP(文件传输协议)是用于在客户端和服务器之间传输计算机文件的标准网络协议。FTP使用纯文本来传输数据和凭据。但是,系统管理员可以通过在使用FTPS协议而不是FTP 的CentOS 8 上配置安全 FTP 服务器来克服这个限制。在 CentOS 8 上安装 vsftpd在安全 FTP 服务器中配置用户列表在 CentOS 8 上为安全 FTP 服务器启用 Chroot Jail为安全 FT...

如何在 CentOS 8 上安装安全的 FTP 服务器

FTP(文件传输协议)是用于在客户端和服务器之间传输计算机文件的标准网络协议。FTP使用纯文本来传输数据和凭据。但是,系统管理员可以通过在使用FTPS协议而不是FTP 的CentOS 8 上配置安全 FTP 服务器来克服这个限制。

在 CentOS 8 上安装 vsftpd:

vsftpd(Very Secure FTP Daemon)是长期以来用于在 Linux 上配置 FTP 服务的软件包。

vsftpd在默认 yum 存储库中可用,因此可以使用dnf命令安装它。

方式一、命令安装

[root@ftp-server ~]# dnf install -y vsftpd
Last metadata expiration check: 0:07:10 ago on Wed 29 Jan 2020 07:27:26 PM PKT.
Dependencies resolved.
================================================================================
 Package         Arch            Version               Repository          Size
================================================================================
Installing:
 vsftpd          x86_64          3.0.3-28.el8          AppStream          180 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 180 k
Installed size: 359 k
Downloading Packages:
vsftpd-3.0.3-28.el8.x86_64.rpm                  115 kB/s | 180 kB     00:01
--------------------------------------------------------------------------------
Total                                            39 kB/s | 180 kB     00:04
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : vsftpd-3.0.3-28.el8.x86_64                             1/1
  Running scriptlet: vsftpd-3.0.3-28.el8.x86_64                             1/1
  Verifying        : vsftpd-3.0.3-28.el8.x86_64                             1/1

Installed:
  vsftpd-3.0.3-28.el8.x86_64

Complete!

方式二、使用rpm包安装

-rw-rw-r-- 1 tester tester 184220 Jul 31 21:37 vsftpd-3.0.3-33.el8.x86_64.rpm
[tester@TesterPC InstallPackge]$ sudo rpm -ivh vsftpd-3.0.3-33.el8.x86_64.rpm 
[sudo] password for tester: 
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:vsftpd-3.0.3-33.el8              ################################# [100%]
[tester@TesterPC InstallPackge]$

查看vsftpd服务的状态

[tester@TesterPC InstallPackge]$ sudo systemctl status vsftpd.service 
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[tester@TesterPC InstallPackge]$

修改配置文件,备份现有的vsftpd.conf文件。

[root@ftp-server ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org

现在编辑vsftpd配置文件。

[root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf

在其中查找并设置以下指令。

anonymous_enable=NO   # disable anonymous users
local_enable=YES   # allow local users
write_enable=YES   # allow ftp write commands
local_umask=022    # set default umask
dirmessage_enable=YES   # enable messages on change directory
xferlog_enable=YES   # enable logging of uploads and downloads
connect_from_port_20=YES  # ensure PORT transfer connections from port 20 (ftp-data)
xferlog_std_format=YES   # keep standard log format
listen=NO    # prevent vsftpd run in stand alone mode
listen_ipv6=YES    # allow vsftpd to listen on IPv6 socket
pam_service_name=vsftpd   # set PAM Service name to vsftpd

在安全 FTP 服务器中配置用户列表:

允许/拒绝使用 FTP 服务的用户列在user_list文件中。

默认的user_list文件位于/etc/vsftpd/user_list,我们可以在此文件中添加或删除 FTP 用户。

默认情况下,user_list中的所有用户都被拒绝访问 FTP 服务。

我们必须通过在 vsftpd.conf 文件中设置以下指令来明确允许user_list 中的用户。

userlist_enable=YES   # enable vsftpd to load usernames
userlist_deny=NO   # allow access to users in userlist

在 CentOS 8 上为安全 FTP 服务器启用 Chroot Jail:

要在chroot 环境中限制 FTP 用户,请在vsftpd.conf文件中添加以下两个指令。

chroot_local_user=YES   # Create chrooted environment for users
allow_writeable_chroot=YES  # Allow write permission to user on chroot jail directory

为安全 FTP 服务生成 TLS 证书:

FTP服务不使用加密。因此,它以纯文本形式传输数据和登录凭据。这使得 FTP 服务极易受到嗅探中间人攻击。

但是,我们可以配置安全 FTP (FTPS)来加密 FTP 服务器和客户端之间的通信。

现在,使用以下命令生成TLS(传输层安全)证书。

[tester@TesterPC ~]$ sudo openssl req -x509 -nodes -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.pem -days 365 -newkey rsa:2048
Generating a RSA private key
......................................................+++++
....+++++
writing new private key to '/etc/vsftpd/vsftpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:Yuchuan
Locality Name (eg, city) [Default City]:SZ
Organization Name (eg, company) [Default Company Ltd]:HL 
Organizational Unit Name (eg, section) []:HL
Common Name (eg, your name or your server's hostname) []:ftp-server.tester.com
Email Address []:yuchuan.duan@outlook.com
[tester@TesterPC ~]$

编辑vsftpd.conf文件以配置 FTP 服务以使用TLS证书。

[root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf

在此文件中添加以下指令。

ssl_enable=YES       # Enable vsftpd Secure connections
ssl_sslv2=NO      # Disallow SSL v2 protocol connections
ssl_sslv3=NO      # Disallow SSL v3 protocol connections
ssl_tlsv1_2=YES      # Allow TLS v1.2 protocol connections
rsa_cert_file=/etc/vsftpd/vsftpd.pem   # Location of TLS certificate
rsa_private_key_file=/etc/vsftpd/vsftpd.key  # Location of Private Key
allow_anon_ssl=NO     # Disallow Anonymous Access
force_local_data_ssl=YES    # Force users to use SSL connection for data transfer
force_local_logins_ssl=YES    # Force users to use SSL connection for credentials
require_ssl_reuse=NO     # Disable SSL session reuse
ssl_ciphers=HIGH       
pasv_min_port=30000     # Min port number to define a range for PASV connections
pasv_max_port=31000     # Max port number to define a range for PASV connections
debug_ssl=YES      # Dump OpenSSL diagnostics in vsftpd log file

在 Linux 防火墙中允许安全 FTP (FTPS)被动 FTP端口。

[tester@TesterPC ~]$ sudo firewall-cmd --permanent --add-port=30000-31000/tcp
[sudo] password for tester: 
success
[tester@TesterPC ~]$ 
[tester@TesterPC ~]$ sudo firewall-cmd --permanent --add-port=990/tcp
success
[tester@TesterPC ~]$ 
[tester@TesterPC ~]$ sudo firewall-cmd --reload
success
[tester@TesterPC ~]$ 

启动并启用vsftpd服务。

[root@ftp-server ~]# systemctl enable --now vsftpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service â /usr/lib/systemd/system/vsftpd.service.

创建 CentOS 8 用户以访问安全 FTP 服务:

创建使用Secure FTP服务的用户。

[root@ftp-server ~]# useradd ahmer
[root@ftp-server ~]# passwd ahmer
Changing password for user ahmer.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

将此用户添加到允许的user_list

[root@ftp-server ~]# echo ahmer >> /etc/vsftpd/user_list

我们的安全 FTP 服务器已成功配置。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。