使用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()之前。