实现Linux SSH登录提醒并发送消息到企业微信群
为了在没有安装面板的Linux服务器上实现SSH登录提醒并通过企业微信群告警,我们可以通过在/etc/profile.d/
目录下创建一个shell脚本,在用户每次登录SSH时自动发送通知到企业微信群。
01. 技术原理
在Linux中,/etc/profile.d/
目录用于存放系统级的脚本文件,这些脚本文件会在用户登录时自动执行。通过在该目录中添加自定义的shell脚本,可以实现SSH登录时执行的任务。
02. 企业微信群机器人
首先,需要创建一个企业微信群机器人。你可以按照以下步骤操作:
- 登录企业微信的管理后台,找到你要发送消息的群组。
- 添加一个“群机器人”,获取Webhook地址。具体教程可参考企业微信群机器人文档。
- 获取到的Webhook地址形如:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxx
。
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. 验证效果
- 退出当前SSH会话,然后重新使用SSH登录服务器。
- 登录后,企业微信群将收到如下格式的通知:
服务器远程登录提醒
> 服务器IP: 110.110.110.110
> 客户端IP: 192.168.1.100
> 登录用户: root
> 登录时间: 19 Sep 2023, Tue 10:30:00 PM
每次有人通过SSH登录服务器时,群里都会收到这样的提醒,帮助管理员实时掌握登录情况。
05. 总结
通过在Linux服务器上配置一个简单的shell脚本,并结合企业微信的群机器人,可以实现SSH登录的实时告警。这样不仅可以提高安全性,还能及时了解服务器的使用情况。
希望这篇教程对你有所帮助!如果你有更多问题,欢迎随时在评论区提问。