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

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

实现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 安全 自动化 企业微信 通知

推荐文章

MySQL设置和开启慢查询
2024-11-19 03:09:43 +0800 CST
在 Rust 中使用 OpenCV 进行绘图
2024-11-19 06:58:07 +0800 CST
Golang 中你应该知道的 noCopy 策略
2024-11-19 05:40:53 +0800 CST
纯CSS实现3D云动画效果
2024-11-18 18:48:05 +0800 CST
Go 如何做好缓存
2024-11-18 13:33:37 +0800 CST
HTML + CSS 实现微信钱包界面
2024-11-18 14:59:25 +0800 CST
Go语言SQL操作实战
2024-11-18 19:30:51 +0800 CST
PHP来做一个短网址(短链接)服务
2024-11-17 22:18:37 +0800 CST
Nginx 跨域处理配置
2024-11-18 16:51:51 +0800 CST
手机导航效果
2024-11-19 07:53:16 +0800 CST
Vue3中的v-slot指令有什么改变?
2024-11-18 07:32:50 +0800 CST
对多个数组或多维数组进行排序
2024-11-17 05:10:28 +0800 CST
PostgreSQL日常运维命令总结分享
2024-11-18 06:58:22 +0800 CST
PHP服务器直传阿里云OSS
2024-11-18 19:04:44 +0800 CST
Vue3中如何处理路由和导航?
2024-11-18 16:56:14 +0800 CST
Vue3 vue-office 插件实现 Word 预览
2024-11-19 02:19:34 +0800 CST
维护网站维护费一年多少钱?
2024-11-19 08:05:52 +0800 CST
使用 `nohup` 命令的概述及案例
2024-11-18 08:18:36 +0800 CST
程序员茄子在线接单