编程 实现Linux SSH登录提醒并发送消息到企业微信群

2024-11-18 01:03:17 +0800 CST views 527

实现Linux SSH登录提醒并发送消息到企业微信群

为了在没有安装面板的Linux服务器上实现SSH登录提醒并通过企业微信群告警,我们可以通过在/etc/profile.d/目录下创建一个shell脚本,在用户每次登录SSH时自动发送通知到企业微信群。

01. 技术原理

在Linux中,/etc/profile.d/目录用于存放系统级的脚本文件,这些脚本文件会在用户登录时自动执行。通过在该目录中添加自定义的shell脚本,可以实现SSH登录时执行的任务。

02. 企业微信群机器人

首先,需要创建一个企业微信群机器人。你可以按照以下步骤操作:

  1. 登录企业微信的管理后台,找到你要发送消息的群组。
  2. 添加一个“群机器人”,获取Webhook地址。具体教程可参考企业微信群机器人文档
  3. 获取到的Webhook地址形如:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxx
    images

03. 实现方法

以下是实现SSH登录告警的具体步骤和shell脚本:

1. 编写Shell脚本

在Linux服务器上,创建一个Shell脚本,内容如下:

#!/bin/bash

# 获取登录信息
login_ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
login_date="$(date +"%e %b %Y, %a %r")"
login_name="$(whoami)"
server_ip="$(hostname -I | awk '{print $1}')"

# 企业微信群Webhook地址
webhook_url="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxx"

# 发送登录信息到企业微信群
curl "$webhook_url" -H 'Content-Type: application/json' -d "{
    \"msgtype\": \"markdown\",
    \"markdown\": {
        \"content\": \"服务器远程登录提醒\\n> 服务器IP: <font color='warning'>$server_ip</font>\\n> 客户端IP: <font color='warning'>$login_ip</font>\\n> 登录用户: <font color='warning'>$login_name</font>\\n> 登录时间: <font color='warning'>$login_date</font>\"
    }
}"

2. 配置脚本

  • login_ip:从$SSH_CONNECTION变量中提取客户端IP地址。
  • login_date:使用date命令获取登录的时间和日期。
  • login_name:使用whoami命令获取当前登录的用户名。
  • server_ip:获取服务器的本地IP地址。

注意:请将webhook_url中的xxxxxxxxxxxxxxx替换为你从企业微信获取的机器人Webhook地址。

3. 放置脚本到/etc/profile.d/

将编写好的shell脚本保存为.sh文件,并放置在/etc/profile.d/目录下。脚本的路径可以是:

sudo nano /etc/profile.d/ssh_login_notify.sh

粘贴上面的shell脚本,保存并退出。

4. 更改权限

确保脚本有可执行权限:

sudo chmod +x /etc/profile.d/ssh_login_notify.sh

04. 验证效果

  1. 退出当前SSH会话,然后重新使用SSH登录服务器。
  2. 登录后,企业微信群将收到如下格式的通知:
服务器远程登录提醒
> 服务器IP: 110.110.110.110
> 客户端IP: 192.168.1.100
> 登录用户: root
> 登录时间: 19 Sep 2023, Tue 10:30:00 PM

每次有人通过SSH登录服务器时,群里都会收到这样的提醒,帮助管理员实时掌握登录情况。

05. 总结

通过在Linux服务器上配置一个简单的shell脚本,并结合企业微信的群机器人,可以实现SSH登录的实时告警。这样不仅可以提高安全性,还能及时了解服务器的使用情况。

希望这篇教程对你有所帮助!如果你有更多问题,欢迎随时在评论区提问。

复制全文 生成海报 Linux 安全 自动化 企业微信 通知

推荐文章

Vue3中哪些API被废弃了?
2024-11-17 04:17:22 +0800 CST
Vue3中的v-model指令有什么变化?
2024-11-18 20:00:17 +0800 CST
filecmp,一个Python中非常有用的库
2024-11-19 03:23:11 +0800 CST
JavaScript设计模式:适配器模式
2024-11-18 17:51:43 +0800 CST
windon安装beego框架记录
2024-11-19 09:55:33 +0800 CST
pin.gl是基于WebRTC的屏幕共享工具
2024-11-19 06:38:05 +0800 CST
免费常用API接口分享
2024-11-19 09:25:07 +0800 CST
Golang Select 的使用及基本实现
2024-11-18 13:48:21 +0800 CST
如何优化网页的 SEO 架构
2024-11-18 14:32:08 +0800 CST
基于Webman + Vue3中后台框架SaiAdmin
2024-11-19 09:47:53 +0800 CST
Elasticsearch 文档操作
2024-11-18 12:36:01 +0800 CST
robots.txt 的写法及用法
2024-11-19 01:44:21 +0800 CST
虚拟DOM渲染器的内部机制
2024-11-19 06:49:23 +0800 CST
JS中 `sleep` 方法的实现
2024-11-19 08:10:32 +0800 CST
智慧加水系统
2024-11-19 06:33:36 +0800 CST
程序员茄子在线接单