文章

防止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均拒绝。

License:  CC BY 4.0