公钥认证是防范暴力破解的核心手段之一,相比密码认证更难被破解。具体操作如下:
ssh-keygen -t rsa -b 4096(默认生成id_rsa私钥和id_rsa.pub公钥)。.ssh文件夹:mkdir -p ~/.ssh,chmod 700 ~/.ssh,cat id_rsa.pub >> ~/.ssh/authorized_keys,chmod 600 ~/.ssh/authorized_keys。/etc/ssh/sshd_config,启用公钥认证并禁用密码认证:PubkeyAuthentication yes
PasswordAuthentication no
sudo systemctl restart sshd。通过限制登录失败次数,自动锁定可疑账户,阻止持续暴力破解。常用方法有两种:
/etc/pam.d/sshd文件,添加以下行(以pam_faillock为例):auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
auth sufficient pam_faillock.so authsucc audit deny=3 unlock_time=600
account required pam_unix.so
此配置表示:连续3次登录失败后,账户锁定10分钟(unlock_time=600秒)。sudo apt install fail2ban;创建或编辑/etc/fail2ban/jail.local文件,添加SSH规则:[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
重启Fail2Ban服务:sudo systemctl restart fail2ban。通过限制登录尝试次数、禁用root登录等方式,降低暴力破解风险:
/etc/ssh/sshd_config文件,设置以下参数:MaxAuthTries 3 # 限制每次登录尝试的最大次数为3次
PermitRootLogin no # 禁止root用户直接登录
AllowUsers your_username # 仅允许指定用户登录(替换为实际用户名)
sudo systemctl restart sshd。默认的SSH端口(22)是暴力破解工具的主要扫描目标,更改端口可显著降低被攻击的概率:
/etc/ssh/sshd_config文件,找到#Port 22,取消注释并修改为其他端口(如2222):Port 2222
ufw,执行sudo ufw allow 2222/tcp;若使用iptables,执行sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT。sudo systemctl restart sshd。通过防火墙仅允许可信IP地址访问SSH/SFTP服务,阻断非法IP的连接尝试:
sudo ufw allow from trusted_ip to any port 2222 proto tcp # 替换trusted_ip为可信IP
sudo ufw enable
sudo iptables -A INPUT -p tcp --dport 2222 -s trusted_ip -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2222 -j DROP
sudo iptables-save | sudo tee /etc/iptables/rules.v4 # 保存规则
保持Debian系统及OpenSSH软件包的最新版本,及时修复已知安全漏洞,降低被暴力破解的风险:
sudo apt update && sudo apt upgrade -y
启用详细日志记录,定期检查SSH登录日志,及时发现异常活动:
/etc/ssh/sshd_config文件,设置日志级别为VERBOSE:LogLevel VERBOSE
sudo systemctl restart sshd。grep命令查看失败登录记录:sudo grep "Failed password" /var/log/auth.log。通过以上措施的组合使用,可有效提升Debian系统下SFTP服务的安全性,大幅降低暴力破解的风险。需注意的是,安全配置应根据实际需求调整(如bantime、maxretry等参数),并定期复查配置的有效性。