防止SSH暴力破解
在Debian 12.5系统中,可以通过修改SSH配置、使用Fail2Ban工具、设置防火墙规则等方法来防止SSH暴力破解
修改默认SSH端口:
sudo vi /etc/ssh/sshd_config
Port 2222
重启SSH服务
sudo systemctl restart sshd
禁用Root用户登录
禁止使用Root用户直接登录,强制使用普通用户并通sudo
提权。修改SSH配置文sudo vi /etc/ssh/sshd_config
,找到并设PermitRootLogin no
,重启SSH服sudo systemctl restart sshd
。
- 使用强密码和SSH密钥认证:使用12位以上的复杂密码,包括大小写字母、数字和特殊字符,强制所有用户更换弱密码。还可以配置SSH密钥认证,生成SSH密sudo ssh-keygen -t rsa -b 4096
,将公钥上传到服务sudo ssh-copy-id user@<服务器IP>
,然后修/etc/ssh/sshd_config
,设PasswordAuthentication no
,最后重启SSH服务。
使用Fail2Ban工具
Fail2Ban是一个基于日志的防护工具,可以自动封禁尝试暴力破解的IP。
安装Fail2Ban
sudo apt install -y fail2ban
配置SSH防护规则
vim /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 604800 # 1星期
上述配置表示启用sshd防护,检/var/log/auth.log
日志文件,允许最大登录失败次数为5次,封禁时间为3600秒。最后启动Fail2Ban服务并设置开机自sudo systemctl start fail2bansudo systemctl enable fail2ban
。
设置防火墙规则
使用iptables限制每个IP每分钟的连接次数,
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --setsudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 -j DROP
表示如果一个IP在60秒内连接22端口超过5次,就将其丢弃。如果服务器只需要特定国家的访问,还可以使用GeoIP模块限制SSH登录。
安xtables - addons
并配置GeoIP规则,sudo iptables -A INPUT -p tcp --dport 22 -m geoip! --src - cc CN,US -j DROP
,表示禁止中国和美国以外的IP地址访问SSH端口。
此外,还可以设置IP白名单,只允许固定的IP地址访问服务器。使用命sudo iptables -A INPUT -p tcp --dport 22 -s <允许的IP地址> -j ACCEPTsudo iptables -A INPUT -p tcp --dport 22 -j DROP
,表示只允许指定IP访问SSH端口,其他IP均拒绝。