实验部署
注:先关闭服务器和客户机上的防火墙和SELinux
配置文件位置 /etc/vsftpd/vsftpd.conf
重启服务 systemctl restart vsftpd.service
一、匿名用户验证实验
1、实现可以上传
(1) anon_upload_enable=YES
(2) 在 /var/ftp/ 下创建上传目录
(3) 修改上传目录的权限或所有者,让匿名用户有写入权限
2、实现创建目录和文件其他操作
anon_mkdir_write_enable=YES #允许创建目录
anon_other_write_enable=YES #删除文件、文件改名、文件覆盖
3、用户进入某个文件夹时,弹出相应的说明
(1) 在对应目录下创建 .message 文件,并写入相应内容
(2) 确认 dirmessage_enable=YES 是否启用
(3) 尝试切换目录查看效果
4、实现上传的文件可下载
设置 anon_umask=022
二、本地用户验证实验
1、服务端需要创建用户并设置密码(不需要登录操作系统,仅用来登录VSFTP)
useradd -s /sbin/nologin username
2、将所有用户禁锢在自己的家目录下
chroot_local_user=YES
3、将部分用户禁锢在自己的家目录下
chroot_list_enable=YES #开启白名单功能,允许白名单中的用户随意切换目录
chroot_list_file=/etc/vsftpd/chroot_list #白名单文件,需要自己创建
4、配置文件: /etc/vsftpd/ftpusers
所有写入此文件内的用户名都不允许登陆 ftp ,立刻生效
5、修改被动模式数据传输使用端口
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=35000
三、虚拟用户验证实验
1、建立FTP的虚拟用户的用户数据库文件(/etc/vsftpd)
vi vsftpd.user #奇数行用户,偶数行密码
db_load -T -t hash -f vsftpd.user vsftpd.db
#将用户密码的存放文本转化为数据库类型,并使用 hash 加密
chmod 600 vsftpd.db
#修改文件权限为600,更安全
2、创建FTP虚拟用户的映射用户,并制定其用户家目录
useradd -d /var/ftproot -s /sbin/nologin virtual
#创建 virtual 用户作为 ftp 的虚拟用户的映射用户
3、建立支持虚拟用户的PAM认证文件
cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
#使用模板生成自己的认证配置文件,方便调用
4、
四、 OpenSSL + vsftpd 加密验证方式
使用 tcpdump 工具进行指定端口抓包,抓取 ftp 登录过程中的数据包
tcpdump -i ens33 -nn -X -vv tcp port 21 and ip host 来源IP
1、查看是否安装
2、查看 vsftpd 是否支持 OpenSSL
ldd /usr/sbin/vsftpd | grep libssl
3、生成加密信息的秘钥和证书文件
位置:/etc/ssl/certs
a、openssl genrsa -out vsftpd.key 2048
#建立服务器私钥,生成RSA密钥 vsftpd.key
b、openssl req -new -key vsftpd.key -out vsftpd.csr
#通过密钥文件生成证书文件 vsftpd.csr ,填写多种信息
c、openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt
#根据 vsftpd.key 和 vsftpd.csr 产生签字后的证书 vsftpd.crt
4、修改主配置文件 /etc/vsftpd/vsftpd.conf
ssl_enable=YES #启用ssl认证 ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES #开启tlsv1、sslv2、sslv3都支持 allow_anon_ssl=YES #允许匿名用户(虚拟用户) force_anon_logins_ssl=YES force_anon_data_ssl=YES #匿名登录和传输时强制使用ssl force_local_logins_ssl=YES force_local_data_ssl=YES #本地登录和传输时强制使用ssl rsa_cert_file=/etc/ssl/certs/vsftpd.crt #rsa格式的证书 rsa_private_key_file=/etc/ssl/certs/vsftpd.key #rsa格式的密钥
5、重启服务
6、测试
未解决问题:无法连接上ftp服务器