温馨提示×

Debian如何配置SFTP加密方式

小樊
43
2025-12-31 15:38:38
栏目: 网络安全

Debian SFTP加密方式配置指南

一 概念澄清

  • SFTP 是建立在 SSH 之上的文件传输协议,默认全程加密,使用的是 SSH 的传输与密钥交换机制,并不存在“开启 SFTP 的 SSL”这种说法。若你实际需要的是基于 SSL/TLS 的 FTP,则应使用 FTPS(FTP over SSL/TLS),其端口与协议流程与 SFTP 完全不同。SFTP 与 FTPS 的对比与启用方式可参考下述步骤与注意点。

二 配置 SFTP 的加密与算法

  • 安装 OpenSSH 服务器(如未安装):
    • 命令:sudo apt update && sudo apt install openssh-server
  • 编辑 SSH 服务端配置 /etc/ssh/sshd_config
    • 确保启用 SFTP 子系统(现代系统可直接使用内置的 internal-sftp,更便于结合 chroot):
      • 推荐:Subsystem sftp internal-sftp
    • 在全局或针对特定用户/组设置加密套件与密钥交换算法(示例为较安全的组合,按需收紧):
      • 示例:
        • Ciphers aes256-ctr,aes192-ctr,aes128-ctr
        • MACs hmac-sha2-256,hmac-sha2-512
        • KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
    • 如需仅对 SFTP 用户生效,可用 Match 块(同时建议做 chroot 隔离):
      • 示例:
        • Match Group sftpusers
        • ChrootDirectory %h
        • ForceCommand internal-sftp
        • AllowTcpForwarding no
        • X11Forwarding no
    • 保存后重启服务:sudo systemctl restart ssh
  • 客户端连接与验证:
    • 命令:sftp -o Port=22 username@your_server_ip
    • 验证算法协商(查看客户端与服务器实际使用的加密套件与密钥交换):ssh -vvv username@your_server_ip
  • 说明:
    • 不建议使用已弱化的算法(如 aes128-cbc3des-cbchmac-md5 等)。
    • 若客户端不支持现代算法,应升级客户端或在服务器侧适度放宽策略,但务必避免回退到不安全套件。

三 使用密钥认证提升安全性

  • 客户端生成密钥对(示例):ssh-keygen -t ed25519 -b 4096ssh-keygen -t rsa -b 4096
  • 将公钥复制到服务器:ssh-copy-id user@server_ip
  • 服务端确保启用公钥认证(/etc/ssh/sshd_config):
    • PubkeyAuthentication yes
    • AuthorizedKeysFile .ssh/authorized_keys
  • 如需禁用口令登录(可选,请确保密钥已可用):PasswordAuthentication no
  • 重启服务:sudo systemctl restart ssh
  • 说明:密钥认证与 SFTP 传输加密是正交的,密钥认证提升身份鉴别强度,传输仍由 SSH 加密通道保护。

四 若实际要配置的是 FTPS(FTP over SSL/TLS)

  • 安装 vsftpd 与 OpenSSL:sudo apt update && sudo apt install vsftpd openssl
  • 生成证书与密钥(自签名示例):
    • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
  • 配置 /etc/vsftpd.conf(关键项):
    • 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/certs/vsftpd.pem
    • rsa_private_key_file=/etc/ssl/private/vsftpd.pem
  • 重启服务:sudo systemctl restart vsftpd
  • 防火墙放行(示例 ufw):sudo ufw allow 21/tcpsudo ufw allow 990/tcp(显式 FTPS 常用 990/tcp;被动模式还需放行数据端口范围)
  • 验证:openssl s_client -connect your_server_ip:21 -starttls ftp
  • 说明:FTPS 与 SFTP 是两套不同协议,端口、配置与客户端支持均不同,请按业务需求二选一或分别部署。

0