应对场景
一般情况下运维只会接收到“需要个FTP”指令,运维坑次坑次去搭建了个FTP,研发在使用过程中拿不到文件。
研发:"你FTP配置不对!"
运维:“我FTP配置对的呀,上传和下载我都验证过了的,你程序没问题吧?”
研发:“我程序没问题呀,之前在 XXX 环境我的代码也是这样写的。”
运维:“之前在 XXX 环境我的FTP也是这样配置的,没有问题的呀。”
模式选择
作为研发保险的方式:代码自适应FTP的主被动模式。
作为运维保险的方式:在搭建FTP前需要问清楚FTP给谁用,用的客户端是否有防火墙,搭建的服务端是否有防火墙,综合这些因素来选择配置模式。
- 情况一:client 没有防火墙
可选择:主动模式,服务端防火墙开启21,20端口。 - 情况二:server 没有防火墙
可选择:被动模式 - 情况三:双方都有防火墙
可选择:被动模式高端口范围,服务端防火墙开启端口范围, client 用被动模式连接即可
相关配置
- 主动模式
# 服务端如有防火墙,需开启端口21、20
connect_from_port_20=YES
pasv_enable=NO
- 被动模式
# 服务端如有防火墙,需开启端口 30000 -- 30010
connect_from_port_20=NO
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010
锁定主目录
-
应对场景
曾遇到一种情况FTP配置正确,使用账号和密码也能下载到文件,但是使用程序去下载时拼接到FTP地址就是不对的,少了文件所对应的目录。
遇到这种情况应该是没有锁主目录所致。 -
锁定主目录
# 用户写入 chroot_list 中
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
- 不锁定
# 用户写入 chroot_list 中
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
其他注意事项
-
禁止 FTP 用户 SSH 登录
从安全的角度来说,FTP账号需要禁止有SSH登陆,避免FTP用户SSH登陆服务器,对不该它操作的数据进行操作 -
实现方式
useradd -s /sbin/nologin USERNAME
网友评论