Linux国外VPS装Fail2ban防暴力破解指南
Fail2ban到底能做什么?
简单来说,Fail2ban是个“日志侦探+IP保安”。它会盯着系统的登录日志,比如SSH、FTP这些服务的日志文件,一旦发现某个IP在短时间内疯狂尝试登录(比如10分钟试了5次),就会自动把这个IP加入“黑名单”,禁止它继续连接。我之前帮客户排查过一起攻击事件,某台国外VPS的SSH日志里2小时内出现300多次登录尝试,要不是Fail2ban及时封禁,后果不堪设想。
不同系统怎么装?看这里
不同Linux发行版的安装命令略有差异,这里分两种主流系统说明:
- Debian/Ubuntu用户:打开终端输入这两行,等几分钟就装好了。
sudo apt-get update
sudo apt-get install fail2ban
- CentOS/RHEL用户:需要先装EPEL源(包含额外软件包),再装Fail2ban。
sudo yum install epel-release
sudo yum install fail2ban
配置关键:别直接改jail.conf
装完软件得调参数,Fail2ban的配置文件都在`/etc/fail2ban/`目录里。这里有个新手常踩的坑——别直接改默认的`jail.conf`!因为系统更新时这个文件可能被覆盖,之前的设置就没了。正确做法是复制一份作为自定义配置:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
打开`jail.local`后,重点看这几个参数:
- `ignoreip`:填自己的IP(比如内网IP或常用公网IP),这些IP不会被封禁
- `bantime`:封禁时长,单位是秒(比如3600就是1小时)
- `findtime`:统计尝试次数的时间范围(比如600秒=10分钟)
- `maxretry`:允许的最大失败次数(比如5次)
举个例子,想让“192.168.1.100”这个IP不受影响,设置10分钟内试5次就封1小时,可以写成:
ignoreip = 127.0.0.1/8 192.168.1.100
bantime = 3600
findtime = 600
maxretry = 5
启动服务+简单测试
配置完得让服务跑起来,所有系统都是这两条命令:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
启动后可以用`sudo systemctl status fail2ban`检查状态,看到“active (running)”就说明成功了。
想验证是否生效?找个不常用的IP(比如朋友的电脑),尝试用错误密码登录SSH,连续输错5次后,10分钟内这个IP应该连不上你的国外VPS了。用下面的命令能看到被封的IP列表:
sudo fail2ban-client status sshd
常见问题:服务起不来怎么办?
遇到服务启动失败,90%是配置文件写错了。之前有用户把`bantime`写成“1小时”而不是“3600秒”,结果服务直接罢工。这时候可以用`fail2ban-client -x start`命令,它会把具体的错误信息打印出来,照着改就行。
最后提醒一句,虽然Fail2ban能挡大部分暴力破解,但定期检查`/var/log/auth.log`(Ubuntu)或`/var/log/secure`(CentOS)这些日志文件,看看有没有新的攻击模式,及时调整`maxretry`和`bantime`参数,安全防护才能更全面。毕竟,给国外VPS装防护,就像给家门装锁——多一道保险,才能更安心。