搭建 EFK 日志平台并收集系统和 nginx 日志
1. 基于 filebeat 的 EFK 架构概述
1.1 FileBeat 概述
Filebeat 是本地文件的日志数据采集器,可监控日志目录戒特定日志文件(tail file),并将它们转发给 Elasticsearch 戒 Logstatsh 迚行索引、kafka 等。
ELK 和 EFK 区别:
ELK 是 elasticsearch、logstatsh、Kibana 三种软件集成的日志搜集展示的框架。
EFK 是 Elasticsearch 、FileBeat、Kibana 三种软件集成的日志搜集展示的框架。
logstatsh 和 FileBeat 区别:
相同点:logstatsh 和 FileBeat 都可以负责收集日志。
Filebeat 相对于 Logstash 优点好处:
侵入低,无需修改程序目前任何代码和配置
Filebeat 相对于 Logstash 来说性能高,Logstash 对于 IO 占用徆大
1.2 基于 filebeat 的 ELK 实验拓扑图

本章使用设备清单及配置
启动 node1,访问:http://192.168.120.191:9200/_cluster/health?pretty 发现是 green 状态。

然后再开始下面的实验。
总结: 要先把 elasticsearch 主启动成功后,再启动往下的结点。
2. 使用 filebeat 收集系统日志
在 node2 上安装 filebeat
filebeat 是 beats 体系中用于收集日志信息的工具
上传 filebeat 到 linux 系统上
[root@node2 ~]# rpm -ivh filebeat-7.8.1-x86_64.rpm或在线下载安装:
[root@node2 ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.1-x86_64.rpm
[root@node2 ~]# rpm -ivh filebeat-7.8.1-x86_64.rpm安装完成之后编辑配置文件:
[root@node2 ~]# vim /etc/filebeat/filebeat.yml # 增加戒者更改为以下内容
改:149 hosts: ["localhost:9200"]
为: hosts: ["192.168.120.191:9200"] # 指定让日志输出给 es 服务器,这里写 ES 的 ip 地址启动 filebeat:
[root@node2 ~]# systemctl start filebeat && systemctl enable filebeat && systemctl status filebeat
[root@node2 ~]# ps axu | grep filebeat
root 2059 5.6 1.0 570096 43048 ? Ssl 10:15 0:00 /usr/share/filebeat/bin/filebeat -environment systemd -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat
root 2095 0.0 0.0 112824 976 pts/0 S+ 10:15 0:00 grep --color=auto filebeat到 es 服务器上查看索引: http://192.168.120.191:9200/_cat/indices?v

3. 实战-收集系统和 sshd 服务器日志并配置仪表盘展示数据
3.1 配置 filebeat 和 kibana 通信并将导入仪表盘数据导入 kibana
# 查看 Filebeat 收集服务日志的常用模块
[root@node2 ~]# filebeat modules list 
#配置 filebeat 和 kibana 通信
[root@node2 ~]# vim /etc/filebeat/filebeat.yml
改:
72 reload.enabled: false
为:
73 reload.enabled: true
#注:reload.enabled: 设置 true 为时,启用动态加载配置文件。即当日志的 path 定义的配置文件发生更改后,实时重新加载配置文件,不需要重启 filebeat 服务。[root@node1 ~]# systemctl start kibana
#指定 Kibana 地址,用于安装 filebeat 仪表盘。在第 117 行下添加 kibana 地址即可。host:前面的空格丌能省略。
[root@node2 ~]# vim /etc/filebeat/filebeat.yml
116 setup.kibana:
117 host: "192.168.120.191:5601"重启 filebeat
[root@node2 ~]# systemctl restart filebeat导入仪表盘,导入需要等待片刻
导入仪表盘之前,打开 http://192.168.120.191:5601/,查看 Dashborad,是没有现成的仪表盘:

[root@ode2 ~]# filebeat -c /etc/filebeat/filebeat.yml setup
3.2 配置 filebeat 采集 system 日志
1、启动 system 日志收集模块
查看一下模块配置,文件,默认都.disabled 结尾,代表不采集
[root@node2 ~]# cd /etc/filebeat/modules.d/
[root@node2 /etc/filebeat/modules.d]# ls
activemq.yml.disabled logstash.yml.disabled
apache.yml.disabled misp.yml.disabled
auditd.yml.disabled mongodb.yml.disabled
aws.yml.disabled mssql.yml.disabled
[root@node2 ~]# ls /etc/filebeat/modules.d/system*
/etc/filebeat/modules.d/system.yml.disabled #结尾是.disabled,表示关闭
[root@node2 ~]# filebeat modules enable system #启动 system 模块
Enabled system
[root@node2 ~]# ls /etc/filebeat/modules.d/system*
/etc/filebeat/modules.d/system.yml2、指定 filebeat 的 system 模块采集系统和 sshd 服务的日志路径
[root@node2 ~]# vim /etc/filebeat/modules.d/system.yml
7 enabled: true
8 var.paths: ["/var/log/messages"]
注:添加 messages 日志路径
13 # Authorization logs
14 auth:
15 enabled: true
16 var.paths: ["/var/log/secure"]
注:添加 sshd 登录认证日志路径
[root@node2 ~]# systemctl restart filebeat到 es 服务器上查看索引:
http://192.168.120.191:9200/_cat/indices?v

可以看到新增了一个以 filebeat-7.8.1 开头的索引,这就代表 filesbeat 和 es 能够正常通信了。
3.3 配置 kibana 索引
在浏览器里进行访问,如:http://192.168.120.191:5601/


3.4 安装 medusa 暴力破解 sshd 服务产生 secure 日志
1、配置一个北京的 IP 地址
我们需要给 node1 和 node2 配置一个北京的 IP 地址,这样后期在暴破时,可以展示出攻击者的地理位置。
[root@node1 ~]# ifconfig ens32:0 219.143.129.63
[root@node2 ~]# ifconfig ens32:0 219.143.129.642、手动编译和安装 medusa
#安装依赖包
[root@node1 ~]# yum -y install openssl-devel libssh2-devel autoconf automake libtool
[root@node1 ~]# tar zxf medusa-2.2.tar.gz
[root@node1 ~]# cd medusa-2.2/
[root@node1 medusa-2.2]# ./configure && make -j 4 && make install 3、 Medusa 参数说明
-H [FILE] 包含目标主机名称戒者 IP 地址文件
-U [FILE] 包含测试的用户名文件
-P [FILE] 包含测试的密码文件
-O [FILE] 日志信息文件,保存暴力破解的结果
-M [TEXT] 模块执行名称
-t [NUM] 设定线程数量
-n [NUM] : Use for non-default TCP port number 指定非 22 端口号,默认 223、暴力破解 ssh 服务
例 1:通过文件来指定 host 和 user,host.txt 为目标主机名称戒者 IP 地址,user.txt 指定需要暴力破解的用户名, 使用 wordlist.txt 字典进行暴破。
上传 wordlist.txt 字典到 Linux 系统上
#取 20 个密码,放到 b.txt。如果直接使用这个字典,用时太长了
[root@node1 ~]# mv 400万条-弱口令字典-wordlist.txt wordlist.txt
[root@node1 ~]# head -n 20 wordlist.txt > b.txt
#写入正确的密码
[root@node1 ~]# echo 1 >> b.txt
#指定暴破的 IP,一行一个
[root@node1 ~]# echo 219.143.129.64 > /root/host.txt
#插入以下多个用户
[root@node1 ~]# vim /root/users.txt
admin
administrator
root
[root@node1 ~]# medusa -M ssh -H ./host.txt -U ./users.txt -t 8 -P b.txt -O hack.log如图所示,破解成功后会显示 success 字样,并将暴解的结果放到 hack.log 中

4、使用密钥登录系统,生成一些成功登录的日志
[root@node1 ~]# ssh-keygen
[root@node1 ~]# ssh-copy-id 219.143.129.64
[root@node1 ~]# ssh 219.143.129.64 #来回多登录几次
[root@node1 ~]# exit3.5 通过 kibana 仦表盘查分析 SSH 暴力破解日志

通过这里,可以看到暴破解 sshd 服务的 IP 地址的位置信息分布情况。我们 IP 是北京的。
4. 实战-收集 Nginx 日志并配置 Kibana 仪表盘展示数据
4.1 使用 filebeat 收集 nginx 日志
#安装 epel 源
[root@node2 ~]# yum install -y epel-release
#安装 nginx
[root@node2 ~]# yum install -y nginx
#启动 nginx
[root@node2 ~]# systemctl enable --now nginx启动 filebeat 中的 nginx 模块
[root@node2 ~]# filebeat modules enable nginx
Enabled nginx指定 filebeat 的 nginx 模块采集 nginx 服务的日志路径
[root@node2 ~]# vim /etc/filebeat/modules.d/nginx.yml
6 access:
7 enabled: true
8 var.paths: ["/var/log/nginx/access.log"]
#添加 access 日志路径。
14 error:
15 enabled: true
#添加 error 日志路径
16 var.paths: ["/var/log/nginx/error.log"]
#效果如下,注意 var.paths 要和 enabled 前面的空格对齐:
[root@node2 ~]# systemctl restart filebeat互动: 修改完/etc/filebeat/modules.d/nginx.yml 后,需要重启 filebeat 服务吗?答: 不需要。因为前面开启了这个参数。如下:

4.2 产生一些 nginx 正常访问和错误日志
[root@node2 ~]# cp /etc/passwd /usr/share/nginx/html/index.html
cp:是否覆盖"/usr/share/nginx/html/index.html"? y通过 ab 命令迚行快速产生一些日志:
[root@node2 ~]# yum install -y httpd-tools
#生成正常访问日志:
[root@node2 ~]# ab -n 10000 -c 100 http://219.143.129.64/index.html
#访问一个不存在的页面,生成错误日志:
[root@node2 ~]# ab -n 10000 -c 100 http://219.143.129.64/aaa.html
#访问一个图片页面,生成日志:
[root@node2 ~]# ab -n 10000 -c 100 http://219.143.129.64/nginx-logo.png4.3 Kibana 通过仦表盘展示 nginx 日志
迚入仪表盘:http://192.168.120.191:5601/


