14.VSFTP服务相关配置
一、主机用户登录1.在 RockyLinux101 主机执行 ip addr 查看网卡信息确认 ens192 网卡 IP 为 192.168.0.101/242.在 RockyLinux102 主机执行 ip addr 查看网卡信息确认 ens192 网卡 IP 为 192.168.0.102/243.在 RockyLinux101 主机执行 dnf install -y vsftpd 安装 vsftpd 服务端软件包4.在 RockyLinux101 主机执行 systemctl start vsftpd.service 启动服务执行 systemctl status vsftpd.service 查看运行状态使用 ss -anpt|grep vsftpd 确认服务在 21 端口监听5.在 RockyLinux101 主机执行 vim /etc/vsftpd/vsftpd.conf打开 vsftpd 主配置文件6.在 vsftpd.conf 文件中设置 local_enableYES、write_enableYES、local_umask022开启本地用户登录、写入权限并设置文件权限掩码7.在 vsftpd.conf 文件中添加 chroot_local_userYES、allow_writeable_chrootYES开启用户目录锁定并允许可写目录保存退出配置文件8.在 RockyLinux101 主机执行 systemctl restart vsftpd.service重启 vsftpd 服务使配置生效9.在 RockyLinux102 主机执行 dnf install -y ftp lftp安装 FTP 客户端工具10.在 RockyLinux102 主机执行 ftp 192.168.0.101尝试以 root 用户登录返回 530 Permission denied验证 root 用户默认禁止 FTP 登录11.在 RockyLinux101 主机执行 cd /etc/vsftpd/ 进入配置目录执行 vim ./ftpusers编辑 FTP 用户黑名单文件12.在 ftpusers 文件中看到有root用户13.删除 root 用户条目保存退出文件解除 root 用户的 FTP 登录黑名单限制14.在 RockyLinux101 主机执行 vim ./user_list编辑 FTP 用户列表文件15.在 user_list 文件中看到有root用户16.删除 root 用户条目保存退出文件解除 root 用户的 FTP 登录列表限制17.在 RockyLinux101 主机执行 systemctl restart vsftpd.service重启 vsftpd 服务使用户列表修改生效18.在 RockyLinux102 主机执行 ftp 192.168.0.101以 root 用户登录输入密码后提示 230 Login successful验证 root 用户 FTP 登录成功19.在 RockyLinux101 主机执行 touch rocky101.txt在 root 家目录创建测试文件在 RockyLinux102 主机的 FTP 会话中执行 ls查看远程目录列表确认 rocky101.txt 文件存在验证文件列表读取正常20.在 RockyLinux101 主机执行 ls查看 root 家目录确认 rocky101.txt 文件存在为后续上传测试做准备21.在 RockyLinux102 主机执行 ls确认 rocky102.txt 文件已在本地创建为后续上传测试做准备22.在 RockyLinux102 主机执行 ftp 192.168.0.101登录后执行 ls 查看远程文件列表执行 get rocky101.txt 下载文件执行 put rocky102.txt 上传文件验证文件下载与上传功能正常23.在 RockyLinux102 主机执行 ls确认 rocky101.txt 已成功下载到本地验证文件下载操作完成24.在 RockyLinux101 主机执行 ls确认 rocky102.txt 已成功上传到服务器验证文件上传操作完成25.在 RockyLinux102 主机的 FTP 会话中执行 mkdir rky2_mkdir_rk1 创建目录执行 delete rocky101.txt 删除文件执行 rename rocky102.txt rky_rename_rocky101.txt 重命名文件验证目录创建、文件删除与重命名功能正常26.在 RockyLinux101 主机执行 ls确认远程目录 rky2_mkdir_rk1 和重命名后的文件 rky_rename_rocky101.txt 已存在验证操作结果27.在 RockyLinux102 主机执行 lftp root192.168.0.101使用 lftp 工具登录 FTP 服务器执行 ls 查看文件列表执行 mv rky_rename_rocky101.txt rky2_mv_rename_rky1.txt 重命名文件验证 lftp 客户端操作正常28.在 RockyLinux101 主机执行 ls确认文件已被重命名为 rky2_mv_rename_rky1.txt验证 lftp 客户端的文件操作生效29.在 Windows 主机的文件资源管理器地址栏输入 ftp://192.168.0.101尝试访问 FTP 服务器30.在弹出的登录身份窗口中输入用户名 root 和密码点击登录验证 Windows 客户端访问 FTP 服务器的能力31.在 Windows 文件资源管理器中成功登录 FTP 服务器后查看服务器目录列表确认文件和目录与服务器端一致32.在 Windows 文件资源管理器中对 rky2_mv_rename_rky1.txt 文件进行重命名操作将其改为 host_rename_rky1.txt33.在 RockyLinux101 主机执行 ls确认文件已被重命名为 host_rename_rky1.txt验证 Windows 文件资源管理器的文件操作生效34.在 Windows 主机打开 FileZilla 客户端输入主机 192.168.0.101、用户名 root 和密码准备快速连接 FTP 服务器35.在 FileZilla 客户端弹出的 “记住密码” 窗口中选择 “保存密码” 并点击确定配置客户端记住登录信息36.在 FileZilla 客户端弹出的 “不安全的 FTP 连接” 警告窗口中点击确定确认以明文方式连接 FTP 服务器37.在 FileZilla 客户端中成功连接 FTP 服务器查看远程站点目录列表确认文件和目录与服务器端一致38.在 FileZilla 客户端的远程站点空白区域右键选择 “创建新文件”准备在服务器上创建新文件39.在弹出的 “创建空文件” 窗口中输入文件名 FileZilla_create.txt点击确定40.在 FileZilla 客户端中确认新文件 FileZilla_create.txt 已成功创建在服务器端验证 FileZilla 客户端的文件创建功能正常41.在 RockyLinux101 主机执行 ls确认 FileZilla_create.txt 文件已成功创建验证 FileZilla 客户端的文件创建操作生效二、匿名用户登录1.在 RockyLinux101 主机执行 cd /var/ftp/ 进入 FTP 根目录执行 cd ./pub/ 进入匿名用户共享目录执行 echo This is a shared dir look.txt 创建测试文件2.在 RockyLinux101 主机执行 vim /etc/vsftpd/vsftpd.conf编辑 vsftpd 主配置文件以启用匿名用户登录3.在 vsftpd.conf 文件中设置 anonymous_enableYES、anon_upload_enableYES、anon_mkdir_write_enableYES、anon_other_write_enableYES开启匿名用户的上传、创建目录和其他写入权限保存退出配置文件4.在 RockyLinux101 主机执行 systemctl restart vsftpd.service重启 vsftpd 服务使匿名用户配置生效5.在 RockyLinux102 主机执行 ftp 192.168.0.101以匿名用户 ftp 登录执行 cd pub 进入共享目录执行 get look.txt 下载文件验证匿名用户下载功能正常尝试执行 rename look.txt readme.txt因权限不足操作失败6.在 RockyLinux102 主机执行 ls确认 look.txt 文件已成功下载到本地验证匿名用户的文件下载操作完成7.在 RockyLinux101 主机执行 setfacl -R -m u:ftp:rwx /var/ftp/pub/为匿名用户 ftp 授予 /var/ftp/pub/ 目录的读写执行权限8.在 RockyLinux102 主机再次以匿名用户登录 FTP 服务器执行 rename look.txt readme.txt 重命名文件执行 mkdir rky102.d 创建目录验证匿名用户的写入操作功能正常9.在 RockyLinux101 主机执行 ls确认文件已被重命名为 readme.txt 且目录 rky102.d 已创建验证匿名用户的写入操作生效三、主动和被动模式pasv_min_port50000pasv_max_port501001.在 RockyLinux101 主机执行 dd if/dev/zero of/root/data.txt bs1G count2创建一个 2GB 的测试文件用于 FTP 大文件传输测试2.在 RockyLinux102 主机执行 ftp 192.168.0.101以 root 用户登录 FTP 服务器执行 get data.txt 下载文件使用被动模式Passive Mode进行传输验证大文件下载功能正常3.在 RockyLinux101 主机执行 ss -anpt|grep vsftpd查看 FTP 服务连接状态确认被动模式下的数据连接端口如 56046已建立4.在 RockyLinux102 主机的 FTP 会话中执行 passive off 关闭被动模式切换为主动模式PORT 模式再次执行 get data.txt 下载文件验证主动模式下的文件传输功能正常5.在 RockyLinux101 主机执行 ss -anpt|grep vsftpd查看 FTP 服务连接状态确认主动模式下的数据连接端口如 20已建立四、FTPS1.在 RockyLinux101 主机执行 tcpdump -i ens192 -nn tcp port ftp or tcp port ftp-data ./plaintext捕获 FTP 明文传输的数据包以验证明文传输的安全性问题2.在 RockyLinux102 主机再次登录 FTP 服务器执行 get host_rename_rky1.txt 下载文件触发明文传输的数据包捕获3.在 RockyLinux101 主机执行 vim ./plaintext查看捕获的数据包4.发现 FTP 的用户名和密码如 USER root、PASS 1002以明文形式传输暴露了明文 FTP 的安全风险5.在 RockyLinux101 主机执行 cd /etc/ssl/certs/进入 SSL 证书目录确认系统自带的 CA 证书文件如 ca-bundle.crt存在后续将使用这些证书配置 FTPS 加密传输6.在 RockyLinux101 主机执行 dnf install -y openssl openssl-devel安装 OpenSSL 工具包为生成 FTPS 证书做准备7.在 RockyLinux101 主机执行 cd /etc/vsftpd/ 进入 vsftpd 配置目录执行 openssl genrsa -out vsftpd.key 2048 生成 2048 位的 RSA 私钥文件 vsftpd.key8.执行 openssl req -new -key vsftpd.key -out vsftpd.csr使用私钥生成证书请求文件CSR并填写证书信息如国家、地区、组织、通用名等9.执行 openssl x509 -req -days 3650 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt使用私钥自签名生成有效期为 10 年的证书文件 vsftpd.crt10.执行 vim ./vsftpd.conf编辑 vsftpd 主配置文件启用 SSL/TLS 支持11.在 vsftpd.conf 文件中添加以下配置启用 FTPS 并指定证书和私钥路径12.执行 systemctl restart vsftpd.service重启 vsftpd 服务使 FTPS 配置生效13.执行 tcpdump -i ens192 -nn tcp port ftp or tcp port ftp-data ./Ciphertext捕获 FTPS 加密传输的数据包以验证加密效果14.在 RockyLinux102 主机执行 lftp root192.168.0.101 连接 FTPS 服务器因证书未被信任出现验证错误需执行 lftp root192.168.0.101 -e set ssl:verify-certificate no 禁用证书验证成功登录并执行 ls、get plaintext 等操作验证 FTPS 传输正常15.在 RockyLinux101 主机执行 vim ./Ciphertext查看捕获的数据包发现传输内容已被加密无法直接读取用户名、密码和文件内容验证了 FTPS 的安全性16.在 Ciphertext 中FTP 交互过程已被加密能看到 AUTH TLS 命令但后续的用户名、密码和文件内容均为密文无法直接读取17.执行 rm -f Ciphertext 清空之前的抓包文件准备进行新一轮 FTPS 传输抓包18.打开 FileZilla主机输入 192.168.0.101用户名 / 密码填写 root 和对应密码19.点击「快速连接」FileZilla 开始初始化 TLS 连接并向服务器发送证书请求20.服务器返回自签名证书FileZilla 弹出「未知证书」窗口显示证书的有效期、指纹、签发者信息确认证书与之前生成的 vsftpd.crt 一致点击「确定」信任证书21.成功登录后右键选择 plaintext 文件点击「下载」22.FileZilla 显示传输进度最终提示「传输完成」23.tcpdump 捕获到 132 个数据包说明整个 FTPS 会话包括 TLS 握手、数据传输均被完整记录执行 vim ./Ciphertext24.文件中仅能看到 AUTH TLS、Proceed with negotiation 等控制命令后续的用户名、密码和文件内容均为乱码 / 密文无法直接解析抓包文件中清晰可见 FTP: AUTH TLS 命令说明客户端已向服务器请求建立加密会话后续所有数据均通过 TLS 加密传输