Debian FTP安全设置怎么做
小樊
49
2025-11-16 11:26:07
Debian FTP安全设置实操指南
一 基础安全原则
- 优先选择加密传输:使用 FTPS(FTP over SSL/TLS) 或直接使用 SFTP(基于SSH),避免明文 FTP。
- 禁用匿名访问:设置 anonymous_enable=NO,仅允许受控的本地或虚拟用户。
- 最小权限与隔离:将用户 chroot 到其家目录,按需开启写入;必要时仅对少数管理账号放宽。
- 强化认证与日志:启用登录限制与传输日志,定期审计与更新系统。
二 以 vsftpd 为例的安全配置步骤
- 安装与启动
- 安装软件包:sudo apt update && sudo apt install vsftpd
- 启动并设为开机自启:sudo systemctl start vsftpd && sudo systemctl enable vsftpd
- 核心配置 /etc/vsftpd.conf(示例为最小安全基线)
- 身份与权限
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES
- chroot_local_user=YES
- allow_writeable_chroot=YES(若 chroot 目录需要可写;也可改为不可写并通过子目录授权)
- 日志与横幅
- xferlog_enable=YES
- xferlog_std_format=YES
- ftpd_banner=Welcome(自定义欢迎语,避免泄露版本信息)
- 连接与端口
- 主动模式:connect_from_port_20=YES
- 被动模式端口范围(便于防火墙放行):pasv_min_port=30000、pasv_max_port=31000
- 可选访问控制
- userlist_enable=YES、userlist_deny=NO(白名单模式,仅 /etc/vsftpd.user_list 中用户可登录)
- 如需 TCP Wrappers:tcp_wrappers=YES
- 启用 TLS/FTPS(强烈建议)
- 生成自签名证书(测试或内部可用):
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 配置启用加密(示例):
- ssl_enable=YES
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
- 协议与套件:ssl_tlsv1=YES、ssl_sslv2=NO、ssl_sslv3=NO
- 证书路径:rsa_cert_file=/etc/ssl/private/vsftpd.pem、rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 如使用 Let’s Encrypt 证书,将生成的 fullchain.pem 与 privkey.pem 路径分别填入 rsa_cert_file 与 rsa_private_key_file。
- 用户与系统加固
- 创建专用 FTP 用户并限制 Shell 登录:sudo adduser --shell /usr/sbin/nologin ftpuser
- 若启用 SELinux(部分环境):sudo setsebool -P ftp_home_dir 1
- 重启生效:sudo systemctl restart vsftpd
- 防火墙放行
- UFW 示例:
- 主动/命令通道:sudo ufw allow 21/tcp
- 被动端口范围:sudo ufw allow 30000:31000/tcp
- 如部署 FTPS 显式端口:sudo ufw allow 990/tcp
- 启用防火墙:sudo ufw enable
- 客户端连接测试
- 使用 FileZilla 或命令行连接,FTPS 常用端口 990;验证登录、上传/下载与目录列表是否正常。
三 防火墙与被动模式要点
- 主动模式由服务器从 20/tcp 主动连接客户端高位端口;被动模式由客户端连接服务器 21/tcp 协商后,再连接服务器侧的 pasv_min_port–pasv_max_port 范围端口。
- 为降低攻击面,务必固定并仅放行被动端口段(如 30000–31000/tcp),并在云安全组/边界防火墙同步放行对应端口。
四 更安全的替代方案 SFTP
- 若无需 FTP 协议特性,建议直接使用 SFTP(基于 OpenSSH):
- 安装 SSH 服务:sudo apt install openssh-server
- 按需配置 /etc/ssh/sshd_config(如限制 SFTP 子系统、禁用密码仅用密钥等)
- 重启:sudo systemctl restart sshd
- 客户端通过 SFTP 22/tcp 连接,天然加密、免额外端口管理。
五 安全加固清单与验证
- 加固清单
- 禁用匿名:anonymous_enable=NO
- 强制加密:ssl_enable=YES、force_local_data_ssl=YES、force_local_logins_ssl=YES
- 限制登录:userlist_enable=YES、userlist_deny=NO(白名单)
- 目录隔离:chroot_local_user=YES
- 日志审计:xferlog_enable=YES、xferlog_std_format=YES
- 端口收敛:仅放行 21/tcp 与 30000–31000/tcp(必要时 990/tcp)
- 系统安全:sudo apt update && sudo apt upgrade 保持更新;定期查看日志(如 /var/log/vsftpd.log、/var/log/xferlog)
- 验证要点
- 使用支持 TLS 的客户端(如 FileZilla)连接,确认连接为 TLS/SSL 且可正常传输
- 验证被动模式端口在防火墙放行范围内
- 检查日志是否记录登录与传输行为,确认无异常登录尝试