配置 Lightsail bitnami vsftpd 被动

配置 Lightsail bitnami vsftpd 被动

我花了很长时间才解决这个问题,昨晚我让它正常工作了。今天早上上班时它就停止工作了(我是唯一的 IT 支持人员,我没有做任何更改)。

我已经在 aws 上配置了防火墙,如下图所示。

防火墙 AWS 配置映像

该服务器是由 aws 托管的 bitnami/ubuntu 服务器。

我已经配置了 vsftpd.conf,如下所示

# 示例配置文件 /etc/vsftpd.conf
#
# 默认编译设置相当偏执。此示例文件
# 稍微放松一些,以使 ftp 守护进程更加可用。
# 请参阅 vsftpd.conf.5 了解所有默认编译内容。
#
# 阅读此内容:此示例文件并非 vsftpd 选项的详尽列表。
# 请阅读 vsftpd.conf.5 手册页以全面了解 vsftpd 的
# 功能。
#
#
# 独立运行? vsftpd 可以从 inetd 运行,也可以作为独立程序运行
# 守护进程从启动脚本启动。
听=否
#被动设置
#listen=yes
#
# 此指令启用对 IPv6 套接字的监听。默认情况下,监听
# IPv6 上的“任何”地址 (::) 将接受来自 IPv6 的连接
# 和 IPv4 客户端。没有必要同时监听 IPv4 和 IPv6
# 套接字。如果您想要这样做(可能是因为您想监听特定的
# 地址)那么您必须运行两个 vsftpd 副本并采用两种配置
# 个文件。
listen_ipv6=是
#
# 允许匿名 FTP?(默认禁用)。
匿名启用=否
#
# 取消注释以允许本地用户登录。
本地启用=是
#
# 取消注释此内容以启用任何形式的 FTP 写入命令。
写入启用=是
#
# 本地用户的默认 umask 是 077。您可能希望将其更改为 022,
# 如果您的用户期望(大多数其他 ftpd 使用 022)
#本地_umask=022
#
# 取消注释以允许匿名 FTP 用户上传文件。这仅
# 在上述全局写入启用激活时才会生效。此外,您还将
# 显然需要创建一个 FTP 用户可写的目录。
#匿名上传启用=是
#
# 如果您希望匿名 FTP 用户能够创建
# 个新目录。
#anon_mkdir_write_enable=是
#
# 激活目录消息 - 当远程用户
# 进入某个目录。
dirmessage_enable=是
#
# 如果启用,vsftpd 将显示带有时间的目录列表
# 以您所在地区的时区显示。默认显示 GMT。
#MDTM FTP 命令返回的时间也受此影响
# 选项。
使用本地时间=是
#
# 激活上传/下载日志记录。
xferlog_enable=YES
#
# 确保 PORT 传输连接源自端口 20 (ftp-data)。
连接端口 20=是
#
# 如果你愿意,你可以安排上传的匿名文件归
# 不同的用户。注意!使用“root”上传文件不是
# 受到推崇的!
#chown_uploads=是
#chown_用户名=whoever
#
# 您可以根据需要更改日志文件的存放位置。默认显示
# 以下。
xferlog_file=/var/log/vsftpd.log
#
# 如果您愿意,您可以将日志文件保存为标准 ftpd xferlog 格式。
# 请注意,在这种情况下,默认日志文件位置是 /var/log/xferlog。
#xferlog_std_format=是
#
# 您可以更改空闲会话超时的默认值。
#空闲会话超时=600
#
# 您可以更改数据连接超时的默认值。
#数据连接超时=120
#
# 建议您在系统上定义一个唯一的用户,
# ftp 服务器可以作为完全隔离且非特权的用户使用。
#nopriv_user=ftpsecure
#
# 启用此功能,服务器将识别异步 ABOR 请求。不
# 出于安全考虑,建议使用(代码并不简单)。不启用它,
# 然而,可能会使旧的 FTP 客户端感到困惑。
#异步_abor_enable=是
#
# 默认情况下,服务器会假装允许 ASCII 模式,但实际上会忽略
# 请求。打开以下选项,让服务器实际执行 ASCII
# 在 ASCII 模式下对文件进行修改。
# 请注意,在某些 FTP 服务器上,ASCII 支持允许拒绝服务
# 通过 ASCII 模式下的命令“SIZE /big/file”进行攻击(DoS)。 vsftpd
# 预测了这次袭击,并且一直很安全,报告了
# 原始文件。
# ASCII 混淆是该协议的一个糟糕的特性。
#ascii_upload_enable=是
#ascii_download_enable=是
#
# 您可以完全自定义登录横幅字符串:
#ftpd_banner=欢迎使用 blah FTP 服务。
#
# 您可以指定一个不允许匿名电子邮件地址的文件。显然
# 对于抵御某些 DoS 攻击很有用。
#deny_email_enable=是
#(默认如下)
#banned_email_file=/etc/vsftpd.banned_emails
#
# 您可以将本地用户限制在其主目录中。请参阅常见问题解答
# 在使用 chroot_local_user 或之前可能存在的风险
下面的#chroot_list_enable。
#chroot_local_user=是
#
# 您可以指定一个明确的本地用户列表,以便 chroot() 到他们的主目录
# 目录。如果 chroot_local_user 为 YES,则此列表将成为
# 用户不要 chroot()。
#(警告!chroot 非常危险。如果使用 chroot,请确保
# 用户没有顶级目录的写权限
#chroot)
#chroot_local_user=是
#chroot_list_enable=是
#(默认如下)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# 您可以激活内置 ls 的“-R”选项。此功能被禁用
# 默认避免远程用户能够对大型系统造成过多的 I/O
# 站点。但是,一些损坏的 FTP 客户端(如“ncftp”和“mirror”)假设
#“-R”选项的存在,因此有强有力的理由启用它。
#ls_recurse_enable=是
#
# 定制
#
# 一些 vsftpd 的设置不符合文件系统布局
# 默认。
#
# 此选项应为空目录的名称。此外,
# 目录不应由 ftp 用户写入。此目录用于
# 作为安全的 chroot() 监狱,vsftpd 有时不需要文件系统
# 使用权。
secure_chroot_dir=/var/run/vsftpd/空
#
# 此字符串是 vsftpd 将使用的 PAM 服务的名称。
pam_service_name=ftp
#
# 此选项指定用于 SSL 的 RSA 证书的位置
# 加密连接。
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=否

#
# 取消注释以表明 vsftpd 使用 utf8 文件系统。
#utf8_文件系统=是

#用户限制
用户列表文件=/etc/vsftpd.用户列表
用户列表启用=YES
用户列表拒绝=否

# 被动/主动模式配置
#端口启用=是
pasv_enable=是
pasv_min_port=1200
pasv_max_port=1250
pasv_address=xx.xx.xx.xx
# 如果 pasv_address_resolve=YES,pasv_address 应该是一个名称,例如 ftp.blah.com
#pasv_addr_resolve=是


seccomp_sandbox=否

这是 filezilla 显示的内容:

状态:连接到 xx.xx.xx.xx:21...
状态:连接已建立,正在等待欢迎消息……
状态:服务器不支持非 ASCII 字符。
状态:已登录
状态:正在检索目录列表...
命令:PWD
响应:257 “/home/username”是当前目录
命令:TYPE I
响应:200 切换到二进制模式。
命令:PASV
错误:无法从套接字读取:ECONNRESET - 对等方重置连接
错误:与服务器断开连接
错误:无法检索目录列表

cmd 提示符的输出:

[电子邮件保护]:~$ sudo ftp 本地主机
已连接到本地主机。
220(vsFTPd 3.0.3)
名称(localhost:bitnami):用户名
331 请指定密码。
密码:
230 登录成功。
远程系统类型为 UNIX。
使用二进制模式传输文件。
ftp> ls
200 PORT 命令成功。请考虑使用 PASV。
150 以下是目录列表。
-rw-rw-r-- 1 1002 1004 415 2月 08 15:30 1
226 目录发送成功。
ftp>被动
被动模式开启。
ftp> ls
227 进入被动模式 (0,0,0,0,4,224)。
150 以下是目录列表。
-rw-rw-r-- 1 1002 1004 415 2月 08 15:30 1
226 目录发送成功。
ftp>退出
221 再见。
[电子邮件保护]:~$ 

我真的很感激任何帮助,因为我很困惑。

它在主动模式下工作,但第三方只能在被动模式下进行 ftp,所以我需要它。

提前致谢!

答案1

配置pasv_address(和pasv_addr_resolve选项:

pasv_地址

使用此选项可覆盖 vsftpd 响应 PASV 命令时公布的 IP 地址。提供一个数字 IP 地址,除非启用了 pasv_addr_resolve,在这种情况下,您可以提供一个主机名,该主机名将在启动时为您进行 DNS 解析。

默认值:(无 - 地址取自传入的连接套接字)

pasv_addr_resolve

如果您想在 pasv_address 选项中使用主机名(而不是 IP 地址),请设置为 YES。

默认值:NO

(从http://vsftpd.beasts.org/vsftpd_conf.html

上周我一直在研究这个问题。症状:

  • 在主动模式下使用 FileZilla 效果很好
  • 使用自动或被动模式会导致连接超时或被拒绝
  • 被动地址打印0,0,0,0在日志中

设置pasv_address为 IP,或者设置为 FQDNpassv_addr_resolve可以yes解决此问题,因为它允许客户端连接到正确的目的地。

相关内容