走近OSSIM传感器(Sensor)插件

简介:

走近OSSIM传感器(Sensor)插件

wKiom1bRnFSRrKSbAAO-a_R5GwM387.jpg

 

在上一篇博文介绍完OSSIM架构何组成,接着要介绍它“神秘”的插件,阅读插件前提示您熟练掌握正则表达式。

Sensor启用插件列表,管理它们非常简单:

wKioL1apg_miWfx8ABGxOLOslUo219.gif

下面看看插件全局配置文件

[plugins]

apache=/etc/ossim/agent/plugins/apache.cfg

nmap-monitor=/etc/ossim/agent/plugins/nmap-monitor.cfg

ossec-single-line=/etc/ossim/agent/plugins/ossec-single-line.cfg

ossim-monitor=/etc/ossim/agent/plugins/ossim-monitor.cfg

pam_unix=/etc/ossim/agent/plugins/pam_unix.cfg

ping-monitor=/etc/ossim/agent/plugins/ping-monitor.cfg

prads_eth0=/etc/ossim/agent/plugins/prads_eth0.cfg

ssh=/etc/ossim/agent/plugins/ssh.cfg

sudo=/etc/ossim/agent/plugins/sudo.cfg

suricata=/etc/ossim/agent/plugins/suricata.cfg

whois-monitor=/etc/ossim/agent/plugins/whois-monitor.cfg

wmi-monitor=/etc/ossim/agent/plugins/wmi-monitor.cfg


Sensor插件将预处理数据发往Server,定义如下

[output-server]

enable=True

ip=192.168.91.228

port=40001

send_events=True

 

1. Apache日志处理插件

下面已Apache插件为例,看看插件中的正则表达式:

[0001 - apache-access] 访问日志

event_type=event

regexp=((?P\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(:(?P\d{1,5}))? )?(?P\S+) (?P\S+) (?P\S+) \[(?P\d{2}\/\w{3}\/\d{4}:\d{2}:\d{2}:\d{2})\s+[+-]\d{4}\] \"(?P[^\"]*)\" (?P\d{3}) ((?P\d+)|-)( \"(?P[^\"]*)\" \"(?P[^\"]*)\")?$

src_ip={resolv($src)}

dst_ip={resolv($dst)}

dst_port={$port}

date={normalize_date($date)}

plugin_sid={$code}

username={$user}

userdata1={$request}

userdata2={$size}

userdata3={$referer_uri}

userdata4={$useragent}

filename={$id}


[0002 - apache-error] 错误日志

event_type=event

regexp=\[(?P\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \d{4})\] \[(?P(emerg|alert|crit|error|warn|notice|info|debug))\] (\[client (?P\S+)\] )?(?P.*)

date={normalize_date($date)}

plugin_sid={translate($type)}

src_ip={resolv($src)}

userdata1={$data}

如果您对Apache日志基本格式不太了解请参看《Unix/Linux网络日志分析与流量监控》一书。

 

如果您是通过syslog转发apache日志,那么正则该这样写:

[0001 - apache-syslog-access]
event_type=event
regexp=^\w{3}\s+\d{1,2} \d\d:\d\d:\d\d (?P\S+) \S+: ((?P\S+)(:(?P\d{1,5}))? )?(?P\S+) (?P\S+) (?P\S+) \[(?P\d{2}\/\w{3}\/\d{4}:\d{2}:\d{2}:\d{2})\s+[+-]\d{4}\] \"(?P.*)\" (?P\d{3}) ((?P\d+)|-)( \"(?P.*)\" \"(?P.*)\")?$
src_ip={resolv($src)}
dst_ip={resolv($dst)}
dst_port={$port}
device={resolv($device)}
date={normalize_date($date)}
plugin_sid={$code}
username={$user}
userdata1={$request}
userdata2={$size}
userdata3={$referer_uri}
userdata4={$useragent}
filename={$id}

 

[0002 - apache-syslog-error]
event_type=event
regexp=^(?P\w{3}\s+\d{1,2} \d\d:\d\d:\d\d) (?P\S+) \S+: \[(?P(emerg|alert|crit|error|warn|notice|info|debug))\] (\[client (?P\S+)\] )?(?P.*)
date={normalize_date($date)}
dst_ip={resolv($device)}
device={resolv($device)}
date={normalize_date($date)}
plugin_sid={translate($type)}
src_ip={resolv($src)}
userdata1={$data}

下面看看Apache插件有啥能耐?

wKiom1api2TiIFseAB4TZ6Cc2Dk429.gif

这就是对Apache日志的归一化处理的效果,每类插件对应了一个插件ID,大家在使用SIEM事件分析时要牢记该ID号(看多了就懂了)。

 

2. SSH日志处理插件

 

Apache日志比较简单,下面介绍的SSH日志就复杂多啦

wKiom1apkRSQ0UjnAAKnSLmEhwM233.jpg

由上面第一条正则处理的归一化事件如下图所示。

wKioL1apkkfQ9HTLAAS8k3yTeIE320.jpg

接着我们看看第二条正则在处理“无效用户”是如何生成归一化事件的

wKioL1aplE-hrVOAAARvu7RnnXY513.jpg

接着看一条SSH日志插件正则表达式

wKioL1aplmKj3eI8AAEQkbrXFBU451.jpg

经过处理后生成对应的归一化事件,如下图所示。

wKioL1apls2hweGnAAPY9ce23Cg635.jpg

 

wKioL1apmA_R0jarAAFbe0Oz0jk044.jpg

wKiom1apmSng_t0DAAS84cgmOFY979.jpg

当使用SSH或SFTP连接某个host时,会有一系列的检查以保证你能够连接到你想连接的机器。其中一项是 “reverse lookup on the IP address”检查机器名称和你要连接的机器名称一致。否则,你会得到这样一个错误信息:”reverse mapping checking getaddrinfo for … POSSIBLE BREAK-IN ATTEMPT!”.这是告诉我们,尽管我们在连接example.com ,但是实际上该server的IP 地址对应到a.b.c.d.adsl-pool.jx.chinaunicom.com 。但这个发生的时候,就是因为server 上的reverse DNS 没有设置好。

 

下回有时间再讲讲Cisco-ASA插件。

 wKioL1apoLXCY7cDAASqIBJvz6Y296.png

 看完这些事例,有人感觉到一个问题,归一化之后的事件内容,比原始日志富含的信息多了,为什么?若大家想详细了解这种基于插件的日志采集处理方式,请参考《开源安全运维平台-OSSIM最佳实践》一书。

 


 本文转自 李晨光 51CTO博客,原文链接:http://blog.51cto.com/chenguang/1739278,如需转载请自行联系原作者



相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
网络协议 Linux 网络安全
详解centos6和centos7防火墙的关闭
CentOS6.5查看防火墙的状态: ? 1 [zh@localhost ~]$service iptable status ...
2870 0
|
Java 数据安全/隐私保护
jasypt 配置文件关键信息配置 加密
jasypt 配置文件关键信息配置 加密
927 0
|
11月前
|
监控 安全 算法
龙蜥衍生版KeyarchOS国密应用、eBPF安全技术实践介绍|龙蜥大讲堂107期
龙蜥衍生版KeyarchOS国密应用及eBPF安全技术实践介绍。本次分享由浪潮信息的霍文和甄鹏主讲,涵盖全栈国密、国密密钥证书、国密通信等内容,并介绍了基于eBPF技术的新一代零侵入安全防御组件KSecure。通过实际案例展示了敏感信息传输加密、虚拟机热迁移等应用场景,以及如何利用eBPF实现进程注入检测等安全功能。该技术方案有效提升了操作系统的安全性与合规性,为服务器提供了强大的安全保障。
298 12
龙蜥衍生版KeyarchOS国密应用、eBPF安全技术实践介绍|龙蜥大讲堂107期
|
Rust 安全 算法
揭秘Rust语言如何重塑区块链安全:打造坚不可摧的分布式账本新篇章!
【8月更文挑战第31天】自比特币诞生以来,区块链技术凭借其去中心化和不可篡改的特点备受关注。为了应对安全性挑战,Rust 语言凭借其内存安全特性逐渐成为区块链开发的优选。本文探讨了 Rust 如何助力区块链实现更安全的分布式账本。通过示例展示了 Rust 在避免内存泄漏、空指针引用及数据竞争等方面的优势,预示着 Rust 在高性能、高安全性需求的区块链应用中拥有广阔前景。
399 2
|
运维 Cloud Native 安全
Serverless是什么
小陈向大刘请教Serverless,了解到Serverless是种云原生开发模式,重点在于FaaS(函数即服务)和BaaS(后端服务),让开发者专注于业务逻辑,而无需管理服务器等基础设施。Serverless并非无服务器,而是将服务器运维工作交给云厂商。FaaS是代码托管服务,例如阿里云的函数计算,提供敏捷、弹性、可靠且成本效益高的计算服务。BaaS则是通过API调用第三方服务,如数据库访问。Serverless与传统架构相比,减少了开发者的负担,提高了效率,降低了成本,并增强了安全性。
3299 6
|
NoSQL 搜索推荐 Java
使用Spring Boot实现与Neo4j图数据库的集成
使用Spring Boot实现与Neo4j图数据库的集成
|
SQL 存储 缓存
老司机总结的12条 SQL 优化方案(非常实用)(一)
老司机总结的12条 SQL 优化方案(非常实用)
老司机总结的12条 SQL 优化方案(非常实用)(一)
|
Shell Linux 网络安全
ssh 主机之间免密配置脚本
ssh 主机之间免密配置脚本
260 0
|
SQL Java 数据挖掘
一文深度讲解JVM 内存分析工具 MAT及实践(建议收藏)
熟练掌握 MAT 是 Java 高手的必备能力,但实践时大家往往需面对众多功能,眼花缭乱不知如何下手,小编也没有找到一篇完善的教学素材,所以整理本文帮大家系统掌握 MAT 分析工具。