阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Centos8中使用VSFTPD配置FTPs

76次阅读
没有评论

共计 4579 个字符,预计需要花费 12 分钟才能阅读完成。

导读 在本文中,将演示如何安装 vsftpd 服务,配置为 ftps,并为 ftp 用户配置 chroot,将 ftp 会话限制在各自的 /var/www/html/[username]目录中。
系统环境

Centos8

创建用户

需要创建用于访问 FTP 服务器的用户。执行以下命令来创建用户并设置各自的密码,创建用户时使用 -s 选项,让这两个用户禁止 shell 登录:

[root@localhost ~]# useradd -s /sbin/nologin user01
[root@localhost ~]# useradd -s /sbin/nologin user02
[root@localhost ~]# echo '123'|passwd --stdin user01
Changing password for user user01.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo '123'|passwd --stdin user02
Changing password for user user02.
passwd: all authentication tokens updated successfully.

Centos8 中使用 VSFTPD 配置 FTPs

编辑 /etc/shells 配置文件

上面的用户的 shell 设置为 /sbin/nologin 之后,需要在 /etc/shells 文件中添加/sbin/nologin,否则后面 ftp 用户登录时提示Login failed: 530 Login incorrect.

[root@localhost ~]# echo "/sbin/nologin" >> /etc/shells 
[root@localhost ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin
安装 VSFTPD

使用下面命令安装 vsftpd:

[root@localhost ~]# yum -y install vsftpd

Centos8 中使用 VSFTPD 配置 FTPs

创建自签名证书

为 FTP 服务器创建一个自签名证书。使用 openssl 命令,执行以下命令来生成自签名证书和私钥:

[root@localhost ~]# 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]:CN
State or Province Name (full name) []:Shandong
Locality Name (eg, city) [Default City]:QD
Organization Name (eg, company) [Default Company Ltd]:Linuxprobe
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ftp.linuxprobe.com
Email Address []:

Centos8 中使用 VSFTPD 配置 FTPs

配置 VSFTPD 服务支持 chroot 和 SSL

将上面创建的用户 user01 和 user02 添加到 /etc/vsftpd/user_list 文件中,只允许该文件中的用户 ftp 登录。

[root@localhost vsftpd]# vim /etc/vsftpd/user_list 

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
user01
user02

Centos8 中使用 VSFTPD 配置 FTPs
下面编辑/etc/vsftpd/vsftpd.conf,编辑前需要备份一下配置文件:

[root@localhost vsftpd]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf vsftpd.conf.back

编辑 vsftpd.conf 文件,配置文件内容如下:

[root@localhost vsftpd]# vim vsftpd.conf
[root@localhost vsftpd]# cat vsftpd.conf | grep -Ev '(^$|^#)'
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
ssl_enable=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1_2=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_min_port=30000
pasv_max_port=31000
debug_ssl=YES
chroot_local_user=YES
local_root=/var/www/html/$USER
allow_writeable_chroot=YES

Centos8 中使用 VSFTPD 配置 FTPs

开启服务

下面启用服务,并启动服务:

[root@localhost ~]# systemctl enable vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service ¡ú /usr/lib/systemd/system/vsftpd.service.
[root@localhost ~]# systemctl start vsftpd

Centos8 中使用 VSFTPD 配置 FTPs

设置防火墙
[root@localhost ~]# firewall-cmd --permanent --add-service=ftp
success
[root@localhost ~]# firewall-cmd --reload
success

Centos8 中使用 VSFTPD 配置 FTPs

设置 SELinux

下面需要设置一下 selinux 的 boolean 值,默认情况下 /var/www/html 目录的安全上下文为httpd_sys_content_t,用户使用 ftp 上传下载可能会出现权限问题,所以下面设置一下和 ftp 相关的 selinux 设置:

[root@localhost ~]# setsebool -P ftpd_full_access 1
[root@localhost ~]# getsebool ftpd_full_access
ftpd_full_access --> on
创建 ftp 用户的目录

/var/www/html 目录中创建用户的目录,并设置权限。

[root@localhost ~]# mkdir /var/www/html/user0{1..2}
[root@localhost ~]# chown -R user01:apache /var/www/html/user01/
[root@localhost ~]# chown -R user02:apache /var/www/html/user02/

Centos8 中使用 VSFTPD 配置 FTPs
在每个目录中创建一个空文件。你在登录后可以区分用户家目录:

[root@localhost ~]# touch /var/www/html/user01/user01_files
[root@localhost ~]# touch /var/www/html/user02/user02_files

Centos8 中使用 VSFTPD 配置 FTPs

访问 ftp 服务器

下载 lftp 命令行客户端进行连接测试:

[root@localhost ~]# yum -y install lftp

Centos8 中使用 VSFTPD 配置 FTPs
下面使用 user01 登录:

[root@localhost ~]# lftp user01@localhost
Password: 
lftp user01@localhost:~> ls                   
ls: Fatal error: Certificate verification: Not trusted (01:3E:A2:1B:39:E9:BE:DB:55:1F:C3:71:34:6F:B6:8E:E2:D0:2C:8C)

上面提示错误,因为是自签名证书。可以通过执行以下命令不检查证书:

[root@localhost ~]# echo "set ssl:verify-certificate no" >> /etc/lftp.conf

下面再执行一下 lftp 命令使用 user01 登录:

[root@localhost ~]# lftp user01@localhost
Password: 
lftp user01@localhost:~> ls                   
-rw-r--r--    1 0        0               0 Apr 07 09:42 user01_files

Centos8 中使用 VSFTPD 配置 FTPs
再使用 user02 登录看一下:

[root@localhost ~]# lftp user02@localhost
Password: 
lftp user02@localhost:~> ls                   
-rw-r--r--    1 0        0               0 Apr 07 09:42 user02_files

Centos8 中使用 VSFTPD 配置 FTPs

总结

本文介绍了如何设置更安全的 ftp –“FTPs”、将 ftp 用户的主目录限制在 /var/www/html 目录中、如何使用轻量化 ftp 命令行工具 –“lftp”。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计4579字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中