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

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

实现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-18 14:35:19 +0800 CST
一个数字时钟的HTML
2024-11-19 07:46:53 +0800 CST
MySQL 优化利剑 EXPLAIN
2024-11-19 00:43:21 +0800 CST
PHP 代码功能与使用说明
2024-11-18 23:08:44 +0800 CST
Vue3 中提供了哪些新的指令
2024-11-19 01:48:20 +0800 CST
Vue3中如何处理跨域请求?
2024-11-19 08:43:14 +0800 CST
liunx服务器监控workerman进程守护
2024-11-18 13:28:44 +0800 CST
Golang 中你应该知道的 Range 知识
2024-11-19 04:01:21 +0800 CST
Vue3中如何实现插件?
2024-11-18 04:27:04 +0800 CST
LangChain快速上手
2025-03-09 22:30:10 +0800 CST
php strpos查找字符串性能对比
2024-11-19 08:15:16 +0800 CST
为什么要放弃UUID作为MySQL主键?
2024-11-18 23:33:07 +0800 CST
Vue3中如何处理权限控制?
2024-11-18 05:36:30 +0800 CST
Go语言中实现RSA加密与解密
2024-11-18 01:49:30 +0800 CST
Flet 构建跨平台应用的 Python 框架
2025-03-21 08:40:53 +0800 CST
Redis函数在PHP中的使用方法
2024-11-19 04:42:21 +0800 CST
Elasticsearch 聚合和分析
2024-11-19 06:44:08 +0800 CST
Elasticsearch 条件查询
2024-11-19 06:50:24 +0800 CST
程序员茄子在线接单