简单威胁检测系统搭建
简介:本次实验基于开组件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