使用mozdef发送消息/事件的客户端库

mozdef_client的Python项目详细描述


mozdef_客户端是一个Python库,用于从Python发送事件信息 软件到MozDef

这个库执行诸如消息预格式化和验证等功能, 除了使用提供的事件将事件实际发布到mozdef之外 集合URL。

库支持提交以下mozdef事件类型,以及 将在将来添加

  • 一般事件
  • 合规事件
  • 漏洞事件
  • 资产提示事件

这个库以前被称为mozdef_lib,但为了清晰起见,它被重命名了。 以前版本的库可以在mozdef_lib找到。

安装

作为Python模块

要使用setup.py将mozdef_客户端作为模块安装,请执行以下操作 可以使用。

make install

或者,要创建一个RPM/debian包并安装该包:

make rpm
make deb
rpm -i <package.rpm>
dpkg -i <package.deb>

作为子模块

添加到您的项目中:

git submodule add https://github.com/gdestuynder/mozdef_client
git commit -a

python依赖项

  • 请求未来(可选但推荐,否则事件是同步的)
  • 皮茨
  • boto3(用于AWS支持)

用法

下面是提交通用mozdef事件的示例。

import mozdef_client
msg = mozdef_client.MozDefEvent('https://127.0.0.1:8443/events')
msg.summary = 'a test message'
msg.tags = ['tag1', 'tag2']
msg.details = {'hostname': 'test', 'alert': True}
msg.send()

在这种情况下,还可以另外将消息发送到syslog 它会变平的

import mozdef_client
msg = mozdef_client.MozDefEvent('https://127.0.0.1:8443/events')
msg.summary = 'a test message'
msg.tags = ['tag1', 'tag2']
msg.details = {'hostname': 'test', 'alert': True}
msg.set_send_to_syslog(True)
msg.send()

# Or optionally, if you only want to send to syslog.
import mozdef_client
msg = mozdef_client.MozDefEvent('https://127.0.0.1:8443/events')
msg.summary = 'a test message'
msg.tags = ['tag1', 'tag2']
msg.details = {'hostname': 'test', 'alert': True}
msg.set_send_to_syslog(True, only_syslog=True)
msg.send()

下面是如何发送到AWS中的Sqs队列请注意,出于兼容性目的,将忽略URL

import mozdef_client
msg = mozdef_client.MozDefEvent('https://127.0.0.1:8443/events')
msg.summary = 'a test message'
msg.tags = ['tag1', 'tag2']
msg.details = {'hostname': 'test', 'alert': True}
msg.set_send_to_sqs(True)
msg.set_sqs_queue_name('my_queue')
msg.set_sqs_region('us-west-1')
msg.set_sqs_aws_account_id('012345678901') # Not required if the SQS queue is in the local AWS account
# Note that unlike syslog this will NEVER send to MozDef HTTP (URL is ignored)
msg.send()

符合性事件(MozDefCompliance())的发送方式与 一般事件。通常会设置详细信息和标记。细节必须 遵循符合性事件格式,否则验证将失败。

通过设置日志提交漏洞事件 对象到表示事件的dict的属性。这句话是 全部转换为事件。以下是 漏洞事件

import mozdef_client
msg = mozdef_client.MozDefVulnerability('https://127.0.0.1:8443/compliance')
msg.log = vuln_msg
msg.send()

提示事件的操作类似于一般事件,但设置了一些默认字段 为你。

import mozdef_client
msg = mozdef_client.MozDefAssetHint('https://127.0.0.1:8443/events')
msg.summary = 'new host detected'
msg.details = {'hostname': 'test'}
msg.send()

对于一般事件消息,summary字段是唯一的必需字段 必须在提交之前在事件上设置。合规性和脆弱性 事件具有特定的格式,并且需要存在多个默认字段。 在提交之前。库中的验证函数将引发 如果出现错误条件(例如提交 无效消息)。

对于一般事件消息,通常 调用send()之前修改include:

  • 。详细信息(dict)
  • 摘要(字符串)
  • 。标记(列表)

此外,对于事件消息,set_severity()和set_category()方法可以是 用于更改消息的严重性和类别category参数是 字符串值,严重性可以是以下值之一。

  • mozdefent.severity_信息
  • mozdefent.severity_警告
  • mozdefent.SEVERITY严重
  • mozdefent.severity_错误
  • mozdefent.severity_调试

对于符合性和漏洞事件,您通常将在 .log对象的成员,它是dict。

关于syslog兼容性的说明

当使用syslog兼容模式时,json消息被展平为 一条线。与消息关联的严重性也将被转换 当消息发送到syslog时,进入syslog严重性。

import mozdef_client
msg = mozdef_client.MozDefEvent('https://127.0.0.1:8443/events')
msg.summary = 'a test event'
msg.tags = ['generic', 'test']
msg.details = {'one': 1, 'two': 'two'}
msg.set_severity(MozDefEvent.SEVERITY_CRIT)
msg.set_send_to_syslog(True, only_syslog=True)
msg.send()
Mar  6 09:05:48 hostname mozdef_client.py: {"category": "event", "processid": 8095, "severity": "CRIT", "tags": ["generic", "test"], "timestamp": "2015-03-06T15:05:48.226939+00:00", "hostname": "hostname", "summary": "a test event", "processname": "mozdef_client.py", "details": {"two": "two", "one": 1}}

证件办理

在使用自签名证书进行测试期间,不验证 证书。应在生产中启用证书验证;这可以 通过使用布尔参数对事件调用set_verify()方法来完成

使用系统上的默认证书路径验证证书。如果 要指定证书要使用,请将其与set_verify_path()一起传递 方法调用send()之前。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在数据库中存储工作日数据以及开始时间和结束时间?   mysql Java JPA内部联接查询不起作用   java MQ消息在不同的客户端应用程序中显示不同   javascript如何在xPage上提高typeAhead性能?   java在尝试保存EditText时无法暂停   mongodb“未能使用带参数的构造函数NO_构造函数实例化java.util.List”,   java如何修改使IllegalArgumentException:列“\u id”不存在的游标   转换Android。网Uri到Java。伊奥。输入流   java NetBeans RCP居中弹出窗口无法按预期工作   java将sql开发人员与netbeans连接起来   带有xmldsig签名的java JAXB编组   java ORACLE JDBC批处理执行不会返回受影响行的实际计数   java无法理解如何在由swagger自动生成的jaxrs服务器中访问请求头   java如何处理漏洞CVE20181258,同时将Spring安全版本5与外部客户端(最新版本)一起使用?   JavaSpring数据JPA存储库多租户单模式技术