ossec主要功能介绍

来源:互联网 发布:网页游戏劫持数据 编辑:程序博客网 时间:2024/05/17 18:42

Ossec 主要功能

OSSEC是一个开源的入侵检测系统,它可以执行LOG分析,完整性检测
,windows注册表监控,rootkit检测,实时报警及动态响影。

完整性检测

Syscheck是OSSEC内部完整性检测进程的名称。它周期性检查是否有任何配置文件(或者windows注册表)发生改变。
在网络中有许多类型的攻击和攻击载体,说起这些攻击,有一种攻击是很特别的,他们留下一个跟踪程序,并总是想尽方法改变这个系统。它们用病毒修改一些文件,并破坏系统的完整性。

完整性检查是入侵检测系统的一个重要组成部分。当系统的完整性被改变时它能够通过比较文件的MD5校验各发现。

它的工作方法是:“代理每几个小时扫描一次系统,并发送所有的校验和到
server端。Server端存储这些校验和文件并查找他们的不同。如果发现任何改变将会发送报警。

  • 多长时间运行一次
    默认每6小时运行一次,但是这个频率可以自己设定。
  • 数据存放位置
    在server端的/var/ossec/queue/syscheck
  • CPU使用情况
    慢慢地进行扫描,以避免使用过多的CPU /内存。
  • 如何处理误报
    文件能够通过手工指定配置文件或使用规则到忽略不记,默认一个文件修改超过3次会自动忽略。

配置文件位于 /var/ossec/etc/ossec.conf。

使用这个选项增加或者移除被监控的目录(目录这间用逗号分开)所有的文件和子目录也会被监控。没有目录的驱动器字母是无效的。至少“。”应包括(D:.)。
默认:/etc,/sur/bin,/usr/sbin,/bin,/sbin 

Attributes: 属性

  • realtime: Value=yes (启用实时、连续的监控)
  • report_changes: Value=yes (文件改变比较报告,只能用文本文件)
  • check_all: Value=yes(所有下面的check_*选项共同起作用)
  • check_sum: Value=yes (通过检查文件的md5哈希值和SHA1安全算法来检查文件的完整性)
  • check_sha1sum: Value=yes (通过SHA1安全算法检查文件的完整性)
  • check_md5sum: Value=yes (通过检查文件的md5哈希值检查文件的完整性)
  • check_size: Value=yes (检查文件大小)
  • check_owner: Value=yes (文件所有者检查)
  • check_group: Value=yes (文件和目录所属的用户组检查)
  • check_perm: Value=yes (文件和目录权限检查)
  • restrict: Value=string (文件内容中包含文件名的字符串将限制检查。)
  • ignore (列出的文件和目录将不被检查)
  • frequency (syscheck多长时间执行一次,默认是21600秒,也就是6个小时)
  • scan_time (扫描系统的时间格式)
  • scan_day (在每周的那一天执行扫描)
  • auto_ignore (指定忽略频繁改变的文件)
  • alert_new_files (指定新文件被创建时是否报警)
  • scan_on_start (syscheck启动后是否立即做第一次扫描。)
  • windows_registry (注册表监控)
  • registry_ignore  (不监控列出的注册表条目)

例子

提供一个要被监控的目录和文件列表,check_all 选项会检查文件的md5, sha1,owner,和权限。例如:

<syscheck> <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes">/root/users.txt,/bsd,/root/db.html</directories> </syscheck>  

如果不想监控某些文件和目录,可以用ignore选项(或者 registry_ignore 为windows注册表输入)

<syscheck> <ignore>/etc/random-seed</ignore>   <ignore>/root/dir</ignore> <ignore type="sregex">.log$|.tmp</ignore> </syscheck>  

在ignore选项,这个类型属性可以设置sregex指定一个正则表达式语法。

<syscheck> <ignore type="sregex">^/opt/application/log</ignore> </syscheck>   

一个本地规则可以更严格的修改你想要更改的指定文件和目录。

<rule id="100345" level="12"> <if_matched_group>syscheck</if_matched_group>   <match>/var/www/htdocs</match> <description>Changes to /var/www/htdocs - Critical file!</description></rule>  

在上边的例子中,当htdocs directory目录中的文件有改变时将会产生一个高严重级别的报警。
实时监控:
在linux 和windows中OSSEC支持实时监控文件完整性检查(linux内核2.6.13以上板本支持)
配置很简单,在directories选项那里你可以指定要监控那些文件和目录,增加realtime=”yes”到启用。

<syscheck> <directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>     <directories check_all="yes">/bin,/sbin</directories> </syscheck>  

在这个例子中,目录/etc, /usr/bin and /usr/sbin会被实时监控,同样的方法也实用与windows。
提示:实时监控并不会立即开始。首先ossec-syscheckd需要扫描文件系统并添加每一个了目录到实时队列。要完成这些工作需要30分钟时间。
等待log文件出现如下信息:
“ossec-syscheckd: INFO: Starting real time file monitoring”

注解:实时监控仅对目录有效,所以你可以监控 /etc 或者c:\program files 目录,但不能是个别的文件,像/etc/file.txt。

比较不同并生成报告:
在linux 和unix系统比较所后的改变生成一个文本文件,OSSEC支持发送比较报告, 
配置syscheck显示文件比较的不同很简单,添加report_changes=”yse”到directories选项。

<syscheck> <directories report_changes="yes" check_all="yes">/etc</directories>     <directories check_all="yes">/bin,/sbin</directories> </syscheck>  

怎样使syscheck立即开始扫描系统?
运行代理控制工具使其立即开始完整性扫描(-a 选项使所有代理开始运行,-u选项可以指定某个代理ID。

# /var/ossec/bin/agent_control -r -a # /var/ossec/bin/agent_control -r -u <agent_id>   

代理控制参数选项:

-h              显示帮助消息 -l              列出所有可能的代理  -lc             列出活动的代理 -i <agent_id>   获取代理的相关信息 agent_id -r              运行代理中的integrity/rootcheck检查,要和-u或-a 一起使用。 -a              对所有代理起做用 -u <agent_id>   <agent_id>预先指定代理ID号  

当启动ossec时,告诉syscheck不要对系统进行扫描:
在ossec.conf中指定 选项为“no”。

怎么从syscheck中排除一个频繁更改的文件?
在选项设定要排除的目录文件,或者创建一个简单的本地规则。

下面的这个例子将从mswin1和ubuntu-dns代理中排除etc/a , /etc/b 和一个目录 /etc/dir。

<rule id="100345" level="0" >     <if_group>syscheck</if_group> <description>Changes ignored.</description>     <match>/etc/a|/etc/b|/etc/dir</match>     <hostname>mswin1|ubuntu-dns</hostname></rule>  

在检测到数据据改变后怎么获取详细的报告?
Syscheck_control工具
Syscheck_control提供了一个管理和查看数据库的接口。
Syscheck_control参数选项 

-h             显示帮助消息 -l             列出可用的代理 -lc            列出当前活动的代理 -u <agent_id>  更新(清除)指定代理的数据库, -u all         更新(清除)所有代理的数据库, -i <agent_id>  列出指定代理的数据库 -r –i          列出windows代理 中注册表改变的数据 -f <file>      用 –i 参数, 列印一个关与修改文件的信息。 -z      -d             用 –f 参数,忽略该文件 -s             输出到CVS

Rootcheck

OSSEC HIDS会在每个安装了代理的系统运行rootkit检测。Rootkit发现引擎每过120分钟会去探测任何可能已经安装的rootkit.. 和log分析及安全性检测一起使用,OSSEC HIDS将是一个强有力的监控解决方案。

读这个rootkit_files.txt文件,其中包含了常被它们使的用文件和rootkits的基本数据。它将统计每一个指定的文件。我们使用所有这些系统调用中,有一些kernel_level级别的rootkits从系统调用隐藏了一些文件。我们偿试更多的系统调用到更好的发现。这种方法更像需要不断更新的返病毒规则。误报的机会是非常的小,但是可以通过修改rootkits生成假的否定。

读这个rootkit_trojans.tst文件,内含了一个用特洛伊文件签名的基本数据。这种用特洛伊板本
修改二进制的技术过去常常被流行的tootkits使用。

扫描/dev目录查找异常。这个目录应该只有设备文件和makedev 脚本。很多rootkits使用这个目录隐藏文件,这和技术能发现非公有的rootkits。

扫描整个系统文件查找不正常的文件和权限问题。Root用户拥有文件的写权限,给其它人是非常危险的。Rootkit发现会查找它们,隐藏的文件和目录出会被检查。

查找存在的隐藏进程,我们使用获取SID并杀死SID检查,是否有任何PID被使用。如果PID被使用,但PS不能看到它,说明它是kernel-level级别的rootkit或者是特洛伊板本的PS.我们也会验证获取的SID和kill输出的是否相同。

查找隐藏的端口。我们使用绑定端口的方式检查在系统中的每一个TCP、UDP端口。如果我们不能绑定这个端口,但是netstat不能显示它,很可能系统中装了roottkit。

扫描在系统中的所有接口,找出启用杂乱模式的接口,如果IFCONFIG输出不能显示它, 很可能系统中装了roottkit。

配置选项

这些配置选项可以在每个代理的ossec.conf文件中指定。除去server端的选项
auto_ignore 和alert_new_file,如果ignore是在sever端设置,所有代理将会使用相同的设置。
Base_directory 这个基本目录将会增加下面的选项。

  •  rootkit_files
  •  rootkit_trojans
  •  windows_malware
  •  windows_audit
  •  windows_apps
  •  systems_audit

允许:默认目录路径:/var/ossec

Rootkit_files (这个选项可以更改tootkit数据库文件的位置。)
Allowed: 带有rootkit文件签名的一个文件
Default:/etc/shared/rootkit_files.txt
Rootkit_trojans (这个选项可以更改tootkit trojans数据库文件的位置。)
Allowed: 带有TROJANS签名的一个文件
Default:/etc/shared/rootkit_trojans.txt
scanall (告诉 rootcheck 扫描整个系统 (可能会误报)。)
Default: no
Allowed: yes/no
frequency (多长时间运行一次)
Defaults: 36000 (10 hours)
Allowed: Time (in seconds)
disabled (禁用rootcheck执行)
Default: no
Allowed: yes/no

日志监控、分析

在OSSEC内部有log收集和log分析进程,日志分析过程中,首先要收集log,然后对日志进行分析(解码,过虑,分类)。
一有事件写入OSSEC立即会处理它们。OSSEC能读内部日志文件,windows日志事件,和直接通过远程系统接收的日志。
程序监控
系统LOG是个好东西,在OSSEC中,我们把需要监控的目标当成一个日志来看,并用适当的规则分析它。然而,有一些信息在日志文件中没有,但是我们还是想监控它。要解决这个缺陷,我们需要在OSSEC中增加监控命令输出的功能,并且处理这些命令输出的。 它们像log文件一样。
配置实例:
监控磁盘空间利用率的一个例子
如果想要监控磁盘空间利用率,你需要设置一个crom任务,使命令df –h 的输出保存到一个log文件(/var/log/df.log)并且配置OSSEC查看它。
至OSSEC 2.3版本起,你可以在OSSEC中直接监控命令。配置如下:

<localfile> <log_format>command</log_format>     <command>df -h</command> </localfile>

在OSSEC中我们已经有了一个规则样本(为处理df –h 输出),当任何分区达到100%你将能看到下面的输出。

** Alert 1257451341.28290: mail - ossec,low_diskspace,    2009 Nov 05 16:02:21 (home-ubuntu) 192.168.0.0->df -h  Rule: 531 (level 7) -> "Partition usage reached 100% (disk space monitor)."  Src IP: (none) User: (none)   ossec: output: "df -h": /dev/sdb1 24G 12G 11G 100% /var/backup

C中我们已经有了一个规则样本(为处理df –h 输出),当任何分区达到100%你将能看到下面的输出。

监控平均负载的一个例子。
如果你想要监控系统的平均负载,你可以配置OSSEC监控“update”命令,并当值高于2时报警。

<localfile> <log_format>command</log_format>     <command>uptime</command> </localfile>  

增加一个规则

<rule id="100101" level="7" ignore="7200">     <if_sid>530</if_sid> <match>ossec: output: "uptime": </match>     <regex>load averages: 2.</regex> <description>Load average reached 2..</description> </rule>  

当一个命令的输出改变时报警 
如果你想要在一个命令的输出发生改变时报警,在OSSEC规则中查看(check_diff)选项。 用一个例子来说明:当我们的server在监听模式有一个新的端口被打开,创建一个规则使其报警。 
首先,在ossec.conf文件中,我们配置OSSEC运行netstat -tan |grep LISTEN命令。

<localfile> <log_format>full_command</log_format> <command>netstat -tan |grep LISTEN|grep -v 127.0.0.1</command> </localfile>  

而后,增加一个规则,当输出改变的时候报警。

<rule id="140123" level="7">     <if_sid>530</if_sid> <match>ossec: output: 'netstat -tan |grep LISTEN</match>     <check_diff /> <description>Listened ports have changed.</description> </rule>  

注意我们使用的check_diff选项,第一次收到信息将存储在内部数据库。每次收到相同的数据,都和先前存储的数据进行比较,如果输出改变生成报警信息。

在这个例子中,我们用netcat工具连接23456端口,我们能得到如下报警信息。

OSSEC HIDS Notification. 2010 Mar 11 19:56:30  Received From: XYZ->netstat -tan |grep LISTEN|grep -v 127.0.0.1 Rule: 140123 fired (level 7) -> "Listened ports have changed." Portion of the log(s):  ossec: output: 'netstat -tan |grep LISTEN|grep -v 127.0.0.1': tcp4       0      0 *.23456           *.*               LISTEN tcp4       0      0 *.3306            *.*               LISTEN tcp4       0      0 *.25              *.*               LISTEN Previous output: ossec: output: 'netstat -tan |grep LISTEN|grep -v 127.0.0.1': tcp4       0      0 *.3306            *.*               LISTEN tcp4       0      0 *.25              *.*               LISTEN  

文件监控

OSSEC有一个名为OSSEC- logcollector的监控新的事件日志文件的进程,并将其转发给其他进程进行分析。 OSSEC- logcollector的配置是在/ var / ossec/ etc/ossec.conf。 配置实例 
配置要监视的日志文件很简单。只要提供要监视的文件的名称和格式: 
配置要监控的日志文件很简单。仅需要提供要监控的文件的名称和格式:

<localfile> <location>/var/log/messages</location>     <log_format>syslog</log_format> </localfile>  

监控windows 事件日志的例子
要监控Windows事件日志,您需要提供的格式为“eventlog”并且位置是事件日志的名称。示例:

<localfile> <location>Security</location>     <log_format>eventlog</log_format> </localfile>  

监控多个文件的例子
要检查多个文件,OSSEC支持POSIX正则表达式。
例如,要分析/var/ log目录下以a.log结尾的文件,使用以下配置:

<localfile><location>/var/log/*.log</location>     <log_format>syslog</log_format> </localfile>   

监控以日期命名的日志文件
对于日志文件,根据日期改变,你也可以指定strftime的格式,以取代日,月,年等。例如监控日志C:\ WINDOWS\ APP\ LOG-08-12 -15日志,其中08是年,12是月份,15是天(并且日期每天更新)

<localfile> <location>C:\Windows\app\log-%y-%m-%d.log</location>     <log_format>syslog</log_format></localfile>  

ossec主要功能暂且介绍这么多,更多请参照:http://www.ossec.net/doc/

0 0
原创粉丝点击