背景

自建的服务器封禁了ssh登录功能,但是希望有人恶意登录进行报警和预警。目前使用Fail2Ban和Bark实现。fail2Ban是一个自动封禁攻击者,支持webhook发送信息的程序,bark是ios app上消息通知的应用。

方案

安装Fail2Ban

安装fail2Ban

1
sudo apt update && sudo apt install fail2ban -y

修改ssh监控规则

1
sudo vim /etc/fail2ban/jail.local

添加

1
2
3
4
5
6
7
8
9
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600
action = webhook

配置webhook

1
sudo vim /etc/fail2ban/action.d/webhook.conf

配置内容

1
2
3
4
5
[Definition]
actionstart =
actionstop =
actionban = curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的机器人KEY" -H "Content-Type: application/json" -d '{"msgtype": "text", "text": {"content": "⚠️ SSH 攻击封禁!IP: <ip>"}}'
actionunban =

重启

1
sudo systemctl restart fail2ban

这样,每当 SSH 发生 3 次失败登录,Fail2Ban 会自动封禁并发送webhook通知!

使用Bark(IOS APP 推送)

Bark 是一个 iOS App,可以让服务器直接推送消息到你的 iPhone,完全免费,延迟极低。
✅ 适用场景

  • 个人使用,不需要额外开发 App
  • 直接使用 API 发送推送,配置简单
  • 延迟低,消息几乎秒级推送到 iPhone
    下载 Bark,在 App Store 搜索 Bark,下载安装,打开 App,点击 **”复制设备地址”**,会得到一个 URL,如:
    1
    https://api.day.app/your_device_key/
    测试:
    1
    curl -X GET "https://api.day.app/your_device_key/服务器告警/SSH失败5次,IP:192.168.1.1"
    如果推送成功,那么配置Fail2Ban进行替换
    1
    sudo vim /etc/fail2ban/action.d/webhook.conf
    内容:
    1
    2
    3
    4
    5
    [Definition]
    actionstart =
    actionstop =
    actionban = curl -X GET "https://api.day.app/your_device_key/SSH警告/IP <ip> 被封禁"
    actionunban =
    重启:
    1
    sudo systemctl restart fail2ban
    最终效果
  • SSH 失败 → Fail2Ban 触发 Webhook → iPhone Push 立即收到通知
  • 无服务器需求,直接调用 Bark API