利用BARK和Telebot进行VPS实时预警推送
前言
在服务器的日常维护和蓝队的日常监控中,经常需要对服务器出现的各种问题进行及时的预警推送。国外的服务器推荐使用telebot,而国内由于特殊的网络环境,则推荐使用BARK、Chanify等进行推送。
Telebot推送
首先需要一个telegram的账号,点此 。在对话框中输入/newbot,根据提示输入机器人的name和username,创建完成后会返回一个token,务必牢记。token类似如下:
5229xxxxxx:AAFAxxxxxxxxxxxxxxxxx1MJ4OY0
接着在该机器人的对话框下输入任意信息,接着按照以下方式获取自己telegram的用户id
# curl方式。{token}替换为上面的token
proxychains4 curl https://api.telegram.org/bot{token}/getUpdates
# python方式。
import requests
resp = requests.get("https://api.telegram.org/bot{token}/getUpdates")
print(resp.json())
请求后会返回类似如下json内容
{"ok":true,"result":[{"update_id":324xxxx11,"message":{"message_id":3,"from":{"id":100xxxx661,"is_bot":false,"first_name":"xxxx","last_name":"xxxx","username":"xxxx","language_code":"zh-hans"},"chat":{"id":100xxxx661,"first_name":"xxxx","last_name":"xxxx","username":"xxxx","type":"private"},"date":1647093375,"text":"haha"}}]}%
其中的id字段是我们所需要的,既我们自己的telegram账号的chat_id。
python的简单用法如下:
安装依赖 pip install pyTelegramBotAPI
import telebot
bot = telebot.TeleBot(token="522xxxx:xxxxxxxxxOY0")
bot.send_message(chat_id="xxxxxx",text="haha123")
走代理跑
proxychains4 python3 telebot.py

可以看到,机器人已经给我们发来了指定的信息。当然除了发送文本信息,还可以发送图片、链接等,但这个不常用,就不做过多介绍了,各位师傅可以自己探索。
对于境外vps或者是网络环境允许的情况来说,Telebot是最好不过的预警推送方式。但是由于国内复杂的网络环境,这显然是不合理的。
因此这里尝试使用BARK这个免费开源的消息推送工具进行预警推送,虽然其功能较Telebot简陋一些,但起到基础的消息推送功能还是没有问题的。
BARK推送
先来看BARK的用法。BARK他会给每个账号提供一个私有ID,以GET方式请求 加上一定量参数即可。但同时带来的缺点就是由于get方式请求的url长度有限,因此不宜推送过长的内容。如对此有特殊要求,可使用如Chanify等其他app,但使用方式大同小异。
如果对于隐私要求高,可以在自己的私人服务器进行部署
推送方式
参数
| 参数名 | 解释 | 值 | 其他 |
|---|---|---|---|
| sound | 推送铃声 | minuet、alarm等 | 无 |
| isArchive | 自动保存通知消息 | 1、0 | 设置为1则会自动保存,其他值则不会 |
| icon | 推送图标 | [url] | 需IOS15或以上 |
| group | 推送消息分组 | [groupName] | ![]() |
| level | 时效性通知 | active、timeSensitive、passive | active:系统立即亮屏;timeSensitive:时效性通知,可在专注模式下显示通知;passive:仅将通知添加到通知列表,不会亮屏显示。 |
| url | 跳转 | [url] | 携带该参数时,点击推送会跳转到这个URL |
| copy | 拷贝 | [String] | 携带该参数时,将只复制copy参数的值 |
| badge | 推送角标 | [Num] | 推送角标 |
测试
利用Python进行测试:
import requests
url = "https://api.day.app/6cPxxxxxxxxxxxF4/" #此处填入私有ID
def sendMessage(title,text,icon=""):
requests.get(f'{url+title}/{text}?icon={icon}')
sendMessage(title='Warning',text='Your server has been invaded',icon="https://th.bing.com/th/id/OIP.PnLgsfgLeK-s0mUrQOeonwAAAA?w=176&h=180&c=7&r=0&o=5&dpr=1.8&pid=1.7")
实战
写个shell脚本,让每次终端连接时都执行,放到/etc/profile.d中。这样当我们的服务器被意外连接时就能及时收到推送。
注意,由于url中不能存在空格,因此要把空格进行url编码
echo $string | sed 's/ /%20/g'
#!/bin/bash
message="主机名:$(hostname) 时间:$(TZ=UTC-8 date) 登陆用户:$(whoami) 当前所有登陆用户:$(who) 其他信息:$(w|awk 'BEGIN{OFS=" "}{print $1,$8}')"
curl "https://api.day.app/6cxxxxxxxxxF4/$(echo $message | sed 's/ /%20/g')?icon=https://th.bing.com/th/id/OIP.PnLgsfgLeK-s0mUrQOeonwAAAA?w=176&h=180&c=7&r=0&o=5&dpr=1.8&pid=1.7" &>/dev/null
这样,当某一个用户被远程登录连接时我们的手机就会收到实时的预警推送。
拓展
另外可以结合ssh蜜罐技术,或者是结合系统和中间件日志,对网页被篡改、被挂黑链、数据库篡改、主机出现其他用户等各种异常情况进行及时预警。
利用BARK和Telebot进行VPS实时预警推送的更多相关文章
- 【js学习】js连接RabbitMQ达到实时消息推送
js连接RabbitMQ达到实时消息推送 最近在自己捯饬一个网站,有一个功能是需要后端处理完数据把数据发布到MQ中,前端再从MQ中接收数据.但是前端连接MQ又成了一个问题,在网上搜了下资料,点进去一篇 ...
- 开源实时消息推送系统 MPush
系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的 ...
- 基于socket.io的实时消息推送
用户访问Web站点的过程是基于HTTP协议的,而HTTP协议的工作模式是:请求-响应,客户端发出访问请求,服务器端以资源数据响应请求. 也就是说,服务器端始终是被动的,即使服务器端的资源数据发生变化, ...
- Worktile中百万级实时消息推送服务的实现
Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/
- C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表
本文主要是我在刚开始学习 SignalR 的技术总结,网上找的学习方法和例子大多只是翻译了官方给的一个例子,并没有给出其他一些经典情况的示例,所以才有了本文总结,我在实现推送简单的数据后,就想到了如何 ...
- 实时数据推送webSocket
实时数据推送 在Web或移动项目中,服务器向客户端实时推送消息是一种常见的业务需求. 实现方式 Polling:轮询(俗称“拉”),即定期重新请求数据. Long-Polling:长轮询,是 Poll ...
- 未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~
前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...
- 我有 7种 实现web实时消息推送的方案,7种!
技术交流,公众号:程序员小富 大家好,我是小富- 我有一个朋友- 做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里 ...
- 前端 与 RabbitMQ 实时消息推送实践
web 页面的未读消息(小红点)怎么实现比较简单,之前说过可以用 rabbitmq 的 MQTT 协议做智能家居的指令推送,里边还提到过能用 MQTT 协议做 web 的消息推送,而未读消息(小红点) ...
- 7种实现web实时消息推送的方案
做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里我帮他整理了一下几种方案,并简单做了实现. 什么是消息推送(pus ...
随机推荐
- [转帖]Linux文件权限除了r、w、x外还有s、t、i、a权限
https://www.cnblogs.com/hiyang/p/15122714.html setuid 是 set user ID upon execution 再次缩写为suid setgid ...
- [转帖]ORACLE USERENV函数
https://www.cnblogs.com/youngerger/p/8862210.html ORACLE USERENV函数 USERENV返回关于当前会话的信息.此信息可以用于编写一个应用程 ...
- [转帖]创建lvm
https://www.jianshu.com/p/bf6b92d73b9b 一.环境介绍 服务器中有sda,sdb,sdc,sdd,sde,sdf六块硬盘,其中sda作为系统盘已经安装了系统,需要将 ...
- [转帖]Intel甘拜下风,挤牙膏比不过兆芯CPU
https://baijiahao.baidu.com/s?id=1735997557665412214 本文比较长,有万字左右,因此在前面先把小标题集中亮个相. 即使大家一晃而过,我也要让精心拟 ...
- [转帖]/etc/profile和/etc/environment的区别
时间 2019-11-07 标签 profile environment 区别 繁體版 原文 https://my.oschina.net/u/2885925/blog/2989579 /etc ...
- C#开源免费的开发效率提升利器:DevToys开发人员的瑞士军刀!
前言 今天分享一款基于C#开源(MIT License开源协议).免费.离线.功能齐全的Windows开发者工具箱,号称开发人员的瑞士军刀,可以帮助开发者完成日常工作开发中常用功能:DevToys. ...
- MySQL知识点总结(完整版)
MySQL学习笔记 登录和退出MySQL服务器 # 登录MySQL $ mysql -u root -p12345612 # 退出MySQL数据库服务器 exit; 基本语法 -- 显示所有数据库 s ...
- 【JS 逆向百例】Fiddler 插件 Hook 实战,某创帮登录逆向
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...
- 什么是ChatGPT,什么是大模型prompt
什么是ChatGpt ChatGPT是一个由美国的OpenAI公司开发的聊天机器人,它使用了大型语言模型,现在有GPT-3.GPT-3.5.GPT-4.0多个版本,目前还在快速发展,通过监督学习和强化 ...
- Docker系列教程01--简介
Docker 入门教程 作者: 阮一峰 日期: 2018年2月 9日 2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么, ...
