Debian SFTP如何与防火墙配合
小樊
31
2025-12-14 00:14:09
Debian SFTP 与防火墙配合
一、基础准备
- 确认已安装并运行 OpenSSH 服务器:sudo apt update && sudo apt install openssh-server;sudo systemctl status ssh(未运行则 sudo systemctl start ssh)。
- 默认情况下 SFTP 复用 SSH 的端口 22/TCP,无需额外端口;如需修改端口,后续防火墙需同步放行对应端口。
- 建议先做连通性验证:本地执行 sftp username@your_server_ip,确认账号与网络可达。
二、使用 UFW 放行 SFTP
- 放行 SSH(等价于放行 SFTP):sudo ufw allow OpenSSH 或 sudo ufw allow 22/tcp;如需开机启用:sudo ufw enable;查看状态:sudo ufw status。
- 仅允许指定来源访问 SFTP:sudo ufw allow from 192.168.1.100 to any port 22。
- 修改 SSH 端口(例如 2222)后,需同步放行:sudo ufw allow 2222/tcp。
三、使用 nftables 放行 SFTP
- 放行端口 22/TCP:sudo nft add rule ip filter input tcp dport 22 accept。
- 仅允许指定来源:sudo nft add rule ip filter input ip saddr 203.0.113.10 tcp dport 22 accept。
- 持久化(Debian 10+/nftables 默认):sudo nft list ruleset > /etc/nftables.conf;确保系统启用 nftables 服务(如已迁移到 nftables 作为默认后端)。
四、使用 iptables 放行 SFTP
- 放行端口 22/TCP:sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT。
- 仅允许指定来源:sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT。
- 保存规则(Debian 常用做法):sudo iptables-save > /etc/iptables/rules.v4;查看规则:sudo iptables -L -v -n。
五、安全加固与验证
- 在 /etc/ssh/sshd_config 中建议:禁用 root 登录(PermitRootLogin no)、启用公钥认证(PubkeyAuthentication yes)、按需限制登录来源(AllowUsers your_username@your_ip)、设置会话保活(ClientAliveInterval 300、ClientAliveCountMax 3)。
- 如需将 SFTP 用户限制在特定目录,可使用 Chroot Jail:创建 sftpusers 组,配置 Match Group sftpusers 段(ChrootDirectory %h、ForceCommand internal-sftp、AllowTcpForwarding no、X11Forwarding no),并确保对应目录属主为 root:root 且权限 755,否则 chroot 会失败。
- 修改 SSH 配置后重启服务:sudo systemctl restart ssh。
- 连接与日志验证:sftp username@your_server_ip;实时查看认证日志:sudo tail -f /var/log/auth.log。