Suricata + ELK 简单威胁检测系统搭建

简单威胁检测系统搭建

简介:本次实验基于开组件Suricata + ELK 进行搭建,运行系统为centos。Suricata为开源检测引擎,并将检测数据传入ES中进行大数据检索。

图比较详细:https://zhuanlan.zhihu.com/p/140397901


Suricata检测引擎搭建

参考链接https**://linux.cn/article-6985-1.html

官网下载suricata安装包,并进行解压:

安装依赖包:

sudo yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

./configure --sysconfdir=/etc --localstatedir=/var

进行编译:

make

sudo make install

sudo make install-conf

sudo make install-rules

编译后,配置文件默认存放在/etc/Suricata。

官方默认规则更新下载:

pip install Suricata-updata 然后执行 suricat-updata

自定义规则添加:

在rules 目录下添加自定义规则 venus.rules.

通过vim将下面规则写入,该规则是针对隧道软件NPS特征进行编写。

Nsp工具:http:*//github.com/ehang-io/nps

以下是pcap包中的特征

根据特征编写相应规则检测

alert tcp any any -> any any (msg:"nps_socks"; flow:established; content:"{|22|ConnType|22||3a|"; content:"|22|Host|22|"; distance:0; content:"|22|Crypt|22|"; distance:0; sid:2003; rev:1;)

然后在/etc/Suricata.yaml 配置文件中加入venus.rules。

Suricata检测执行:

suricata -c /etc/suricata/suricata.yaml -i enp0s31f6

然后测试机上运行nps的客户端,与服务端通信。当然你也可以写一些简单的规则进行测试,其实我已经很简单了。

查看告警日志:

详细告警数据存放在/var/log/suricata/eve.json中(之后需要将其导入ELK中进行检索),简单告警日志存放在/var/log/Suricata/fast.log中。


Jdk1.8环境部署

官方下载压缩包并解压至/opt:

添加环境变量:

Vim /etc/profile

完成后执行./etc/profile,成功运行java。

Elasticsearch数据库搭建

官方下载压缩包并解压至/opt中:

创建新用户

Es数据库,默认无法使用root进行启动,所以需要使用非root进行启动或者修改配置文件,推荐使用非root启动。

useradd -d /opt/ -m ela

创建ela用户,并为其授权/opt

修改ES配置文件:

允许任意用户访问,端口为9200.

启动ES常见错误:

参考链接:https**://blog.csdn.net/zhang89xiao/article/details/68925294

1、can not run elasticsearch as root

切换到非root用户

2、main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

改变elasticsearch文件夹所有者到当前用户

sudo chown -R noroot:noroot elasticsearch

3、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

sudo vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=655360

并执行命令:

sudo sysctl -p

4、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

sudo vi /etc/security/limits.conf

添加如下内容:

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

sudo vi /etc/pam.d/common-session

添加 session required pam_limits.so

sudo vi /etc/pam.d/common-session-noninteractive

添加 session required pam_limits.so

ES数据库启动运行

Su ela 切换到ela用户中。

执行./opt/elasticsearch-5.6.0/binelasticsearch。

Curl测试es正常运行。


Kibana可视化搭建

官方下载压缩包并解压至/opt:

修改配置文件:

/opt/kibana-5.6.9-linux-x86_64/config/kibana.yml

运行启动kibana:

./kibana

访问192.168.31.220:5601


Logstash日志收集搭建

简介:主要功能为收集suricata告警日志,在进行筛选过滤传人ES。

官方下载压缩包并解压至/opt:

编写logstach.conf配置文件:

[root@localhost bin]# cat logstash.conf

input{

    file{

        type => ["void_feedback"]

        path => ["/var/log/suricata/eve.json"]

        start_position => "beginning"

    }

}

//通过fitler 对message信息进行json过滤,不然es无法检索

filter {

    if [type] == "void_feedback" {

        json {

            source => "message"

            #target => "doc"

            #remove_field => ["message"]

        }       

    }

}

output{

    elasticsearch {

      index => "suricata-%{+YYYY.MM.dd}"

      hosts => ["127.0.0.1:9200"]

}

stdout{

        codec => rubydebug

    }

}

Logstach启动运行:

./logstash -f logstash.conf

数据成功导入ES中


完成测试OK

访问192.168.31.220(已使用nginx进行端口转发),通过kibana查看告警。

YLL

2020-5-13

你可能感兴趣的:(Suricata + ELK 简单威胁检测系统搭建)