服务器运维之日志审计
1.前言
最近接了一个等保的项目,除了应用系统的问题修复之外,还要有服务器的防护,比如入侵检测,日志审计,边界检测等,要想不花钱解决问题怎么办呢?
ELK是Elasticsearch、Logstash、Kibana的简称,简单来说就是一个日志分析管理系统,当然这是最常用的,还有很多高端功能。安装配置的顺序就是Java->Elasticsearch->Logstash->Kibana。
刚开始我是在windows server 2008 R2上安装了jdk17.0.3.1,elesticsearch-8.2.0,logstash-8.2.0,kibana-8,2.0,结果最后的kibana的node版本不支持2008R2,结果只能降级到了ELK 6.8.23,jdk我重新配置指向了 openjdk 13.0.2,所以有些配置可能就不需要做了,比如 elasticsearch的ssl认证。
1.Windows最新版ELK日志分析系统搭建教程(附带便捷启动方案)
2.等保测评2.0:Windows安全审计
3.快速理解ELK 1.elasticsearch是核心负责数据的存储,对数据做索引并提供检索服务.2.logstash是原始数据的传输通道,提供一些高级的功能,比如对原始数据做一些处理将无格式的数据转化为某种格式的数据后提供给elasticsearch。3.beats是数据的采集代理,一般安装在被采集的服务器上,抓取目标服务器的各项数据传输给logstash。4.至于kibana则是前端的展示,用于将elasticsearch的数据直观的呈现出来.
2.安装JAVA
下载jdk-17->解压到本地目录,配置环境变量Path,运行:java -version 测试是否成功。
3.安装Elasticsearch
(1) 下载压缩包,解压到任意目录
(2) 修改conf下elasticsearch.yml配置文件
- 设置ip地址,任意网络均可访问,取消注释:network.host: 0.0.0.0
下面的内容,是版本 8.2.0 要设置的内容,如果是版本6.8.23 可以不用设置
- 关闭 ssl 认证,把 xpack.security.http.ssl:enabled 设置成 false
- 关闭windows 的 elasticsearch 账号密码,把 xpack.security.enabled 属性设置为 false 即可,当然也可以设使用 elasticsearch-setup-passwords interactive 设置密码
- 设置内存大小,在 config/jvm.options 文件中直接设置就好(追加):-Xms512m -Xmx2048m
(3) 到bin目录,执行elasticsearch.bat文件。
(4) 浏览器打开 locahost:9200 测试
(5) 设置用户名密码
修改 elasticsearch.yml,增加以下内容:
1 | http.cors.enabled: true |
1 | ## windows下使用cmd窗口输入,根据提示生成一系列的密码 |
1.Start the Elastic Stack with security enabled
2.Windows下安装Elasticsearch,启动报错,解决方法,访问 这里提供了msi安装到方式进行elasticsearch安装
3.ElasticSearch设置账户密码(Docker,Windows,Linux适用)
问题
(1) UnknownHostException:geoip.elastic.co
启动elasticsearch.bat的时候,出现了下面的问题。
【解决】
修改 config\elasticsearch.yml 文件,增加:ingest.geoip.downloader.enabled: false 配置。
1.java.net.UnknownHostException: geoip.elastic.co 这里还有些其他的错误,是整个的安装配置过程。
(2) 9200无法访问
我启动elasticsearch.bat之后,访问9200端口,还是无法访问。即便我修改了 config\elasticsearch.yml 文件,增加了 network.host: 0.0.0.0 也不行。
显示:[DESKTOP-ASEA1FB] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200, remoteAddress=/127.0.0.1:59014}
【解决】
修改配置文件 config\elasticsearch.yml 文件,将 xpack.security.http.ssl:enabled 设置成 false。
1.无法访问9200端口的ElasticSearch服务
2.elasticSearch本地可以访问网页无法访问的解决方法
3.ElasticSearch 爬坑记录 这里给了解决方法,主要就是因为开启了ssl认证,windows 下直接启动 ElasticSearch ,见到 started 为成功启动,访问 htttp://localhost:9200 需要输入密码,是因为开启了密码验证模式。还有 Permission denied 问题,this version of the Java Runtime only recognizes 的java版本问题。
4.ElasticSearch设置账户密码(Docker,Windows,Linux适用)
5.拒绝裸奔,为 Elasticsearch 设置账号密码(qbit)
6.Elasticsearch、Logstash、Kibana手把手教你添加密码设置 这里还有logstash设置密码部分
4.安装Logstash
(1) 下载 Logstash
(2) conf目录下创建logstash.conf文件
1 | input { |
(3) 打开cmd进入bin目录运行:
1 | logstash -f C:\Soft\logstash-6.8.23.0\config\logstash.conf |
(4) 浏览器打开 locahost:9600 测试,会有版本号输出。
(5) 用户名密码
修改config/logstash.yml配置文件,这个有没有用,其实我有点疑惑,因为我使用了上面的logstash.conf配置启动,可能就不需要这里的配置了。
1 | xpack.monitoring.enabled: false |
1.Windows安装logstash 单独安装了logstash
2.Windows环境安装Logstash和Logstash-input-jdbc
3.windows环境下Logstash 安装配置使用 使用NSSM将Logstash安装为Windows服务,还介绍了Logstash的工作原理
问题
(1) Logstash stopped processing because of an error: (SystemExit) exit
启动logstash之后,直接报错了。查看日志文件,这里有一个显示:No config files found in path {:path=>”C:/Soft/config/logstash.conf”},但是我的目录是 C:\Soft\logstash-8.2.0\config
1 |
|
【解决】
这个问题主要就是配置文件的问题,使用logstash -f 加载配置文件的时候,要代入绝对路径,比如:
1 | logstash -f C:\Soft\logstash-8.2.0\config\logstash.conf |
1.Logstash stopped processing because of an error: (SystemExit) exit
2.Running Logstash on Windows Write-Host $env:LS_JAVA_HOME;Running Logstash manually;Running Logstash as a service with NSSM
3.Elasticsearch、Logstash、Kibana添加密码步骤 这里有相关的密码配置
5.安装Kibana
(1) 下载Kibana,解压到任意目录
(2) 修改 config目录修改kibana.yml配置文件
1 | server.port: 5601 |
(3) 启动bin/kibana.bat
(4) 测试:localhost:5601,会进入管理控制台
1.ELK Stack Install on Windows Server 2008 R2 视频介绍如何在windows 2008上安装ELK,node-v4.2.2-x64,ELK的版本也是比较老的
2.ELK Stack Install on Windows Server 2008 R2 这个是上面的文字介绍。
问题
(1) Node.js is only supported on Windows 8.1, Windows Server 2012 R2
我是在windows server 2008R2上安装的,结果报了这个错误。
1 | C:\Soft\kibana-8.2.0\bin>kibana.bat |
【解决】
配置了环境变量:NODE_SKIP_PLATFORM_CHECK =1,不再报上面的错误了,但是出现了下面的问题。
1.启动Kibana报错 Node.js is only supported on Windows 8.1 Kibana server is not ready yet 这里设置了一个NODE_SKIP_PLATFORM_CHECK变量,还有NODE_PATH变量
2.Which version of Node JS supported for “Windows Server 2008 R2 standard” with Service Pack 1(64 bit)? Will Node JS 10.x supported?
(2) A system error occurred: uv_os_gethostname returned ENOSYS
1 |
|
【解决】
因为我的是windows 2008 R2系统,经过多次尝试,最后改为了 kibana 6.8.23 版本尝试安装。
1.win 下启动 kibana 启动失败 解决 试着以 管理员身份启动 Kibana.bat;第一次启动 Kibana 可能耗时有点久,特别是 电脑配置不高的情况下,所以当 窗口 没内容的时候,不防等待 5分钟看看
6.Winlogbeat
使用Winlogbeat收集Windows日志,并用ES + Kibana检索的配置方法。
(1) 下载 winlogbeat,解压到任意目录。
(2) 修改 winlogbeat.yml 配置文件,主要包括下面的内容
- 1.在event_logs章节,指定你要监控的event log类型,Winlogbeat默认监控application, security, and system这三种。
1 | winlogbeat.event_logs: |
- 2.如果需要把日志发送到Elasticsearch,output.elasticsearch 这里把IP端口写进去
- 3.如果要把日志写到Logstash,需要其他的配置。要将日志通过Logstash写到ES,需要先配置Logstash的转发规则。配置好以后确保Logstash已经启动且运行正常。接下来要配置Winlogbeat将日志发送到Logstash的5044端口
(3) 测试
以管理员身份运行PowerShell,进入到winlogbeat目录,执行下面的命令
1 | .\winlogbeat.exe -c .\winlogbeat.yml -configtest -e |
(4) 安装为系统服务
使用PowerShell脚本,就可以将winlogbeat安装为系统服务,在系统的服务里面,可以进行服务启动停止
1 | ## 运行安装命令 |
(5) 查看数据
如何查看数据,这个也是让我废了一番脑筋,毕竟是一个小白,什么都不懂。
(1) 我打开了kibana的控制台 localhost:5601
(2) 在菜单栏的管理设置里面,创建了一个索引模式,我用的是winlogbeat*,其他的都是随便选的
(3) 然后再打开Discover,就可以看到数据了。而且我把 winlogbeat.event_logs 这里面的 ignore_older 参数全部的删除了,这样所有已有的数据应该就是都能接收到了。
1.基于ELK实现Windows服务器系统日志监控 这里只是说了如何配置安装Winlogbeat,默认是已经安装了 Elasticsearch、Logstash等组件,可以将日志输出到Elasticsearch,输出到Lgstash等组件。这里还有加载索引模板、加载Kibana仪表盘样例,这里应该是高版本提供的功能,低版本没有 scripts 文件夹,6.8.23 只有一个kibana文件夹,不知道用来干什么的。
2.轻量型 Windows 事件日志采集器
3.winlogbeat采集windows系统日志 这个单独的写winlogbeat,很多地方比较详细的,包括下载安装,修改配置文件,启动停止和服务等
4.winlogbeat收集windows系统日志 这个其实挺简单的
5.winlogbeat-收集windows事件日志并启用默认模板、dashboard相关配置 收集并写入kafka相关配置:
6.Winlogbeat之配置 4 1. 在事件日志部分,指定要监视的事件日志,默认情况下,Winlogbeat设置为监视应用程序、安全性和系统日志;2.配置输出。Winlogbeat支持多种输出,但通常您可以将事件直接发送到Elasticsearch,或发送到Logstash以进行其他处理;3. 如果计划使用Winlogbeat提供的示例Kibana仪表板,请配置Kibana端点。如果Kibana与Elasticsearch在同一主机上运行,则可以跳过此步骤;4. 如果Elasticsearch和Kibana是安全的,请在winlogbeat.yml在运行设置和启动Winlogbeat的命令之前配置文件。5. 保存配置文件后,使用 .\winlogbeat.exe test config -c .\winlogbeat.yml -e 进行测试。