ELK组件安装运行展示
背景说明
- 基于logstash-7.2.1构建了logstash-1.0-1.x86_64.rpm
- 基于elasticsearch-7.2.1构建了elasticsearch-1.0-1.x86_64.rpm
- 基于kibana-7.2.1构建了kibana-1.0-1.x86_64.rpm
- 基于CentOS-7-x86_64-Minimal-1810镜像新建3台虚拟机,A记为agent负责采集数据,B记为server负责存储数据,C记为state负责为存储的数据生成可视化展示图
- 为3台虚拟机配置hostname以及主机映射
- 以root用户登录agent、server、state 修改时区设置(保证时间同步)
timedatectl set-ntp no
timedatectl set-timezone Asia/Shanghai
环境搭建说明
Agent端
- 将agent文件夹下的所有文件上传到agent的/root目录下,而后以root用户登录agent虚拟机
- 安装logstash
yum -y localinstall logstash-1.0-1.x86_64.rpm - 安装suricata
tar -zxvf rpmOfSuricata.tar.gz
yum -y localinstall rpmOfSuricata/*.rpm
yum -y localinstall suri-2.0-1.x86_64.rpm - 重新编译suricata
cd /home/nsa/suricata/suricata-4.1.4/
make clean
./configure --prefix=/usr/ --sysconfdir=/etc/ --localstatedir=/var/ --enable-luajit --with-libnss-libraries=/usr/lib --with-libnss-includes=/usr/include/nss/ --with-libnspr-libraries=/usr/lib --with-libnspr-includes=/usr/include/nspr --with-libluajit-includes=/usr/local/include/luajit-2.0/ --with-libluajit-libraries=/usr/lib/ --with-libjansson-libraries=/usr/lib64/ --with-libjansson-includes=/usr/include
make && make install - 脚本配置
mkdir -p /ids/packet
将“终端正常流量展示配置”下的t_packet.lua、packet-es.conf上传到agent
mv t_packet.lua /etc/suricata/lua-output/
mv packet-es.conf logstash-7.2.1/config/
vi /etc/suricata/suricata.yaml
按照下图内容修改suricata.yml文件的内容
将“终端白名单检测配置”下的”文件全部上传到agent的/root目录下
tar -zxvf scripts.tar.gz
mv scripts/ /var/lib/suricata/update/cache/rules/
mv -f classification.config custom.rules /var/lib/suricata/update/cache/rules/ - 验证suricata安装
执行ip address指令,查看网卡名称
根据网卡名称,尝试运行suricata,如下图所示为安装成功
cd /home/nsa/suricata/suricata-4.1.4/
suricata -c /etc/suricata/suricata.yaml -i ens33
- 修改logstash配置
eve-es文件,在/root/logstash***/config目录下
vi eve-es.conf
将“elastic search所在IP”换成server虚拟机IP地址
vi packet-es.conf
将下图中“hosts”处的IP地址更换为server虚拟机IP地址
Server端操作
- 将elastic search的安装包上传到server虚拟机中
- 以root身份登录server虚拟机,安装elasticsearch的rpm包
yum -y localinstall elasticsearch-1.0-1.x86_64.rpm - 配置项修改
cd /home/elasticsearch/config/
cat after_es_install.sh
根据上一条指令显示的内容执行后续操作
useradd elasticsearch;
chown -R elasticsearch:elasticsearch /home/elasticsearch;
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch;
vi /etc/security/limits.d/20-nproc.conf
而后删除/etc/security/limits.d/20-nproc.conf的倒数第三行并退出
systemctl start firewalld;
firewall-cmd --add-port=9200/tcp --zone=public --permanent;
firewall-cmd --reload;
systemctl stop firewalld;
sysctl -p; - 运行验证
su elasticsearch
cd /usr/local/elasticsearch/
nohup ./bin/elasticsearch &
curl http://127.0.0.1:9200
若出现以下内容,说明elasticsearch已正常启动运行
{
“name” : “node-1”,
“cluster_name” : “elkbigdata”,
“cluster_uuid” : “jpkQKXwOTYSr_K7D180c5g”,
“version” : {
“number” : “7.2.1”,
“build_flavor” : “default”,
“build_type” : “tar”,
“build_hash” : “fe6cb20”,
“build_date” : “2019-07-24T17:58:29.979462Z”,
“build_snapshot” : false,
“lucene_version” : “8.0.0”,
“minimum_wire_compatibility_version” : “6.8.0”,
“minimum_index_compatibility_version” : “6.0.0-beta1”
},
“tagline” : “You Know, for Search”
}
State端操作
- 将kibana安装包上传到state中
- 安装并配置kibana服务
yum -y localinstall kibana-1.0-1.x86_64.rpm
cat /home/state/after_kibana_install.sh
按照上述文件的内容进行后续配置
vi /usr/local/kibana/config/kibana.yml
#elasticsearch.hosts: [“http://server-ip:9200”]
此处server-ip替换为server虚拟机的IP地址
useradd state
chown -R state:state /home/state;
chown -R state:state /usr/local/kibana;
systemctl start firewalld;
firewall-cmd --add-port=5601/tcp --zone=public --permanent;
firewall-cmd --reload;
systemctl stop firewalld - 启动kibana服务(启动前必须保证server端的elasticsearch服务已经正常运行)
su state
cd /usr/local/kibana/
./bin/kibana
访问http://state-ip:5601,若出现下图说明kibana服务正常运行
注意事项
1.上述操作完成之后,root用户登录server,执行下列操作
ps -ef | grep elasticsearch 找到正在运行的elastic search进程的pid
kill -9 pid 关闭上述elastic search进程 - 上述操作完成之后,root用户登录state,执行下列操作
ps -ef | grep node 找到上述kibana进程的pid
kill -9 pid 关闭刚刚的kibana进程
启动运行说明
- root用户登录server,执行下列操作
su elasticsearch
cd /usr/local/elasticsearch/
nohup ./bin/elasticsearch & - 查看elastic search是否正常运行,下图所示为正常运行状态
这里如果curl http://127.0.0.1:9200连接失败:
tail -F nohup.out
再次运行
启动kibana服务
1, root用户登录state,执行下列操作
su state
cd /usr/local/kibana/
nohup ./bin/kibana &
2. 通过本机浏览器访问: http://192.168.200.133:5601/,以下界面为正常运行界面
启动logstash服务
- root用户登录agent,修改logstash的jvm配置
cd /root/logstash-7.2.1/
vi config/jvm.options
#将该文件中,修改jvm配置如下图
- 启动两个logstash进程
#将suricata检测结果的eve.json文件逐行发送到elastic search
nohup ./bin/logstash -f config/eve-es.conf &
nohup ./bin/logstash -f config/packet-es.conf & - 此处可能会由于内存不足导致无法同时满足两个logstash进程运行的要求,可以将其分来运行。具体做法如下
nohup ./bin/logstash -f config/eve-es.conf &
执行“启动suricata生成展示数据”中的操作
ps -ef | grep logstash 找到刚刚那个logstash进程的pid,而后kill -9 pid值,关闭刚才启动的logstash进程
nohup ./bin/logstash -f config/packet-es.conf &
再次执行“启动suricata生成展示数据”中的操作
启动suricata生成展示数据
- 将pcap_attack、pcap_nanwang_test两个文件夹上传到agent虚拟机
- root用户登录agent,启动suricata,读取上述pcap文件,生成检测结果
cd pcap_attack/
suricata -c /etc/suricata/suricata.yaml -r ./APPLICATION_ATTACK/xss.pcap
suricata -c /etc/suricata/suricata.yaml -r ./BRUTE_FORCE/.pcap -k none
suricata -c /etc/suricata/suricata.yaml -r DOS/.pcap
kibana导入可视化组件
- 通过本地Windows主机访问state端的kibana服务
http://192.168.200.133:5601/ - 导入“state”文件夹下的“suricata攻击检测结果界面.njson”、“终端白名单检测界面.ndjson”、“终端正常流量统计界面.ndjson”
- 查看展示图效果