- 获取链接
- X
- 电子邮件
- 其他应用
视频将于 2026-5-18 上线
如何知道你自己的VPS流量是否被偷跑
如何知道VPS是否被攻击 被暴力破解
如何查出攻击我们VPS的IP
如何更改SSH端口
如何安装防火墙UFW
如何放行我们需要的端口 关闭其他不用的端口
如何封杀攻击我们VPS的IP
如何设置封杀IP的规则 关小黑屋的天数
如何解封我们封杀过的IP
一、 流量排查与状态监控
1. 网页后台查看与预警(以搬瓦工 KiwiVM 为例)
注册/登录 官网 点击👉前往官网
-
设置流量预警邮件:
进入
KiwiVM Admin Controls->Security & Records->Email notifications,开启Bandwidth usage alert at 50% threshold(当流量使用达 50% 时自动发邮件提醒)。 -
查看历史流量统计:
进入
KiwiVM Admin Controls->Security & Records->Usage statistics。
2. 服务器端排查异常连接与攻击
-
查出当前正在连接的 IP:
ss -tunp state established -
查出尝试暴力破解 SSH 登录失败的 IP 排行(前 20 名):
适用于 systemd 日志系统(如 Debian/Ubuntu 新版本)
sudo journalctl _SYSTEMD_UNIT=ssh.service | grep "Failed password" | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -n 20适用于传统日志文件
sudo grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -n 20
二、 基础安全加固:修改端口与防火墙
1. 更改 SSH 默认端口
不要再使用默认的 22 端口,将其修改为万位数的随机端口(如
23456),这能直接过滤掉 99% 的自动化黑客扫描。
- 修改配置文件:
sudo nano /etc/ssh/sshd_config
-
将
Port 22改为Port 23456(记得在下方防火墙放行该端口)。 -
重启 SSH 服务生效:
sudo systemctl restart ssh
或
sudo systemctl restart sshd
2. UFW 防火墙配置
⚠️ 服务商外层安全组提示:
阿里云、腾讯云、AWS 等厂商在控制台自带“安全组/防火墙”。如果厂商外层没放行某个端口,你内部就算用 UFW 放行了,外部也无法访问。请确保两边配置一致。
步骤 1:检查与安装 UFW
sudo ufw status
如果提示 command not found,则运行以下命令安装:
sudo apt update && sudo apt install ufw -y
步骤 2:查看当前 VPS 正在使用的端口
sudo ss -tuln
注: -t (TCP), -u (UDP), -l (监听中), -n (显示数字端口号)
步骤 3:放行必要的端口(关闭其他所有端口)
根据上一步查到的端口,依次放行。绝对不要漏掉 SSH 端口,否则会导致无法远程连接!
- 必须:放行你的 SSH 端口(假设你改成了 23456)
sudo ufw allow 23456/tcp
- 常用端口放行示例
- 删除端口
查看 端口是以什么规则存在的: - 进阶:放行连续的端口范围
sudo ufw allow 80/tcp # HTTP
.
sudo ufw allow 443/tcp # HTTPS
sudo ufw status numbered
输出中会看到类似 [ 1] 22/tcp ALLOW Anywhere 这样的带编号列表。
直接删除该允许规则
sudo ufw delete allow 22/tcp
或者根据第一步查到的编号(假设是编号 1)直接删除:
sudo ufw delete 1
如果你是通过删除编号的方式修改了规则,或者直接编辑了 UFW 的底层配置文件(比如 /etc/ufw/before.rules),那么必须执行一次重载命令:
sudo ufw reload
sudo ufw allow 8000:8080/tcp # 批量放行 8000 到 8080 的 TCP 端口
sudo ufw allow 5000:5050/udp # 批量放行 5000 到 5050 的 UDP 端口
步骤 4:启用防火墙并验证
启用防火墙(提示可能中断连接时,输入 y 回车)
sudo ufw enable
查看防火墙详细状态
sudo ufw status verbose
三、 进阶防爆破:安装与配置 Fail2ban
Fail2ban 是服务器防御的第二道防线。最稳妥的第一道防线依然是:关闭密码登录,改用 SSH 密钥认证。
1. 安装 Fail2ban
sudo apt update && sudo apt install fail2ban -y
查看运行状态
sudo systemctl status fail2ban
2. 配置文件规范(黄金法则)
Fail2ban 默认有两个核心文件:
-
/etc/fail2ban/jail.conf(默认配置文件,绝对不要直接修改,升级会被覆盖) -
/etc/fail2ban/jail.local(用户自定义文件,会覆盖 conf 的同名配置)
直接复制一份模板出来供我们修改:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑器修改
sudo nano /etc/fail2ban/jail.local
finalshell 定位文件、下载、修改、保存(适合小白)
3. 编辑自定义规则与 SSH 监控
打开
/etc/fail2ban/jail.local,将
[DEFAULT]
和
[sshd]
部分修改或确认为以下内容:
[DEFAULT]
# 白名单:绝对不会被封禁的 IP,多个 IP 用空格隔开。支持 IP 段(如 218.212.87.0/24)
ignoreip = 127.0.0.1/8 ::1 218.212.87.152
bantime = 999d # 只要被抓,直接封 999 天
findtime = 10m # 10 分钟内统计错误次数
maxretry = 2 # 输错 2 次密码就封禁
[sshd]
enabled = true # 必须设置为 true 才能启用 SSH 防护
port = 23456 # ⚠️如果你修改了 SSH 端口,这里必须改成你的新端口
logpath = %(sshd_log)s
backend = %(sshd_backend)s
修改完成后,重启服务生效:
sudo systemctl restart fail2ban
4. 验证白名单是否生效
查看全局默认白名单
sudo fail2ban-client get-default ignoreip
正确输出应包含你的 IP,例如:['127.0.0.0/8', '::1', '218.212.87.152']
5. Fail2ban 日常运维命令
Fail2ban 提供了强力的命令行工具
fail2ban-client:
-
查看当前有哪些“监狱”正在运行:
sudo fail2ban-client status输出示例:Jail list: sshd
-
查看某个具体监狱的详细战果(如 sshd):
sudo fail2ban-client status sshd
可以看到当前被封禁的 IP 列表 (Banned IP list)
- 手动解封某个 IP(误报救援):
sudo fail2ban-client set sshd unbanip 你的IP地址
-
手动强制封禁某个恶意 IP:
sudo fail2ban-client set sshd banip 想要封禁的IP地址
四、 常用运维辅助命令
-
查看 VPS 当前使用的时区与时间:
timedatectl -
查看 Fail2ban 的攻击与封杀日志:
tail -f /var/log/fail2ban.log
评论
发表评论