三网优化 VMrack VPS测试 搭建VPN 3x-ui 1台N节点 小白保姆级教程

VPS 安全与流量防偷跑全攻略

视频将于 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% 的自动化黑客扫描。

  1. 修改配置文件:
sudo nano /etc/ssh/sshd_config
  1. Port 22 改为 Port 23456(记得在下方防火墙放行该端口)。

  2. 重启 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 端口,否则会导致无法远程连接!

  1. 必须:放行你的 SSH 端口(假设你改成了 23456)
sudo ufw allow 23456/tcp
  1. 常用端口放行示例
  2. sudo ufw allow 80/tcp          # HTTP
    

    .

    sudo ufw allow 443/tcp         # HTTPS
    
    1. 删除端口
      查看 端口是以什么规则存在的:
    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
    
    1. 进阶:放行连续的端口范围
sudo ufw allow 8000:8080/tcp   # 批量放行 80008080 的 TCP 端口
sudo ufw allow 5000:5050/udp   # 批量放行 50005050 的 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
    

评论