监控服务器ssh登录,并发送报警邮件

共计 1477 个字符,预计需要花费 4 分钟才能阅读完成。

最近想监控下云主机的 ssh 登录情况,所以开始写 ssh 登录报警监控。实现方式并不难。

一:邮箱申请开启 SMTP

在邮箱中选择“设置”—–>“账户”

监控服务器 ssh 登录,并发送报警邮件

在如下图处开启 POP3/SMTP 服务,并生成授权码。

监控服务器 ssh 登录,并发送报警邮件

二:修改相关参数

登录要进行 ssh 登录监控的服务器,在 /etc/ssh 创建 ”sshrc“ 文件:

#!/bin/bash
#获取登录者的用户名
user=$USER
#获取登录者的 IP 地址
ip=${SSH_CLIENT%% *}
#获取登录的时间
time=$(date +%F%t%k:%M)
#服务器的 IP 地址
hostname=$(hostname)
echo "content=$time,$user,$ip,$hostname" > log
 
python /etc/ssh/testEmail.py   "$time" "$user" "$ip" "$hostname"

并在如上自定义路径中创建“testEmail.py”文件。

添加颜色部分,按邮箱,授权码,以及相关术语进行修改。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import sys
 
 
def send_mail(dtime,duser,dip,dhostname):
    #基础信息
    # from_addr = input("From:")
    from_addr = "yaohong@qq.com"
    password = "授权码"
    #to_addr = from_addr
    to_addr = "yaohong@qq.com"
    # password = raw_input("Password:")
    # to_addr = input("To:")
     
    def _format_addr(s):
            name, addr = parseaddr(s)
            return formataddr((Header(name, 'utf-8').encode(), addr))
 
    smtp_server = "smtp.qq.com"
        mimetex = '您的机器:',dhostname,',于:',dtime,',被 IP:',dip,'以账号',duser,'进行登录, 请确认是否为公司员工。'
    #构造邮件
    msg = MIMEText(''.join(mimetex),'plain','utf-8')
    msg['From'] = _format_addr("yaohong")
    msg['To'] = _format_addr("yaohong@qq.com")
    msg['Subject'] = Header("来自 yaohong", 'utf-8').encode()
    #发送邮件
    server = smtplib.SMTP_SSL(smtp_server, 465)
    server.set_debuglevel(1)
    server.login(from_addr, password)
    server.sendmail(from_addr, [to_addr], msg.as_string())
    server.quit()
 
 
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])

三:登录检测

安装完后,再次进行 ssh 登录该服务器会收到邮件如下图,则表示 ssh 被监控成功。

监控服务器 ssh 登录,并发送报警邮件
正文完
 0
futurelinux
版权声明:本站原创文章,由 futurelinux 于2024-10-31发表,共计1477字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。