Debian FTP Server如何进行安全配置
小樊
32
2025-12-10 04:40:44
Debian FTP Server 安全配置指南
一 基础加固与最小权限
- 安装并启用服务:sudo apt update && sudo apt install vsftpd;sudo systemctl enable --now vsftpd。
- 核心配置 /etc/vsftpd.conf(示例为最小安全基线):
- 禁用匿名:anonymous_enable=NO
- 仅本地用户:local_enable=YES
- 写入按需:write_enable=YES(上传/删除需要)
- 禁 root 登录:local_root=/home/ftp(可选);pam_service_name=vsftpd
- 访问限制:chroot_local_user=YES;allow_writeable_chroot=YES(若 chroot 后需写入)
- 日志审计:xferlog_enable=YES;xferlog_std_format=YES;log_ftp_protocol=YES(便于排错与取证)
- 连接控制:connect_from_port_20=YES;listen=YES;listen_ipv6=NO
- 可选名单:userlist_enable=YES;userlist_deny=NO;userlist_file=/etc/vsftpd.user_list(白名单)
- 权限与隔离:为 FTP 用户设置专用账号与家目录,限制 shell 登录(如 usermod -s /usr/sbin/nologin ftpuser),目录权限最小化(如 0750/0640)。
- 说明:vsftpd 默认使用本地 PAM,配合 userlist 可实现精细化访问控制。
二 启用加密传输
- 自签名证书(测试/内网可用):
- 生成:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 权限:chmod 600 /etc/ssl/private/vsftpd.pem
- 配置 /etc/vsftpd.conf(FTPS,显式 TLS):
- 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
- 证书与端口:
- 使用系统包证书:ssl-cert 提供的 /etc/ssl/certs/ssl-cert-snakeoil.pem 与 /etc/ssl/private/ssl-cert-snakeoil.key
- 防火墙放行:控制通道 21/TCP;显式 FTPS 常用 990/TCP(部分客户端/服务端也使用 21 进行显式握手)
- 客户端验证:FileZilla 选择“FTP over TLS(显式)”,连接后应显示“加密”。
三 防火墙与被动模式端口
- UFW 示例(推荐限定被动端口范围):
- sudo ufw allow 21/tcp
- sudo ufw allow 990/tcp(如使用显式 FTPS)
- 被动端口范围(示例):sudo ufw allow 30000:31000/tcp
- iptables 要点:放行 21/TCP、20/TCP 与被动端口范围,并允许已建立/相关连接:
- -A INPUT -p tcp --dport 21 -j ACCEPT
- -A INPUT -p tcp --dport 20 -j ACCEPT
- -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
- -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- 规则持久化:iptables-save > /etc/iptables/rules.v4
- vsftpd 被动端口(与防火墙一致):
- pasv_enable=YES;pasv_min_port=30000;pasv_max_port=31000
- 云厂商安全组:同时放行上述端口(控制与被动范围)。
四 可选方案 SFTP 与访问控制
- SFTP(基于 SSH,通常更安全、穿透性更好):
- 安装:sudo apt install openssh-server
- 建议:禁用密码登录,仅用密钥;为 SFTP 用户设置受限目录(ChrootDirectory),并限制其仅 sftp 子系统登录。
- 访问控制强化:
- 仅允许白名单用户:userlist_enable=YES;userlist_deny=NO;userlist_file=/etc/vsftpd.user_list
- 结合 TCP Wrappers:tcp_wrappers=YES;在 /etc/hosts.allow 与 /etc/hosts.deny 中限制来源网段。
五 运维与持续安全
- 服务与证书:sudo systemctl restart vsftpd(配置变更后);证书到期前及时续期与轮换。
- 日志与告警:启用 xferlog 与系统日志(journalctl -u vsftpd),对异常登录、频繁失败、越权访问进行告警。
- 系统加固:保持系统与软件更新(sudo apt update && sudo apt upgrade),关闭不必要的服务与端口,限制可登录用户与 sudo 权限。
- 安全基线:定期审计配置与权限、备份关键配置与用户数据、在隔离环境验证规则后再上线。