监控服务器ssh登录,并发送报警邮件
最近想监控下云主机的ssh登录情况,所以开始写ssh登录报警监控。实现方式并不难。
一:邮箱申请开启SMTP
在邮箱中选择“设置”----->“账户”
在如下图处开启POP3/SMTP服务,并生成授权码。
二:修改相关参数
登录要进行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被监控成功。