VPS遭受爆破攻击,持续更新公布攻击IP源

今天用AI查了一下vps的运行情况,结果出现了下面的结果

确认这台 VPS 正在遭受大规模 SSH 爆破攻击,而且攻击强度很高。
检查结果
过去 7 天 SSH 日志统计:
密码失败:33,880 次
无效用户名事件:7,014 次
最大攻击源 66.154.112.102 产生了约 25,678 条相关失败事件

于是赶紧安装了Fail2ban 防止爆破 封禁IP用

下面是一键命令,其中有IP白名单,需要自己手动修改一下

我设置的规则是 24小时内ssh登录失败超过10次就永久封禁IP

可根据自己的实际情况进行修改

懒人都是像我这样的,还是建议用密钥登录,禁用用户名密码登录的方式更稳妥

sudo bash <<'SCRIPT'
set -Eeuo pipefail

# 可信IP白名单;多个IP用空格分隔
TRUSTED_IPS="填写自己的IP地址,这里是白名单"

# Fail2ban Jail名称
JAIL_NAME="sshd-password-permanent"

if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请使用 root 用户或 sudo 执行。" >&2
    exit 1
fi

if ! command -v apt-get >/dev/null 2>&1; then
    echo "错误:本脚本仅适用于使用 apt 的 Debian/Ubuntu。" >&2
    exit 1
fi

if ! command -v systemctl >/dev/null 2>&1 ||
   ! command -v journalctl >/dev/null 2>&1; then
    echo "错误:系统必须使用 systemd 和 journald。" >&2
    exit 1
fi

export DEBIAN_FRONTEND=noninteractive

echo "===== 安装 Fail2ban 和 iptables ====="

apt-get update
apt-get install -y fail2ban iptables

install -d -m 0755 \
    /etc/fail2ban/filter.d \
    /etc/fail2ban/jail.d

echo "===== 关闭系统自带的默认 SSH Jail ====="

# 某些 Debian/Ubuntu 默认启用 sshd Jail,
# 但纯 journald 系统可能不存在 /var/log/auth.log,
# 从而导致 Fail2ban 启动失败。
cat > /etc/fail2ban/jail.d/00-disable-default-sshd.local <<'EOF'
[sshd]
enabled = false
EOF

echo "===== 创建全用户名 SSH 密码失败过滤规则 ====="

cat > /etc/fail2ban/filter.d/sshd-password-all-users.conf <<'EOF'
[Definition]
failregex = ^.*sshd(?:\[\d+\])?: Failed password for (?:invalid user )?\S+ from <HOST> port \d+ ssh\d*$
ignoreregex =
EOF

echo "===== 创建永久封禁 Jail ====="

cat > /etc/fail2ban/jail.d/sshd-password-permanent.local <<EOF
[${JAIL_NAME}]
enabled = true

filter = sshd-password-all-users
backend = systemd

journalmatch = _SYSTEMD_UNIT=ssh.service + _SYSTEMD_UNIT=sshd.service

port = ssh
protocol = tcp

# 同一IP失败10次
maxretry = 10

# 统计周期为24小时
findtime = 86400

# 永久封禁
bantime = -1

# 永不封禁的可信IP
ignoreip = 127.0.0.1/8 ::1 ${TRUSTED_IPS}

banaction = iptables-multiport
EOF

echo "===== 检查 Fail2ban 配置 ====="

fail2ban-client -t

echo "===== 设置开机启动并重启 Fail2ban ====="

systemctl enable fail2ban
systemctl restart fail2ban

sleep 2

echo "===== 验证 Fail2ban 服务 ====="

if ! systemctl is-active --quiet fail2ban; then
    echo "错误:Fail2ban 启动失败,最近日志如下:" >&2
    journalctl -u fail2ban -n 80 --no-pager >&2
    exit 1
fi

if ! fail2ban-client status "${JAIL_NAME}" >/dev/null 2>&1; then
    echo "错误:Jail ${JAIL_NAME} 没有成功启用。" >&2
    fail2ban-client status >&2 || true
    exit 1
fi

echo
echo "===== 部署成功 ====="

fail2ban-client status "${JAIL_NAME}"

echo
echo "===== 当前生效参数 ====="

printf '最大失败次数 maxretry = '
fail2ban-client get "${JAIL_NAME}" maxretry

printf '统计周期 findtime = '
fail2ban-client get "${JAIL_NAME}" findtime

printf '封禁时间 bantime = '
fail2ban-client get "${JAIL_NAME}" bantime

echo
echo "白名单:"
fail2ban-client get "${JAIL_NAME}" ignoreip

echo
echo "================================================"
echo "Fail2ban 部署完成"
echo "监控范围:所有用户名的 SSH 密码验证失败"
echo "处罚条件:同一IP在24小时内失败达到10次"
echo "封禁期限:永久"
echo "可信白名单:127.0.0.1/8 ::1 ${TRUSTED_IPS}"
echo "================================================"
SCRIPT

顺手做了一个攻击IP公布网站,这是我几十台vps采集上报的真实攻击源
也有可能是肉鸡,我就不好分辨了,有兴趣的可以去看看

7 个赞

感谢分享实战经验

1 个赞

“慢藏诲盗,冶容诲淫”,是你的 VPS 的什么特性吸引了它们来攻击你?

1 个赞

可以 给新手小白学习到了 :ac01:

1 个赞

这是常规操作,不叫攻击。
况且7天才3w。一天3w都有。

我已经在帮你攻击对方了

:xhj45:

:ac32:

以暴制暴 :xhj003:

才3万多次,这不是常规互联网噪声吗?
我家里的电脑SSH登陆失败日志一天10万次都正常,开22端口就免不了被扫

都让AI给你查了,还自己手写什么脚本,直接让AI帮你装好不就完了,大部分情况下一个fail2ban就足够了

学习一下

1 个赞

不太懂怎么玩?:joy:

1 个赞

先换个端口,别用22

给22端口开个白名单只让你自己上去不行吗

一台机器也就65535个端口 全部给你扫一遍

他们主要针对大厂 VPS,甚至 Cloudflare 都不放过

:ac01:

服务器两天连不上,直接重装系统了。