linux ftp 别急着上公网,从旧扫描仪救急说起,聊聊我怎么看它

admin

前几天,一个开摄影工作室的朋友突然给我发消息:“救急!我们那台老扫描仪只能往 FTP 上传文件,电脑换了几台都不顺手,能不能用你那台 Linux 小主机接一下?”你看,这就是我为什么一直觉得 Linux FTP 这个话题没那么“过时”,网上很多教程一上来就是装服务、改配置、开端口,三下五除二看着很爽,但真到生活里,往往不是“我要学习 FTP”,而是“我手里有个只认 FTP 的老设备,今天必须把活干完”。

我先说结论:Linux FTP 不是洪水猛兽,它在内网、旧设备兼容、临时文件交换这些场景里依然有生命力;但它也绝对不适合“图省事直接怼到公网”,这篇文章我不打算写成冷冰冰的命令手册,而是结合这次给朋友救急的真实经历,聊聊 Linux FTP 怎么用、哪里容易踩坑,以及我个人的态度。

朋友的情况很具体:工作室有一台老扫描仪,扫描完成后只能通过 FTP 上传到指定服务器;他们平时拍片、修图、归档已经够忙了,不想再折腾复杂的网盘流程,他们手里有一台闲置的 Linux 小主机,想让它当“扫描件中转站”,我到了现场先没急着装软件,而是问了三件事:第一,扫描仪和主机是不是在同一个内网?第二,扫描件需不需要给外部客户下载?第三,能不能接受专用账号、专用目录?答案分别是:同一个路由下、不需要、可以,好,那这个需求就适合用 Linux FTP 做内网文件落地,但必须把权限收窄。

我用的方案是 vsftpd,Linux 下比较常见,配置也不复杂,先创建专用用户,scan,给它一个独立目录 /srv/ftp/scan,shell 设成不可登录,避免它变成一个能随便登系统的账号,然后改 /etc/vsftpd.conf:关闭匿名访问,开启本地用户登录和写入,把用户限制在自己的目录里,设置被动模式端口范围,50000 到 50100,最后在防火墙里放行 21 端口和这段被动端口,这里有个小坑:很多人只放行 21 端口,结果客户端能连上、能登录,但一列目录或一传文件就卡住,就是因为被动模式的数据端口没开,这个坑我早年也踩过,当时还以为是密码错了,折腾半天才发现是防火墙。

配置完成后,我用命令行测试:lftp -u scan ftp://192.168.1.50,登录、切目录、上传一个小文件,再让扫描仪实际扫一张测试页,扫描仪那边填服务器 IP、端口 21、用户名 scan、密码,路径留根目录,第一次没成功,原因是扫描仪默认用了主动模式,而我的防火墙只按被动模式规划,把扫描仪设置改成被动模式后,文件顺利落到了 /srv/ftp/scan,朋友看到扫描件出现在目录里,说了一句特别真实的话:“原来不是非得买新设备啊。”我也挺感慨,很多时候技术不是越新越好,而是合适、可控、能解决问题最好。

我必须把个人观点说清楚:Linux FTP 的“方便”是有代价的,FTP 协议本身是明文传输,用户名、密码、文件内容在网络里都可能被看到,所以我在朋友那里加了几条硬规矩:只在内网使用,路由器上不做公网端口映射;账号只给扫描仪用,密码单独设置;目录只允许这个账号读写,不放其他资料;用完就关服务或者至少定期看日志,如果有人问我“能不能把 FTP 开到公网,方便我在外地传文件”,我的回答通常是:别偷这个懒,你完全可以用 SFTP,它基于 SSH,默认加密,Linux 上很多时候不用额外装服务;如果设备只支持 FTP,那就老老实实放在内网,或者加 VPN,再不行也要考虑 FTPS 和更严格的访问控制。

我还见过另一个生活实例:一家小公司用旧打印机“扫描到 FTP”,IT 为了省事开了匿名访问,结果时间一长,谁都往里面丢文件,目录乱成一锅粥,后来排查异常日志才发现有外部地址尝试连接,这个事让我更坚定一个观点:Linux FTP 可以用,但“匿名访问 + 公网暴露 + 弱密码”这三件事凑在一起,基本就是给自己找麻烦,技术本身没有原罪,问题在于使用它的人有没有边界感。

如果你现在正打算在 Linux 上折腾 FTP,我的建议是:先问自己是不是非 FTP 不可,只是 Linux 之间传文件,SFTP 或 scp 更省心;需要给旧扫描仪、旧打印机、老设备做兼容,FTP 可以作为内网方案;真要跨公网,优先 VPN、SFTP、FTPS,别让 21 端口裸奔,配置时记住几个关键词:专用账号、最小权限、被动端口、防火墙、日志、定期关闭不用的服务,别怕命令行,但也别迷信“能跑就行”。

说到底,Linux FTP 对我来说像一个工具箱里的老扳手:不花哨,但某些螺丝只有它顺手,可老扳手也得知道往哪儿拧,不能拿它去撬承重墙,用得好,它是救急工具;用不好,它就是安全隐患,朋友那台扫描仪现在还在安安静静地往 Linux 小主机里传照片,我看到的是技术的实用一面;而我更想提醒大家的是,实用之外,别忘了安全这条底线。

目录[+]