美文网首页
Windows sysmon+winlogbeat+ELK实现W

Windows sysmon+winlogbeat+ELK实现W

作者: Hudi233 | 来源:发表于2019-05-10 13:23 被阅读0次

    一、sysmon告警介绍

    sysmon提供21种事件告警:

    Event ID 1:进程创建

    Event ID 2:进程更改文件创建时间

    Event ID 3:网络连接

    Event ID 4:sysmon服务状态变更

    Event ID 5:进程终止

    Event ID 6:驱动程序加载

    Event ID 7:映像加载

    Event ID 8:远程连接线程创建

    Event ID 9:内存读取

    Event ID 10:进程允许访问

    Event ID 12:注册表事件(键值配置)

    Event ID 13: 注册表事件(项目创建和删除)

    Event ID 14:注册表事件(键值键名修改)

    Event ID 15:创建文件留事件

    Event ID 17:管道事件(管道创建)

    Event ID 18:管道事件(管道连接)

    Event ID 19:WMI事件(WMI事件过滤动作执行)

    Event ID 20:WMI事件(WMI事件注册动作执行)

    Event ID 21:WMI事件(WMI事件绑定过滤器动作执行)

    Event ID 255:错误

    二、监控设计

    功能实现

    ①:Windows机器固定周期从内网搭建网站获取配置脚本,并每周进行一次Sysmon64.exe -c 的更新,以实现自动同步配置的需求(bat脚本+Windows周期任务实现)

    ②:winlogbeat收集sysmon日志并将日志输出到logstash中

    ③: logstash进行筛选,remove掉不需要的项(根据需要调整,笔者只监控告警id 3网络连接、id 4 sysmon服务状态变更、id 8 远程连接线程创建和id 255 错误)

    ④:ES提供数据查询功能,logstash的email插件提供告警功能

    ⑤:通过Python脚本邮件合并、筛选发现的威胁项

    环境要求:sysmon部署环境需要是win7及以上,win2008 R2及以上。

    三、sysmon+winlogbeat一键部署

    https://github.com/Hudi233/sysmonwinlogbeat

    四、logstash配置

    input  {

            beats {

                    port => 5044

            }

    }

    filter {

            if [event_data][DestinationIp] !~ "^100\.|^10\." and [event_data][DestinationIp] =~ "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" {

                    geoip {

                            source => "[event_data][DestinationIp]"

                            fields => ["city_name", "country_name"]

                            database => "./ELK/logstash-6.4.0/GeoLite2-City.mmdb"

                    }

            }

            if [event_data][DestinationIp] =~ "^100\.|^10\.|^127\.0\.0\.1" {

                    drop { }

            }

    }

    output {

            elasticsearch {

                    hosts => "127.0.0.1:9200"

                    index => "sysmon"

            }

            if [event_data][DestinationIp] !~ "^100\.|^10\.|^127\.0\.0\.1" {

                    email {

                            to => 'xxx@xxx.com'

                            from => 'xxx@xxx.com'

                            subject => 'Alert - %{event_id}'

                            body => "Content:\n%{message}\n%{geoip}"

                            address => 'xxx.com'

                            authentication => "plain"

                            password => '***'

                            username => 'xxx@xxx.com'

                    }

            }

    }

    相关文章

      网友评论

          本文标题:Windows sysmon+winlogbeat+ELK实现W

          本文链接:https://www.haomeiwen.com/subject/tpxaoqtx.html