安装SIEM

安全性资讯与事件 (SIEM) 是一种解决方案,可协助组织在威胁伤害企业运行之前,先进行侦测、分析和回应安全性威胁。以下使用centos7安装Elastic SIEM。

使用Ubuntu安装:https://blog.csdn.net/UbuntuTouch/article/details/114023944

https://elasticstack.blog.csdn.net/article/details/112647180

安装Elasticsearch

创建RPM配置/etc/yum.repos.d/elasticsearch.repo

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

安装

yum install --enablerepo=elasticsearch elasticsearch

或者下载rpm文件

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3-x86_64.rpm
sudo rpm --install elasticsearch-7.16.3-x86_64.rpm

修改/etc/elasticsearch/elasticsearch.yml

cluster.name: demo-elk
node.name: elk-1
network.host: 0.0.0.0
discovery.type: single-node

启动es

service elasticsearch start

安装kibana

同样创建配置/etc/yum.repos.d/kibana.repo

[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装

yum install kibana

或者下载rpm文件

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.16.3-x86_64.rpm
sudo rpm --install kibana-7.16.3-x86_64.rpm

编辑配置文件/etc/kibana/kibana.yml

server_port: 5601
server_host: 0.0.0.0
server_name: demo-kibana

启动

service kibana start

安装Filebeat

yum install filebeat

安装 Zeek

一些需要的组件

yum install cmake gcc-c++ gcc make flex bison swig python3 python3-devel

下载

git clone --recursive https://github.com/zeek/zeek

配置环境

./configure --prefix=/opt/zeek

如果显示cmake版本不对,则去下载cmake

wget https://cmake.org/files/v3.18/cmake-3.18.6-Linux-x86_64.tar.gz -O /opt/
yum remove cmake
# 编辑环境变量写入
export CMAKE_HOME=/opt/cmake
export PATH=$PATH:$CMAKE_HOME/bin
source /etc/profile
cmake -version

再此执行上面的命令如果报错No CMAKE_CXX_COMPILER could be found,安装gcc-c++

yum install gcc-c++

如果报错 Could NOT find ZLIB,安装zlib

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xvzf zlib-1.2.11
./configure
make && make install

如果报错 Could not find prerequisite package 'PCAP',安装libpcap

wget https://www.tcpdump.org/release/libpcap-1.10.1.tar.gz
tar -zxvf libpcap-1.10.1.tar.gz
cd libpcap-1.10.1
./configure
make -j8
make install

如果报错Could not find prerequisite package 'OpenSSL',安装libssl

yum install openssl-devel

如果提示GCC版本过低,scl源安装多版本gcc

yum install centos-release-scl
yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash

安装基本就可以成功,但是时间有点长,添加环境变量

export PATH=/opt/zeek/bin:$PATH

在 /opt/zeek/etc 找到一个叫做 node.cfg 的配置文件。修改网卡名

interface=ens33

安装sendmail

yum install sendmail

部署zeek

zeekctl deploy

在 /opt/zeek/logs 目录里发现日志。“current” 目录保存当天的日志,而前几天的日志则存档到其自己的目录中。

配置安全访问

需要创建一个 YAML 文件 /usr/share/elasticsearch/instances.yml

instances:
 - name: "elasticsearch"
   ip:"192.168.0.4"
 - name: "kibana"
   ip:"192.168.0.4"
 - name: "zeek"
   ip:"192.168.0.4"

运行生成证书

/usr/share/elasticsearch/bin/elasticsearch-certutil cert ca --pem --in instances.yml --out certs.zip

如果报错,说明如下是格式对其上有问题

expected <block end>, but found '<block mapping start>'
 in 'reader', line 3, column 3:
      ip: "192.168.36.133"
      ^

正常生成后,在运行解压缩

unzip /usr/share/elasticsearch/certs.zip -d /usr/share/elasticsearch/

配置 Elasticsearch SSL

创建一个文件夹将你的证书存储在我们的 Elasticsearch 主机上。

mkdir /etc/elasticsearch/certs/ca -p

需要将解压缩的证书复制到其相关文件夹中并设置正确的权限。

cp ca/ca.crt /etc/elasticsearch/certs/ca
cp elasticsearch/elasticsearch.crt /etc/elasticsearch/certs
cp elasticsearch/elasticsearch.key /etc/elasticsearch/certs
chown -R elasticsearch: /etc/elasticsearch/certs
chmod -R 770 /etc/elasticsearch/certs

将 SSL 配置添加到我们的 /etc/elasticsearch/elasticsearch.yml 文件

# Transport layer
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: /etc/elasticsearch/certs/elasticsearch.key
xpack.security.transport.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crt
xpack.security.transport.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]
  
# HTTP layer
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.verification_mode: certificate
xpack.security.http.ssl.key: /etc/elasticsearch/certs/elasticsearch.key
xpack.security.http.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crt
xpack.security.http.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]

重新启动 Elasticsearch。

service elasticsearch restart

配置 Kibana SSL

配置证书

mkdir /etc/kibana/certs/ca -p
cp ca/ca.crt /etc/kibana/certs/ca
cp kibana/kibana.crt /etc/kibana/certs
cp kibana/kibana.key /etc/kibana/certs
chown -R kibana: /etc/kibana/certs
chmod -R 770 /etc/kibana/certs

文件 /etc/kibana/kibana.yml

elasticsearch.hosts: ["https://192.168.36.133:9200"]
elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/certs/ca/ca.crt"]
elasticsearch.ssl.certificate: "/etc/kibana/certs/kibana.crt"
elasticsearch.ssl.key: "/etc/kibana/certs/kibana.key"
​
#在 Kibana 和浏览器之间添加配置
server.ssl.enabled: true
server.ssl.certificate: "/etc/kibana/certs/kibana.crt"
server.ssl.key: "/etc/kibana/certs/kibana.key"

重新启动

service kibana restart

配置 Beats (Zeek) SSL

首先将证书复制到运行 Zeek 的主机上,然后使用正确的权限创建证书目录。 您需要同时复制 Zeek 证书和 CA 证书。

mkdir /etc/filebeat/certs/ca -p
cp ca/ca.crt /etc/filebeat/certs/ca
cp zeek/zeek.crt /etc/filebeat/certs
cp zeek/zeek.key /etc/filebeat/certs
chmod 770 -R /etc/filebeat/certs

修改配置/etc/filebeat/filebeat.yml

output.elasticsearch.hosts: ['192.168.36.133:9200']
output.elasticsearch.protocol: https
output.elasticsearch.ssl.certificate: "/etc/filebeat/certs/zeek.crt"
output.elasticsearch.ssl.key: "/etc/filebeat/certs/zeek.key"
output.elasticsearch.ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]
​
setup.kibana:
  host: "https://192.168.36.133:5601"
  ssl.enabled: true
  ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]
  ssl.certificate: "/etc/filebeat/certs/zeek.crt"
  ssl.key: "/etc/filebeat/certs/zeek.key"

重启filebeat

service filebeat restart

运行以下命令来检查 FileBeats 是否可以连接到 Elasticsearch。 一切都应该返回“OK”。

filebeat test output

至此,如果想在Integrations添加集成模块,会提示不能添加,需要管理员设置,说明没有认证。

添加身份验证

编辑 /etc/elasticsearch/elasticsearch.yml 启用安全

xpack.security.enabled: true

重新启动 Elasticsearch:

service elasticsearch restart

Elasticsearch 附带了一个工具来执行此操作。 运行以下命令以生成这些密码并将其保存在安全的地方

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

会设置多个账号密码,可以按照需要来修改,此处使用admin123,相同的设置。

这时候再去访问9200端口发现需要身份认证。同样kibana也不能访问,修改配置/etc/kibana/kibana.yml

elasticsearch.username: "kibana_system"
elasticsearch.password: "admin123"

重新启动 Kibana:

service kibana restart

修改Filebeat 配置/etc/filebeat/filebeat.yml

output.elasticsearch.username: "elastic"
output.elasticsearch.password: "admin123"

重新启动 Filebeat:

service filebeat restart

安装证书

链接显示不好安全链接,且本地不能验证证书,这里添加证书到本地验证,也就是生成的ca.cer添加到受信任的根证书机构中。

Management > Fleet。第一次访问此页面时,可能需要一分钟才能加载。

添加 Zeek

添加 Zeek 数据到 Elasticsearch,在集成模块中选择Zeek Logs。

使用如下的命令来启动 zeek 模块:

filebeat modules enable zeek

@load policy/tuning/json-logs.zeek 行编辑到文件 /opt/zeek/share/zeek/site/local.zeek中。

保存好文件,并重新启动 zeek:

zeekctl deploy

现在检查日志是否为 JSON 格式。 即使你不熟悉 JSON,日志的格式也应该与以前明显不同。

tail -f /opt/zeek/logs/current/status.log

编辑配置文件 /etc/filebeat/modules.d/zeek.yml。对于 /opt/zeek/logs/ 文件夹中的每个日志文件,必须定义 “current” 日志的路径以及以前的任何日志,如下所示,需要把配置中的全部都修改一下。

dns:
  enabled: true
  var.paths: [ "/opt/zeek/logs/current/dns.log", "/opt/zeek/logs/*.dns.json" ]

不希望 Elasticsearch 提取这些文件,则只需将 “enabled” 字段设置为 false。 重要的是,将在 /opt/zeek/logs中没有日志文件的所有日志源设置为 enabled: false,否则会收到错误消息。

启动 Filebeat 并启动该服务。

sudo filebeat setup
sudo service filebeat restart

点击上面的 Zeek Overview 按钮, 我们将看到 Zeek 的信息

启动检测

security–Detections中点击View document。编辑你的 Kibana 配置件 /etc/kibana/kibana.yml,然后添加 xpack.encryptedSavedObjects.encryptionKey。

xpack.security.enabled: true
# xpack.fleet.agents.tlsCheckDisabled: true
xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters"

重新启动 Kibana:

service kibana restart

经过上面的设置后,我们终于可以创建检测规则了。在Rules下的Create new rule。

安装 Endpoint agent

跟上面有些区别,但区别不大。先安装es和kibana。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3-amd64.deb
sudo dpkg -i elasticsearch-7.16.3-amd64.deb
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.16.3-amd64.deb
sudo dpkg -i kibana-7.16.3-amd64.deb

修改es配置/etc/elasticsearch/elasticsearch.yml

network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

启动es

sudo service elasticsearch start

需要先设置密码

sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

修改kibana配置/etc/kibana/kibana.yml

server.host: "192.168.36.135"
elasticsearch.username: "kibana_system"
elasticsearch.password: "admin123"
xpack.security.enabled: true
xpack.fleet.agents.tlsCheckDisabled: true
xpack.encryptedSavedObjects.encryptionKey: "AE3CA37A74386E07E471EEB842720384"

启动kibana

sudo service kibana start

7.11.1

然后在security选项中选择Fleet,在页面Add Fleet Server integration下配置规则。

点击create new policy创建规则。

选择后点击save,在Agent policies下的规则内点击add agent。

下载agent:https://www.elastic.co/cn/downloads/past-releases/elastic-agent-7-11-1

运行的时候那个命令可能缺个参数–insecure,

sudo ./elastic-agent install --insecure -f --kibana-url=http://192.168.36.135:5601 --enrollment-token=WmJhTm5uNEJBbmthYjZpY0ZyZ2M6NktXX3NHbU5UUTJlZlhZTGc2QlVVdw==

agent端显示healthy表示安装正常。

7.16.3

刚开始启动的时候可能需要一点时间,才能访问页面。输入设定好的账号密码。

image-20220207152716004

先在Integrations下选择endpoint security,点击右上角的ADD endpoint security。

image-20220207153026139

image-20220207153039583

跳转到Fleet页面,这个页面加载估计需要一分钟左右,创建Configure integration,设置集成名。点击下面的创建agent规则,或者使用默认规则。

image-20220207153208610

关闭了收集agent日志

image-20220207153304004

点击右下角的save and continue。

弹窗出来Endpoint Security integration added页面,点击右边的按钮。

image-20220207153430305

点击agent的名字,选择上面的Add integration。搜索fleet server。点击添加。save保存即可。

image-20220207153631185

image-20220207153646839

image-20220207153708078

保存后再点击按钮,又到了这个页面,可以看到多了一个集成工具

image-20220207153838907

右上角fleet setting配置fleet和es地址

http://192.168.36.135:8220
http://192.168.36.135:9200

点击保存应用。

image-20220207153950309

下载agent:https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-7.16.3-linux-x86_64.tar.gz

选择对应的agent规则

image-20220207154329008

按照页面上的命令安装,上面选择的是快速安装,系统安装成功后会显示successfully installed。

image-20220207155032007

页面上也会显示Fleet Server connected。

image-20220207155043773

再fleet的页面下也可以看到添加成功的agent主机信息

image-20220207155135103

再security下选择Rules去启用规则,点击Select all 623 rules,再bulk actions中选择第一个启用。

image-20220207155215387

其中有一些是需要机器学习来启用的,这个是付费功能,我们暂时不管,如果有报错,那可能是一次启用太多,多试几次,或者分开启用。

如果需要添加代理,则在同页面下的endpoint下去选择集成添加即可。

image-20220207155417350

在alerts页面下可以看到告警,这个我们安装一个挖矿程序。

curl -O 2.58.149.237:6972/hoze

在alerts页面下就可以看到几条告警

image-20220207164305602

点击分析事件,看到调用关系。点击其中执行的命令可以看到具体的调用参数。

image-20220207164603069

如果一直没看到数据,需要查看添加agent的时候是不是选对规则了,这里设置的一个test policy。在Fleet中查看agent的规则,如果发现不是我们自己设定的规则,那需要修改一下规则。

在agent policies中可以看到规则中存在的主机系统。

image-20220207164713461

以上的告警,也可以在Analytics中查看,Discover,比如筛选其中的进程md5hash。

image-20220207165231075





# Open Source Security  

tocToc: