> 文章列表 > Su+ELK实现网络监测(2)——ELK安装与配置

Su+ELK实现网络监测(2)——ELK安装与配置

Su+ELK实现网络监测(2)——ELK安装与配置

ELK安装配置文档

  • 一、环境准备
    • 基础配置
  • 二、Jdk1.8环境部署
    • 1、安装jdk
    • 2、编辑环境变量
  • 三、ElasticSearch部署
    • 1、安装
    • 2、修改文件所有者
  • 3、修改配置文件
    • 4、启动
  • 四、elasticsearch-head部署(可不安装,跳过)
    • 1、nodejs安装
    • 2、head插件安装
    • 3、修改head插件配置文件
    • 4、启动
  • 五、logstash部署
    • 1、安装
    • 2、修改配置文件
    • 3、验证配置文件
    • 4、设置数据源日志输出
    • 5、启动
  • 六、kibana部署
    • 1、安装
    • 2、修改配置文件
    • 3、启动
    • 4、创建索引
  • 七、参考资料

一、环境准备

基础配置

/etc/security/limits.conf

修改系统进程数量、最大打开文件数等配置,新加入到.conf文件最底部
参考自:https://blog.csdn.net/zxljsbk/article/details/89153690

cat >> /etc/security/limits.conf <<EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
EOF

/etc/sysctl.conf

设置最大映射数量
系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上

echo "vm.max_map_count = 655360" >> /etc/sysctl.conf

保存并退出后,再输入命令:sysctl -p 立即生效

二、Jdk1.8环境部署

1、安装jdk

jdk下载链接
上传安装jdk文件、解压、移动到 /usr/local/java 路径

tar -zxf jdk-8u221-linux-x64.tar.gz
mv jdk1.8.0_221/ /usr/local/java

2、编辑环境变量

编辑 /etc/profile 文件

cat >> /etc/profile <<"EOF"
###java###
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
EOF
source /etc/profile                   # 让环境变量生效
java -version                         # 查看java版本、安装位置
which java
ln -s /usr/local/java/bin/* /bin      # 使用 ln -s 命令建立软连接(将java文件链接到/bin下面,否则后面logstash报错非常难排查原因)

三、ElasticSearch部署

1、安装

es下载链接
上传ElasticSearch安装文件、解压、移动到 /usr/local/elasticsearch 路径

tar -zxf elasticsearch-7.6.0-linux-x86_64.tar.gz
mv elasticsearch-7.6.0 /usr/local/elasticsearch

2、修改文件所有者

创建data文件,用于存放es的数据和日志

修改文件和目录的所有者和所属组(因为elasticsearch是不允许root用户启动的,所以需要添加新用户)

mkdir -p /var/data/es-data
mkdir -p /var/data/es-log
useradd es
chown -R es:es /usr/local/elasticsearch/                  # 设置es用户拥有该目录权限
chown -R es:es /var/data/es-data
chown -R es:es /var/data/es-log

3、修改配置文件

cd /usr/local/elasticsearch/config/
cp elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml

Su+ELK实现网络监测(2)——ELK安装与配置

文件最后自行添加如下内容:

cat >> elasticsearch.yml <<"EOF"
transport.tcp.compress: true
transport.tcp.port: 9300network.publish_host: 192.168.234.10                        # 本机ip
node.master: true                                           # 允许成为主节点
node.data: true                                             # 允许成为数据节点# xpack.security.enabled: true                              # 建议关闭或不设置,若设置了有很多非常麻烦的事
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"indices.query.bool.max_clause_count: 8192
search.max_buckets: 100000
EOF

4、启动

su es
cd /usr/local/elasticsearch/bin./elasticsearch -d                 # 后台启动
./elasticsearch                    # 非后台启动,主要用于调试

如果启动测试,出现如下报错:

  • 报错一:
    Su+ELK实现网络监测(2)——ELK安装与配置
    报错原因:前面说了 elasticsearch是不允许root用户启动的 所以需要切换到前面创建的es账号下来运行
  • 报错二:
    Su+ELK实现网络监测(2)——ELK安装与配置
    报错原因是:线程占用 解决方法:杀死elasticsearch线程 / 重启
    ps -ef | grep elasticsearch|grep -v grep
    kill -9 id
  • 报错三:
    Su+ELK实现网络监测(2)——ELK安装与配置
    报错原因是:是该文件的权限问题。进入该文件所属目录查看文件权限验证:
    Su+ELK实现网络监测(2)——ELK安装与配置
    解决方法:使用命令删除该文件即可,下次启动es时会自动创建
    rm -rf elasticsearch.keystore

启动成功后,使用如下命令测试:

curl http://192.168.234.10:9200                                 # 输入本机ip
curl '192.168.234.10:9200/_cluster/health?pretty'               # 查看es健康状态

若提示如下信息,则表示成功:
Su+ELK实现网络监测(2)——ELK安装与配置

四、elasticsearch-head部署(可不安装,跳过)

安装配置可参考:https://www.cnblogs.com/wangzhuxing/p/9352258.html

1、nodejs安装

因为head插件是用node.js开发的,所以需要此环境(切换回root用户)

wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz
tar -zxf node-v14.15.4-linux-x64.tar.xz
mv node-v14.15.4-linux-x64 /usr/local/node

编辑 /etc/profile 文件

cat >> /etc/profile <<"EOF"
#node
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH
EOF

让环境变量生效

source /etc/profile
node -v

2、head插件安装

wget https://github.com/mobz/elasticsearch-head/archive/master.zip
yum -y install unzip
unzip master.zip
mv elasticsearch-head-master/ /usr/local/elasticsearch-head
cd /usr/local/elasticsearch-headyum -y install npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install -g grunt-cli
npm install -g grunt
npm install grunt-contrib-clean
npm install grunt-contrib-concat
npm install grunt-contrib-watch
npm install grunt-contrib-connect
npm install grunt-contrib-copy
npm install grunt-contrib-jasmine      # 如果有些输入有报错,就再输入一遍,不行就略过(有些没安装也可以正常运行),执行下面第三步

如果安装过程,出现如下报错:
Su+ELK实现网络监测(2)——ELK安装与配置

解决方法:cnpm install --save-dev "grunt@>=1.4.1"

Su+ELK实现网络监测(2)——ELK安装与配置

解决方法:npm install phantomjs-prebuilt@2.1.16 --ignore-scripts

3、修改head插件配置文件

cd /usr/local/elasticsearch-head/
cp Gruntfile.js Gruntfile.js.bak
vim Gruntfile.js

Su+ELK实现网络监测(2)——ELK安装与配置

4、启动

》首先确认elasticsearch已经启动

[es@localhost /usr/local/elasticsearch]$ bin/elasticsearch -d
[es@localhost /usr/local/elasticsearch]$ jps                     # jps是java提供的一个显示当前所有java进程pid的命令
3261 Elasticsearch                                               # 适合在linux/unix平台上简单察看当前java进程的一些简单情况
3375 Jps
[es@localhost /usr/local/elasticsearch]$ kill 3261               # 如果需要终止ElasticSearch,可以这样操作

》启动head

cd /usr/local/elasticsearch-head
grunt server

如果启动head过程,出现如下报错:
Su+ELK实现网络监测(2)——ELK安装与配置
解决方法是:cnpm install grunt --save-dev

》启动成功,访问9100端口
Su+ELK实现网络监测(2)——ELK安装与配置
如果出现“未连接”,请修改localhost为192.168.234.10(在es库elasticsearch.yml 文件中设置的network.host),然后单击“连接”按钮

五、logstash部署

1、安装

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz
tar -zxf logstash-7.5.0.tar.gz
mv logstash-7.5.0 /usr/local/logstash

2、修改配置文件

cd /usr/local/logstash/config
cp logstash-sample.conf logstash.conf

vim logstash.conf 修改如下配置:
Su+ELK实现网络监测(2)——ELK安装与配置

3、验证配置文件

cd /usr/local/logstash/bin
./logstash -f /usr/local/logstash/config/logstash.conf --config.test_and_exit

Su+ELK实现网络监测(2)——ELK安装与配置

4、设置数据源日志输出

配置服务器的ip以及配置的监听端口

cat >> /etc/rsyslog.conf <<"EOF"
#### RULES ####
*.* @@192.168.234.10:10514                      # 增加自己服务器IP
EOF
systemctl restart rsyslog                       # 重启rsyslog,让配置生效

5、启动

cd /usr/local/logstash/bin
./logstash -f /usr/local/logstash/config/logstash.conf

使用Shell软件远程登录到此服务器,测试一下有没有日志输出:

Su+ELK实现网络监测(2)——ELK安装与配置

检查一下10514端口是否已被监听:

yum -y install net-tools
netstat -lntp | grep 10514

如果端口正常监听了,那么logstash服务就启动成功:
Su+ELK实现网络监测(2)——ELK安装与配置

但如图所示,如果不改成宿主机的IP,默认使用 127.0.0.1,这样外面的机器是无法通过TCP/HTTP等方式访问的
因此,还需要修改配置文件logstash.yml,修改完后重启Logstash

vim /usr/local/logstash/config/logstash.yml
http.host: "192.168.234.10"

至此,logstash配置完成。后续将结合suricata获取到的数据信息输出到es(修改相关配置文件)

六、kibana部署

1、安装

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-linux-x86_64.tar.gz
tar -zxf kibana-7.5.1-linux-x86_64.tar.gz
mv kibana-7.5.1-linux-x86_64 /usr/local/kibana

2、修改配置文件

vim /usr/local/kibana/config/kibana.yml
#编辑内容如下:server.port: 5601                                               # Kibana 运行端口
server.host: "192.168.234.10"                                    # Kibana服务主机
server.name: "kibana"                                           # Kibana服务名称
elasticsearch.hosts: ["http://192.168.234.10:9200"]              # 指定ES访问地址
i18n.locale: "zh-CN "                                           # 指定语言 English - en , Chinese - zh-CN

3、启动

cd /usr/local/kibana/bin
./kibana --allow-root

浏览器输入该地址进行访问: http:192.168.234.10:5601 页面展示如下:
Su+ELK实现网络监测(2)——ELK安装与配置

4、创建索引

后续将结合suricata获取到的数据信息输出到es,便可以在此创建索引来查看相关数据

Su+ELK实现网络监测(2)——ELK安装与配置
Su+ELK实现网络监测(2)——ELK安装与配置
Su+ELK实现网络监测(2)——ELK安装与配置

还可以根据需要创建Kibana看板,也可下载相关看板json文件进行导入
Su+ELK实现网络监测(2)——ELK安装与配置

至此,ELK 安装完成,后续的详细配置信息,见下一篇文章

七、参考资料

  • 使用Suricata和ELK进行流量检测 - 知乎
  • Suricata+ELK集群监控办公网流量-CSDN博客
  • ElasticSearch-7.5.1安装部署-备份-CSDN博客
  • 使用Suricata构建网络层入侵检测 | MaliciousKr.Cc
  • suricata + ELK保姆级搭建入侵检测/入侵防御02 — ELK搭建-CSDN博客
  • CentOS7 安装 Logstash-CSDN博客

赞一把