温馨提示×

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 权限。
  • 安全基线:定期审计配置与权限、备份关键配置与用户数据、在隔离环境验证规则后再上线。

0