服务器被暴力破解,如何锁定 IP 地址?
服务器被暴力破解?手把手教你锁定恶意IP地址
刚买的服务器还没用几天,后台日志全是登录失败的记录?
别慌,这是有人在用字典跑你的密码。
本文直接教你怎么把这些恶意IP锁死,让暴力破解彻底失效。
这里用的方法不需要编程基础,只要会复制粘贴就行。
准备工作:先确认你的服务器环境
登录服务器后,先确定你用的是哪种防火墙。
大多数Linux系统默认自带iptables,新一点的系统推荐用ufw或firewalld。
这里我以最通用的iptables为例,同时也会提一下fail2ban自动封禁工具。
先检查一下iptables是否安装:
which iptables
如果返回路径比如/usr/sbin/iptables,说明已安装。
没有的话执行apt install iptables或yum install iptables-services。
另外,建议先备份当前的防火墙规则:iptables-save > /root/iptables_backup_$(date +%F).rules。
操作:手动和自动两种方式封禁IP
方式一:手动封禁临时IP
如果只有一两个IP在反复尝试,可以直接手动封掉。
先用lastb或journalctl查看失败的登录来源IP:
lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head -10
找到可疑IP(比如192.168.1.100)后,执行:
iptables -A INPUT -s 192.168.1.100 -j DROP
这条命令会把来自该IP的所有访问都给丢弃。
如果想永久生效,需要保存规则:
iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu
iptables-save > /etc/sysconfig/iptables # CentOS 7
手动封禁的缺点是发现一个封一个,比较累。
所以更推荐用自动工具。
方式二:用fail2ban自动封禁IP
fail2ban会监控登录日志,发现连续失败次数超过阈值就自动封IP。
安装很简单:
# Debian/Ubuntu
apt install fail2ban -y
# CentOS 7
yum install epel-release && yum install fail2ban -y
安装后,配置SSH保护。
编辑/etc/fail2ban/jail.local(如果没有就新建),写入:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
参数说明:maxretry = 3表示失败3次就触发,bantime = 3600是封禁3600秒(1小时)。
保存后重启fail2ban:
systemctl restart fail2ban
systemctl enable fail2ban
之后所有SSH登录失败的IP都会被自动加入iptables的DROP链,你不需要再手动操作。
避坑:新手最容易犯的几个错误
1. 忘记开放自己IP:配置防火墙前一定先确认自己当前IP没有被封。
如果从远程操作,可以先执行iptables -P INPUT ACCEPT再测试,否则可能把自己锁在外面。
建议先在本地开一条放行自己IP的规则:iptables -I INPUT -s 你的IP -j ACCEPT。
2. fail2ban日志路径不对:CentOS 7的SSH日志在/var/log/secure,Ubuntu在/var/log/auth.log。
写错路径会导致fail2ban无法工作。
可以用fail2ban-client status sshd查看状态,如果显示Currently banned: 0且没有IP,检查日志路径是否匹配。
3. 封禁后忘了保存规则:手动iptables规则重启就没了,一定要用iptables-save保存。
fail2ban的封禁默认是内存里的,建议设置banaction = iptables-multiport并保持持久化配置。
验证:怎么确认IP已经被锁住?
手动验证:从被封的IP(比如另一台服务器)远程SSH连接,会直接超时或提示无响应。
也可以用命令查看iptables规则:
iptables -L INPUT -v -n | grep DROP
会看到类似DROP all -- 192.168.1.100 0.0.0.0/0的行。
fail2ban验证:执行fail2ban-client status sshd,如果输出包含Banned IP list: 192.168.1.100就说明封禁生效。
你也可以查看日志tail -f /var/log/fail2ban.log,看有没有Ban记录。
如果你正在处理服务器被暴力破解的问题,建议先按本文步骤完整执行封禁,再根据自己的环境微调规则。
遇到异常时,优先回看避坑部分,或者检查防火墙和fail2ban的日志输出。
防御暴力破解,重中之重是先把密码换成SSH密钥,或者直接关闭密码登录,然后用fail2ban兜底——这样就算有IP扫描也无济于事。