前言
刚开始玩 VPS 的时候,很多人都会遇到一个问题:
服务器刚买回来,没有部署多少东西,但是每天都会收到大量陌生 IP 的访问。
例如 SSH 登录:
PLAINTEXT
Failed password for root from xxx.xxx.xxx.xxx意思是:
有人正在尝试登录你的服务器。
这些大部分不是人工攻击,而是互联网中的自动扫描机器人。
如果你的服务器:
开放 SSH
使用密码登录
运行网站服务
那么建议安装一个安全工具:
Fail2Ban
它可以自动检测异常登录,并自动封禁攻击 IP。
一、Fail2Ban 是什么?
简单理解:
Fail2Ban 就像服务器的保安。
它每天帮你观察:
谁在尝试登录服务器。
如果发现:
PLAINTEXT
5分钟尝试登录失败10次它会:
PLAINTEXT
记录IP
↓
加入黑名单
↓
禁止访问服务器
例如:
攻击者:
PLAINTEXT
123.123.123.123
尝试 SSH:
PLAINTEXT
失败
失败
失败
失败
失败
Fail2Ban:
PLAINTEXT
封禁 123.123.123.123
二、开始安装前准备
本文环境:
Ubuntu 22.04
Debian 12
root 用户
都可以使用。
首先 SSH 登录你的服务器。
例如:
BASH
ssh root@服务器IP
登录成功后:
你应该看到类似:
PLAINTEXT
root@server:~#
例如:
PLAINTEXT
root@vps:~#
说明:
你已经进入服务器。
三、安装 Fail2Ban
首先更新软件列表:
BASH
apt update
等待完成。
然后安装:
BASH
apt install fail2ban -y
安装完成后查看状态:
BASH
systemctl status fail2ban
如果看到:
PLAINTEXT
active (running)
说明:
Fail2Ban 已经运行。
按:
PLAINTEXT
Ctrl+C
退出查看界面。
四、认识 Fail2Ban 配置文件(重点)
很多新手看到这里会懵:
PLAINTEXT
/etc/fail2ban/jail.conf
这是什么?
我们拆开看。
1. / 是什么?
Linux 中:
PLAINTEXT
/
代表:
根目录。
类似 Windows:
PLAINTEXT
C盘
2. etc 是什么?
Linux 配置文件通常放:
PLAINTEXT
/etc
这里类似:
Windows:
PLAINTEXT
C:\Windows\Config
3. fail2ban 是什么?
安装 Fail2Ban 后:
系统创建:
PLAINTEXT
/etc/fail2ban
这个文件夹。
里面存放:
Fail2Ban 所有配置。
查看:
输入:
BASH
ls /etc/fail2ban
你会看到:
PLAINTEXT
action.d
filter.d
jail.conf
其中:
最重要的是:
PLAINTEXT
jail.conf
五、为什么不能直接修改 jail.conf?
很多教程会说:
编辑:
PLAINTEXT
jail.conf
但是不推荐。
原因:
以后更新:
BASH
apt upgrade
系统可能重新生成:
PLAINTEXT
jail.conf
你的修改可能丢失。
所以 Fail2Ban 推荐:
复制一个自己的配置文件。
名字:
PLAINTEXT
jail.local
六、创建 jail.local(新手详细步骤)
第一步:复制默认配置
输入:
BASH
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
不要害怕。
这个命令只是复制文件。
拆开:
cp
意思:
copy
复制。
第一个路径:
PLAINTEXT
/etc/fail2ban/jail.conf
这是原文件。
也就是:
复制谁。
第二个路径:
PLAINTEXT
/etc/fail2ban/jail.local
这是新文件。
也就是:
复制到哪里。
所以整句话:
意思:
PLAINTEXT
把 jail.conf 复制一份
名字改成 jail.local
执行前:
PLAINTEXT
/etc/fail2ban
├── jail.conf
执行后:
PLAINTEXT
/etc/fail2ban
├── jail.conf
├── jail.local
第二步:检查是否创建成功
输入:
BASH
ls /etc/fail2ban
如果看到:
PLAINTEXT
jail.conf
jail.local
说明成功。
七、打开配置文件
现在我们编辑自己的配置:
输入:
BASH
nano /etc/fail2ban/jail.local
解释:
nano 是一个文本编辑器。
类似 Windows:
记事本。
打开后:
你会看到很多英文。
不要害怕。
八、开启 SSH 防护
按键:
PLAINTEXT
Ctrl + W
搜索:
PLAINTEXT
sshd
回车。
找到:
INI
[sshd]
下面。
可能看到:
INI
enabled = false
修改:
INI
enabled = true
意思:
开启 SSH 防护。
然后设置:
失败次数
找到:
INI
maxretry
修改:
INI
maxretry = 5
意思:
失败5次封禁。
检测时间
设置:
INI
findtime = 10m
意思:
10分钟内。
封禁时间
设置:
INI
bantime = 1h
意思:
封禁1小时。
最终效果:
PLAINTEXT
10分钟内
SSH登录失败5次
↓
封禁1小时
九、保存配置
nano 保存:
按:
PLAINTEXT
Ctrl + O
然后:
回车。
退出:
PLAINTEXT
Ctrl + X
十、让配置生效
修改文件以后:
Fail2Ban 不会自动读取。
需要重启:
BASH
systemctl restart fail2ban
查看:
BASH
systemctl status fail2ban
如果:
PLAINTEXT
active (running)
成功。
十一、检查 SSH 防护是否开启
输入:
BASH
fail2ban-client status
看到:
PLAINTEXT
Jail list: sshd
说明:
SSH 防护已经开启。
详细查看:
BASH
fail2ban-client status sshd
例如:
PLAINTEXT
Currently banned: 0
Total failed: 10
十二、查看被封禁 IP
输入:
BASH
fail2ban-client status sshd
找到:
PLAINTEXT
Banned IP list
例如:
PLAINTEXT
45.xxx.xxx.xxx
这些 IP 已经被禁止访问。
十三、误封自己的解决方法
如果不小心把自己封了。
解除:
BASH
fail2ban-client set sshd unbanip 你的IP
例如:
BASH
fail2ban-client set sshd unbanip 8.8.8.8
十四、个人 VPS 推荐安全配置
如果你的服务器运行:
博客
Docker
1Panel
网站
建议:
1. SSH 密钥登录
不要使用:
PLAINTEXT
root密码登录
改成:
PLAINTEXT
SSH Key
安全很多。
2. 修改 SSH 端口
默认:
PLAINTEXT
22
可以修改:
PLAINTEXT
2222
减少扫描。
3. 开启防火墙
例如:
BASH
ufw enable
只开放需要端口。
十五、常用命令总结
查看 Fail2Ban 状态:
BASH
systemctl status fail2ban
查看保护:
BASH
fail2ban-client status
查看 SSH:
BASH
fail2ban-client status sshd
重启:
BASH
systemctl restart fail2ban
查看日志:
BASH
tail -f /var/log/fail2ban.log
总结
对于刚开始使用 VPS 的新手:
一台裸服务器就像一间没有门卫的房子。
Fail2Ban 就是你的自动门卫。
它不能代替所有安全措施,但是:
PLAINTEXT
SSH密钥
+
Fail2Ban
+
防火墙
+
系统更新
已经可以解决大部分个人 VPS 面临的问题。
如果你刚开始折腾服务器:
建议安装完系统后的第一件事:
安装 Fail2Ban。


