如何在 CentOS 8 上搭建安全的 FTP 服务器
FTP(文件传输协议)是用于在客户端和服务器之间传输计算机文件的标准网络协议。FTP使用纯文本来传输数据和凭据。但是,系统管理员可以通过在使用FTPS协议而不是FTP 的CentOS 8 上配置安全 FTP 服务器来克服这个限制。
- 在 CentOS 8 上安装 vsftpd
- 在安全 FTP 服务器中配置用户列表
- 在 CentOS 8 上为安全 FTP 服务器启用 Chroot Jail
- 为安全 FTP 服务生成 TLS 证书
- 创建 CentOS 8 用户以访问安全 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 服务器已成功配置。
- 点赞
- 收藏
- 关注作者
评论(0)