HW支持-定时扫描局域网内所有设备MAC不在白名单则邮件提醒

server/2024/10/23 6:22:31/

需求背景

护网行动,是公安部组织的安全攻防演练活动。 曾经有被新安装的校园卡刷卡机黑到内网的经历,所以尽可能在护网期间能关就关,不新增设备。发现异常接入内网的设备即时进行提醒和处理。

实现步骤

  1. MAC地址白名单放在一个txt文件中,一行一个。也可以改成在数据库中提供一个web界面进行维护。因为是临时性的,怎么方便怎么来。
  2. 通过kamene库扫描内网当前存活设备的MAC。
  3. 与白名单的MAC地址进行匹配。
  4. 不存在的MAC地址,发送邮件通知。也可以改成成发送钉钉、企业微信webhook消息通知。
  5. 把代码在Crontab中设置定时运行策略运行即可。

直接上代码

#!/usr/bin/python
#encoding=utf-8
#Author:Evan
#Mail:evan@chengwenit.comfrom kamene.all import srp, Ether, ARP
import datetime
import sys
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header# 读取白名单
whitelist0=[]
with open('maclist.txt','r',encoding='UTF-8') as f:for line in f:whitelist0.append(line.strip('\n'))
f.close()# 白名单列表转大写
whitelist1 = [x.upper() for x in whitelist0]# 定义扫描的网卡
# eth000="Realtek USB GbE Family Controller"# 定义扫描IP段
IpScan = '192.168.168.0/22'
# 定义扫描vlan
vlan ='vlan1'
# arp扫描
#ans,unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=IpScan),iface=eth000 timeout=15)
ans,unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=IpScan),timeout=10)# 定义一个空列表,存灰名单
Greylist=[]
# 扫描MAC,如果不存在白名单中,则写入列表结果存入列表
for send, rcv in ans:if rcv.hwsrc.upper() not in whitelist1:Greylist.append([rcv.psrc,rcv.hwsrc])# 定义时间变量 日志记录扫描时间
he=datetime.datetime.now().strftime("%Y-%m-%d")
ho=datetime.datetime.now().strftime('%H:%M:%S')#stmp服务器设置
mail_host = 'mail.chengwenit.com'
mail_user = 'chwbot@chengwenit.com'
mail_pwd = 'password'#抄送
mail_cc = ['ad@chengwenit.com']
#主送
mail_to = ['evan@chengwenit.com','evan@lianxiao.cloud']
#表头信息
msg = MIMEMultipart('alternative')
msg['From'] = mail_user
msg['Subject'] = vlan +'MAC地址不在白名单预警' + he + ' ' + ho
msg['To'] = ",".join( mail_to )
msg['Cc'] = ",".join( mail_cc )
#定义正文
text = "\n".join('%s' %id for id in Greylist)
#定义邮件内容的格式
part1 = MIMEText(text, 'plain')  
#把part1生成到邮件中 
msg.attach(part1)  # 发送邮件
try:s = smtplib.SMTP()s = smtplib.SMTP_SSL(mail_host, 465 )s.connect(mail_host)#logins.login(mail_user, mail_pwd )#send mails.sendmail(mail_user, mail_to, msg.as_string())s.close()print ('success')
except Exception as e:print ('Exception: ', e)

http://www.ppmy.cn/server/134095.html

相关文章

搭建自己的Docker(容器)镜像加速器

容器镜像加速服务器 本Github项目可快速部署容器镜像加速服务器。 由于配置格式及docker客户端配置限制, 本项目仅适用于使用containerd runtime的容器镜像加速。 本项目两个分支: main: 使用nginx作为反向代理traefik: 使用traefik进行流量路由 前置…

索引选择的艺术:MySQL为何青睐B+树?

索引选择的艺术:MySQL为何青睐B树? 案例数据:表a有如下两个字段,且两个字段数据如下 字段a(主键)1234567字段b1293118366969 接下来将以常见的几种数据结构来看看进行比对,为什么MySQL最终使用了BTree(B…

知识图谱推理(论文复现)

本文所涉及所有资源均在 传知代码平台 可获取。 目录 1. 论文概述 2. 论文方法 3. 实验部分

Elasticsearch 在linux部署 及 Docker 集群部署详解案例示范

1. 在 CentOS 上安装和配置 Elasticsearch 在 CentOS 系统下,安装 Elasticsearch 主要分为以下步骤: 1.1 准备工作 在开始安装之前,确保你的系统满足以下基本条件: CentOS 版本要求:推荐使用 CentOS 7 及以上版本。…

【Vulnhub靶场】Kioptrix Level 5

目标 本地IP:192.168.118.128 目标IP:192.168.118.0/24 信息收集 nmap探测存活主机,扫全端口,扫服务 首先探测到目标ip为:192.168.118.136 nmap -sP 192.168.118.0/24nmap -p- 192.168.118.136nmap -sV -A 192.168.…

达梦数据库使用 Flyway

参考:db-migration: Flyway、Liquibase 扩展支持达梦(DM)数据库、南大通用(GBase 8s)数据库,并支持 Flowable 工作流。 需要注意的是,下面两个依赖的顺序不能颠倒,因为有冲突的类 …

计算机毕业设计Python+Spark知识图谱课程推荐系统 课程用户画像系统 课程大数据 课程爬虫 课程大屏 mooc慕课推荐系统 大数据毕业设计

《PythonSpark知识图谱课程推荐系统》开题报告 一、研究背景与意义 随着互联网技术的快速发展,在线教育平台已成为人们获取知识、提升技能的重要途径。然而,面对海量的课程资源,用户往往难以快速找到符合自己兴趣和需求的课程。传统的课程推…

代码随想录算法训练营第二十二天 | 回溯理论基础 77.组合 216.组合总和Ⅲ 17.电话号码的字母组合

回溯理论基础: 回溯效率: 回溯本质上是穷举,从所有答案中选出想要的。会增加一些剪枝的操作 回溯法解决的问题: 组合:N个数中找k个数的集合切割:一个字符串按一定规则有几种切割方式子集:一个N个数的集…