Suricata+ELK+kibana+logstash 安装手册
1. Suricata 安装
1.1.准备环境
linux:centos7
网络环境:连接外网,可 ping 通百度
1.2.下载 suricata5.01 包
https://www.openinfosecfoundation.org/download/suricata-5.0.1.tar.gz
1.3.安装依赖环境
yum install epel-release
yum -y install gcc libpcap-devel pcre-devel libyaml-devel
file-devel
zlib-devel jansson-devel nss-devel libcap-ng-devel
libnet-devel tar make
libnetfilter_queue-devel lua-devel PyYAML
libmaxminddb-devel rustc cargo
lz4-devel
1.4.解压 / 编译 suricata
tar -zxvf suricata-5.0.1.tar.gz
mv suricata-5.0.1 suricata
cd suricata
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
--enable-nfqueue --enable-lua
结果如图
执行
make
make install
编译结束后,执行 make install-conf,生成配置文件,日志目录
之后执行 ldconfig,如下图
以上编译完成,编写 systemctl 文件启动 suricata
首先执行
ln -s /usr/bin/suricata /sbin/(创建软链接)
1.5.修改 suricata.yml 网卡信息
将 eth0 改为自己要监听的网卡
1.6.创建 suricata 用户,添加 suricata 采集方式
useradd suricata
touch
/etc/sysconfig/suricata
vim
/etc/sysconfig/suricata,添加
OPTIONS="--af-pack -i ens33 --user suricata "
保存
1.7.编写 systemctl 文件 suricata.service
# Sample Suricata systemd unit file.
[Unit]
Description=Suricata Intrusion Detection Service
After=syslog.target network-online.target
systemd-tmpfiles-setup.service
Documentation=man:suricata(1)
[Service]
# Environment file to pick up $OPTIONS. On Fedora/EL this would be
# /etc/sysconfig/suricata, or on Debian/Ubuntu,
/etc/default/suricata.
EnvironmentFile=-/etc/sysconfig/suricata
#EnvironmentFile=-/etc/default/suricata
ExecStartPre=/bin/rm -f /var/run/suricata.pid
ExecStart=/sbin/suricata -c /etc/suricata/suricata.yaml --pidfile
/var/run/suricata.pid $OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
####### 然后将 suricata.service 放到 /usr/lib/systemd/system/
执行 systemctl daemon-reload
[]systemct enable suricata
[]systemctl start suricata
[]systemctl status suricata (启动成功)
更新rules
启用抓包
sudo suricata-update
suricata--af-packet
2. 安装 elasticsearch 7.0
2.1.官网下载 elasticsearch
https://www.elastic.co/cn/downloads/elasticsearch
我下载的是最新稳定版本 7.0.0
wget
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.
0.0-linux-x86_64.tar.gz
2.2.解压文件, 拷贝到安装目录
tar -xzvf
elasticsearch 解压缩,并将解压缩的文件剪切到
/usr/local/ 目录下
2.3.进入 config 文件夹下编辑 elasticsearch.yml
集群模式下,放开 cluster.name 注释,单机模式下,放开 node.name
数据存储和日志存储路径放开注释
网络设置 设置 ip 限制,端口设置,跨越设置 i
在Discovery栏中加入cluster.initial_master_nodes: ["node-1"]
2.4.配置完成后进入 bin 目录执行启动脚本 elasticsearch
前台启动
后台启动
./elasticsearch
./elasticsearch
-d
2.5.启动过程中遇到的坑
1)
root 启动时,elasticsearch 不能以 root 用户启动
org.elasticsearch.bootstrap.StartupException:
java.lang.RuntimeException: can not run elasticsearch as root
处理方法,创建非 root 用户,使用非 root 用户启动
a)
b)
c)
adduser es
创建用户 es
passwd
es
设置 es 密码,(这里密码设置为China123!)
设置文件权限 chown -R es /usr/local/elasticsearch-7.8.1
su es 切换到es帐户下执行./elasticsearch
2) JDK 版本要求最低版本 1.8, 在 elasticsearch 中设置 JAVA_HOME
CATALINA_HOME 和 PATH 等信息
3) elasticsearch.yml 配置有问题,保证配置的文件的 key 后面直接跟着
冒号,冒号后空格一位,再输入对应的 value
4) elasticsearch 用户拥有的可创建文件描述的权限太低,至少需要
65536,
处理办法: # 切换到 root 用户修改
vim
/etc/security/limits.conf
# 在最后面追加下面内容
*** hard nofile
65536
*** soft nofile
65536
#***
是启动 ES 的用户
5) max_map_count 文件包含限制一个进程可以拥有的 VMA (虚拟内存区域)
的数量
处理办法:
# 切换到 root 用户修改
vim
/etc/sysctl.conf
# 在最后面追加下面内容
vm.max_map_count=655360
执行sysctl -p
最终正常启动显示页面
3. Logstash 安装
Logstash 使用管道方式进行日志的搜集处理和输出。
有点类似 Linux 系统的管道命令 aaa| bbb | ccc,aaa 执行完了会执行
bbb,然后执行 ccc。
在 logstash 中,包括了三个阶段:
输入 input --> 处理 filter(不是必须的) --> 输出 output
配置文件也是按这个顺序进行配置的。