编写syslog服务器,实现告警自动化推送(Python)

在安全运营中,实现对IPS,IDS,蜜罐等等的告警的自动化推送,可以大大提高我们的工作效率,做到对告警的及时分析和处置。

告警的自动推送方式有很多种,比较常见的有微信机器人推送和邮件推送
下面以实现邮件自动化推送为例

# -*- coding: utf-8 -*-
"""
Created on Thu Oct 12 10:43:39 2023

@author: nexus
"""

import socket
import time
import smtplib
import email.utils
from email.mime.text import MIMEText
import threading
import queue


udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp.bind(('0.0.0.0',514))#绑定514端口
q=queue.Queue()#日志队列

def sendmail(msg): #发送日志邮件功能
    message = MIMEText(msg)#正文
    message['To'] = email.utils.formataddr(('nexus', '接收者邮箱'))#接收者名称和邮箱
    message['From'] = email.utils.formataddr(('nexus', '发送者邮箱'))#发送者名称和邮箱
    message['Subject'] = '蜜罐告警'#主题
    server = smtplib.SMTP_SSL('smtp.qq.com', 465) #smtp服务器
    server.login('发送者邮箱','邮箱授权码')#邮箱授权
    server.set_debuglevel(False)
    try:
        server.sendmail('发送者邮箱',['接收者邮箱'],msg=message.as_string())
    finally:
        server.quit()


def SyslogServer(): #syslog服务器,接收日志,存入日志队列
    while True:
        rec_msg, addr = udp.recvfrom(2048)
        smsg=rec_msg.rstrip(b'\x00').decode('utf-8','ignore')
        q.put(smsg)

            
def smail(): #为了避免邮件发送频繁把邮箱打爆,设置为每隔20秒就取出日志队列全部日志并推送
    while True:
        time.sleep(20);
        msg=""
        while q.empty() == False:
            smsg=q.get();
            msg =  msg+"\n" +"时间:"+smsg.split("- - -",1)[0].split(" ")[1]+"\n"+"事件:"+smsg.split("- - -",1)[1]
        if msg != "":
            sendmail(msg)
            print('msg from client:', msg)

def smail50():#队列存储的日志满50条就推送出去
    while True:
        if q.qsize() >= 50:
            msg1=""
            while q.empty() == False:
                smsg=q.get();
                msg1 =  msg1+"\n" +"时间:"+smsg.split("- - -",1)[0].split(" ")[1]+"\n"+"事件:"+smsg.split("- - -",1)[1]
            sendmail(msg1)
            print('msg from client:', msg1)

if __name__=='__main__':
    t1=threading.Thread(target=smail);
    t1.start();
    t2=threading.Thread(target=smail50);
    t2.start();
    SyslogServer();
    
    

下面我们发送一些告警日志测试下效果

服务器端
在这里插入图片描述
邮箱端

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值