【新手工程师备忘录】如何使用 proftpd 将 FTP 切换到 SFTP

介绍

在开始讲解更改步骤之前,我们先快速了解一下……
proftpd (专业FTP守护进程)”是
一种FTP服务器软件,用于FTP连接(使用FTP协议进行文件传输)。
然而,由于FTP协议采用明文传输而非加密,因此存在
安全风险这次,我们将使用proftpd将FTP(明文)转换为SFTP(加密)!

前提

环境

云平台:AWS
FTP服务器软件:proftpd
proftpd版本:1.3.8b
端口:21(FTP)

*请注意,某些版本的proftpd可能不支持SFTP。

参考资料)
① ProFTPD 官方文档
http://www.proftpd.org/docs/
② ProFTPD 模块:mod_sftp
http://www.proftpd.org/docs/contrib/mod_sftp.html

状况

① FTP 服务器软件将使用现有的 proftpd。②
我们希望切换到 SFTP 通信,并使用现有的用户名和密码。③
SFTP 端口为 8022。

→ 减少所需工作量并轻松切换

备忘录

  1. 在安全组中配置 SFTP 端口
  2. 编辑 proftpd.conf
  3. 更改主机密钥权限
  4. 设置反映

并行操作流程(FTP + SFTP)

1. 在安全组中设置 SFTP 端口
→ 允许目标 IP 使用 SFTP 端口 (8022)

2. 编辑 proftpd.conf 文件
2.1. 备份目标文件

cp -ip /etc/proftpd.conf /etc/proftpd.conf_$(date +"%Y%m%d")

请比较一下区别:

diff /etc/proftpd.conf /etc/proftpd.conf_$(date +"%Y%m%d")

2.2 添加 SFTP 设置
→ 在最后一行添加以下内容。
附加内容:

LoadModule mod_sftp.c # 加载 SFTP 模块<IfModule mod_sftp.c><VirtualHost 0.0.0.0>SFTPEngine on # 启用 SFTP 引擎 SFTPLog /var/log/sftp.log # 指定日志文件 DefaultRoot ~ # 指定默认根目录 # 虚拟用户设置 AuthUserFile /etc/ftppasswd # 指定包含用于身份验证的用户信息的文件路径 AuthGroupFile /etc/ftpgroup # 指定包含用于身份验证的组信息的文件路径 AuthOrder mod_auth_file.c # 指定身份验证顺序 Port 8022 # 指定 SFTP 端口 # 使用 sshd 的主机密钥 SFTPHostKey /etc/ssh/ssh_host_rsa_key # 指定 SFTP 主机密钥</VirtualHost></IfModule>

3. 更改主机密钥权限

chmod 600 /etc/ssh/ssh_host_rsa_key

→ 检查 /etc/ssh/ssh_host_rsa_key 的权限是否为 600

4. 设置反射4.1
语法检查

proftpd -t

4.2 检查端口

netstat -lntp

预期结果:

tcp6 0 0 :::21 :::* 监听 PID/proftpd

4.3 检查过程

ps auuxf | grep proftpd

预期结果:

nobody 1140 0.0 0.1 52348 39724 ? SLs 2024 8:28 proftpd: (接受连接)


检查状态

systemctl status proftpd

4.5. 重启 proftpd

systemctl restart proftpd


4.6 检查端口

netstat -lntp

预期结果:

tcp6 0 0 :::8022 :::* 监听 PID/proftpd

5. 检查连接
→ 使用 winscp 等工具检查 FTP 和 SFTP 连接是否可行,以及编辑、删除、上传等操作是否可行。

・FTP

传输协议 文件传输协议
主机名 目标主机IP
端口号 21
用户名 目标 FTP 用户名
密码 目标FTP用户的密码

SFTP

传输协议 SFTP
主机名 目标主机IP
端口号 8022
用户名 目标 FTP 用户名
密码 目标FTP用户的密码

▶ 支持FTP和SFTP连接!

 

问题

如果出于安全原因想要禁用 FTP 通信,
可以通过使用 LIMIT 限制 FTP 通信,并移除安全组中相应端口的 IP 权限来实现。
但是,我无法关闭该端口的 LISTEN 状态……
(好吧,既然 FTP 连接已经不可能了,我就假装没看见它。)

 
# FTP<Limit LOGIN> DenyAll # 拒绝 FTP 连接</Limit>LoadModule mod_sftp.c # 加载 SFTP 模块 # SFTP<IfModule mod_sftp.c><VirtualHost 0.0.0.0><Limit LOGIN> AllowAll # 允许 SFTP 连接</Limit>SFTPEngine on # 启用 SFTP 引擎 SFTPLog /var/log/sftp.log # 指定日志文件 DefaultRoot ~ # 指定默认根目录 # 虚拟用户设置 AuthUserFile /etc/ftppasswd # 指定包含用于身份验证的用户信息的文件路径 AuthGroupFile /etc/ftpgroup # 指定包含用于身份验证的组信息的文件路径 AuthOrder mod_auth_file.c # 指定身份验证顺序 Port 8022 # 指定 SFTP 端口 # 使用 sshd 的主机密钥 SFTPHostKey /etc/ssh/ssh_host_rsa_key # 指定 SFTP 主机密钥</VirtualHost></IfModule> 

即使您已停止 FTP 通信,也请使用 winscp 等工具检查连接是否按预期受到限制!

最后

从 FTP 切换到 SFTP 通信出乎意料地简单。
由于两种方法可以同时使用,因此在切换到加密之前,您可以先检查 SFTP 通信连接是否存在任何问题,这一点也非常好。
如果您担心 FTP 通信的安全性,不妨一试。
感谢您阅读到最后!

如果您觉得这篇文章有帮助,请点赞!
1
加载中...
1 票,平均:1.00 / 11
17
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

小鸡

我是一名新毕业的工程师,2024年加入公司。
人文/无经验/系统解决方案部