在 Ubuntu 20.04 上安装 Zeek

[ad_1]

按照本教程学习如何在 Ubuntu 20.04 上安装 Zeek。 Zeek,前身为 Bro IDS,是全球领先的被动开源网络安全监控工具。

Zeek 不是主动安全设备,如防火墙或入侵防御系统。 相反,Zeek 位于一个“传感器”上,它是一个硬件、软件、虚拟或云平台,可以安静地、不引人注目地观察网络流量。 Zeek 解释其所见并创建紧凑、高保真事务日志、文件内容和完全自定义的输出,适用于在磁盘上或在对分析人员更友好的工具(如安全和信息事件管理 (SIEM) 系统)中进行手动审查。

在 Ubuntu 20.04 上安装 Zeek

那么如何在 Ubuntu 20.04 上安装 Zeek? 进行如下操作;

Zeek 可以通过从源代码构建它或直接通过 Zeek APT 存储库来安装。

在本教程中,我们将选择后者。

在 Ubuntu 20.04 上安装 Zeek

从 Zeek APT 存储库在 Ubuntu 20.04 上安装 Zeek;

将 Zeek 存储库添加到 Ubuntu 20.04:

echo 'deb https://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list
curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null

运行系统更新;

apt update

在撰写本文时,Zeek 4.0.1 是当前的稳定版本,通过运行以下命令确认相同;

apt-cache policy zeek
zeek:
  Installed: (none)
  Candidate: 4.0.1-0
  Version table:
     4.0.1-0 500
        500 https://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04  Packages

然后,您可以通过运行以下命令来安装 Zeek;

apt install zeek

在安装过程中,系统会提示您进行一些 Postfix 设置,选择 Internet 站点并输入您的系统 FQDN。

在 Ubuntu 20.04 上配置 Zeek

配置运行时环境

默认情况下,Zeek 安装在 /opt/zeek.

首先,将 Zeek 二进制路径添加到 PATH;

echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
source ~/.bashrc

定义要监控的本地网络

接下来,您需要告诉 Zeek 要监控哪些本地网络。 这可以在 /opt/zeek/etc/networks.cfg 配置文件。

定义的默认网络是 10.0.0.0/8、172.16.0.0/16、192.168.0.0/16. 所以,在我们的例子中,我们想要监控的网络是 192.168.59.0/24.

因此;

vim /opt/zeek/etc/networks.cfg
# List of local networks in CIDR notation, optionally followed by a
# descriptive tag.
# For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes.

#10.0.0.0/8          Private IP space
#172.16.0.0/12       Private IP space
#192.168.0.0/16      Private IP space
192.168.59.0/24      Kifarunix-demo IP space

Save 文件并在您更改网络配置后退出。

配置 Zeek 集群

Zeek 可以在独立模式或集群设置中运行。 要定义是在集群中运行还是在独立设置中运行,您需要编辑 /opt/zeek/etc/node.cfg 配置文件。

  • 对于独立配置,此文件中必须仅定义一个 Zeek 节点。
  • 对于集群配置,至少必须有一个管理节点、一个代理节点和一个或多个工作节点。

根据 Zeek 快速入门指南,使用 Zeek 的独立/单进程模式不适合具有大量流量的设置。 在这些情况下,人们几乎肯定会想要使用 Zeek 集群,即使在单个系统上也是如此。

因此,我们将看到如何设置 Zeek 集群。 您可以查看 Zeek 集群架构。

默认的 Zeek 节点配置是这样的;

cat /opt/zeek/etc/node.cfg
# Example ZeekControl node configuration.
#
# This example has a standalone node ready to go except for possibly changing
# the sniffing interface.

# This is a complete standalone configuration.  Most likely you will
# only need to change the interface.
[zeek]
type=standalone
host=localhost
interface=eth0

## Below is an example clustered configuration. If you use this,
## remove the [zeek] node above.

#[logger-1]
#type=logger
#host=localhost
#
#[manager]
#type=manager
#host=localhost
#
#[proxy-1]
#type=proxy
#host=localhost
#
#[worker-1]
#type=worker
#host=localhost
#interface=eth0
#
#[worker-2]
#type=worker
#host=localhost
#interface=eth0

由于我们在此设置中运行单节点 Zeek 集群,因此注释掉 Zeek 独立配置下的部分 [zeek] 并为您的 Zeek 定义主机地址 logger, manager, proxyworker.

那么这些组件是什么?

  • 记录器:它是一个可选的 Zeek 进程,它从集群中的其余节点接收日志消息。 它可以代替管理器使用,以减少管理器本身的负载。
  • 经理:如果未定义记录器,则从 Zeek 集群中的其余节点接收日志消息和通知。
  • 代理: 是一个 Zeek 进程,可用于卸载数据存储或任何任意工作负载。 一个集群可能包含多个代理节点。
  • 工人: 是 Zeek 进程,它嗅探网络流量并对重组的流量流进行协议分析。

下面是我们的单节点 Zeek 集群配置设置;

cat /opt/zeek/etc/node.cfg
# Example ZeekControl node configuration.
#
# This example has a standalone node ready to go except for possibly changing
# the sniffing interface.

# This is a complete standalone configuration.  Most likely you will
# only need to change the interface.
#[zeek]
#type=standalone
#host=localhost
#interface=eth0

## Below is an example clustered configuration. If you use this,
## remove the [zeek] node above.

[kifarunix-demo-zeek-logger]
type=logger
host=192.168.59.16
#
[kifarunix-demo-zeek-manager]
type=manager
host=192.168.59.16
#
[kifarunix-demo-zeek-proxy]
type=proxy
host=192.168.59.16
#
[kifarunix-demo-zeek-worker]
type=worker
host=192.168.59.16
interface=enp0s8
#
[kifarunix-demo-worker-lo]
type=worker
host=localhost
interface=lo

查看 Global ZeekControl 配置文件

接下来,您需要查看全局 ZeekControl 配置文件, /opt/zeek/etc/zeekctl.cfg.

配置文件中的大多数默认值就足够了。 您可能要在此处进行或更新的唯一更改是 Zeek 和 ZeekControl 发送的所有电子邮件的收件人地址(如果您有任何设置)。 默认值为 [email protected]

验证 Zeek 配置

在安装和启动 Zeek 之前,您需要验证配置文件;

zeekctl check
Hint: Run the zeekctl "deploy" command to get started.
kifarunix-demo-zeek-logger scripts are ok.
kifarunix-demo-zeek-manager scripts are ok.
kifarunix-demo-zeek-proxy scripts are ok.
kifarunix-demo-zeek-worker scripts are ok.
kifarunix-demo-worker-lo scripts are ok.

部署 ZeekControl 配置

如果一切正常,安装 ZeekControl 配置并启动 Zeek 实例;

zeekctl deploy
checking configurations ...
installing ...
creating policy directories ...
installing site policies ...
generating cluster-layout.zeek ...
generating local-networks.zeek ...
generating zeekctl-config.zeek ...
generating zeekctl-config.sh ...
stopping ...
stopping workers ...
stopping proxy ...
stopping manager ...
stopping logger ...
starting ...
starting logger ...
starting manager ...
starting proxy ...
starting workers ...

查看 Zeek 实例的状态

您可以通过执行来检查 Zeek 实例的状态;

zeekctl status
Name         Type    Host             Status    Pid    Started
kifarunix-demo-zeek-logger logger  192.168.59.16    running   17911  17 May 03:52:41
kifarunix-demo-zeek-manager manager 192.168.59.16    running   17962  17 May 03:52:43
kifarunix-demo-zeek-proxy proxy   192.168.59.16    running   18011  17 May 03:52:45
kifarunix-demo-zeek-worker worker  192.168.59.16    running   18081  17 May 03:52:48
kifarunix-demo-worker-lo worker  localhost        running   18082  17 May 03:52:48

检查 Zeek 日志

Zeek 将根据默认策略开始分析流量并将日志结果写入 /opt/zeek/logs/current 目录。

ls -1 /opt/zeek/logs/current/
broker.log
capture_loss.log
cluster.log
conn.log
dhcp.log
known_services.log
loaded_scripts.log
notice.log
packet_filter.log
reporter.log
stats.log
stderr.log
stdout.log
weird.log

一些值得明确提及的日志:

  • conn.log:包含在线上看到的每个连接的条目,具有基本属性,例如时间和持续时间、发起者和响应者 IP 地址、服务和端口、有效负载大小等等。 该日志提供了网络活动的全面记录。
  • notice.log:标识 Zeek 认为可能有趣、奇怪或不好的特定活动。 此类活动称为“通知”。
  • known_services.log:此日志文件包含在本地网络上检测到的服务,这些服务已知被网络上的客户端主动使用。 它有助于枚举在本地网络上观察到的所有服务,以及它们是否都是有意为网络管理员所知的。
  • weird.log:包含异常或异常活动,可能表明连接格式错误、流量不符合特定协议、硬件/服务出现故障或配置错误,甚至攻击者试图避开/混淆传感器。
  • (协议).log 例如(dns.log、dhcp.log、http.log、snmp.log):包含在每个相应协议中找到的数据包的信息。

样本 连接日志 日志;

tail /opt/zeek/logs/current/conn.log
1621277534.729878	CY3bmP18QlSIvSFxej	192.168.59.16	8132	192.168.59.16	80	tcp	-	-	-	-	RSTRH	T	T	0	^r	00	1	40	-
1621277534.729881	CGVzYD19RQxUT0Vzq	192.168.59.16	8133	192.168.59.16	80	tcp	-	-	-	-	S0	T	T	0	S	140	0	0	-
1621277534.729883	C8jp1t2D0NHoUeOiF1	192.168.59.16	8133	192.168.59.16	80	tcp	-	-	-	-	RSTRH	T	T	0	^r	00	1	40	-
1621277564.065743	CduRKb4f4bLM38gakl	192.168.59.16	47762	192.168.59.16	58282	tcp	-	-	-	-	OTH	T	T	0	Ccc00	0	0	-
1621277564.065833	CRgk0dMeT9AeMyROd	192.168.59.16	47762	192.168.59.16	58288	tcp	-	-	-	-	OTH	T	T	0	Ccc00	0	0	-
1621277564.215195	Cg09q71OaurnFkIdRe	192.168.59.16	38834	192.168.59.16	47761	tcp	-	-	-	-	OTH	T	T	0	Cc	00	0	0	-
1621277566.725573	CG17M71tH9TV52bBe7	192.168.59.16	38836	192.168.59.16	47761	tcp	-	-	-	-	OTH	T	T	0	Cc	00	0	0	-
1621277574.895432	C2aJF016ENvM3nF6da	192.168.59.16	34700	192.168.59.16	80	tcp	-	-	-	-	OTH	T	T	0	C	00	0	0	-
1621277570.315909	CQp7gp31EAsSvqgIn1	192.168.59.16	38846	192.168.59.16	47761	tcp	-	-	-	-	OTH	T	T	0	Cc	00	0	0	-
1621277574.895458	CIP6UASndf9AtymV2	192.168.59.16	34700	192.168.59.16	80	tcp	-	-	-	-	OTH	T	T	0	^cC00	0	0	-

字段和类型是;

#fields
ts	uid	id.orig_h	id.orig_p	id.resp_h	id.resp_p	proto	service	duration	orig_bytes	resp_bytes	conn_state	local_orig	local_resp	missed_bytes	history	orig_pkts	orig_ip_bytes	resp_pkts	resp_ip_bytes	tunnel_parents
#types
time	string	addr	port	addr	port	enum	string	interval	count	count	string	bool	bool	count	string	count	count	count	count	set[string]

检查 Zeek 节点进程

您可以通过执行来检查每个节点上运行的进程;

zeekctl ps.zeek <node>

例如,检查Zeek管理节点上的进程;

zeekctl ps.zeek kifarunix-demo-zeek-manager 
        USER         PID    PPID %CPU %MEM    VSZ   RSS TT       S  STARTED     TIME COMMAND
>>> 192.168.59.16
   (-) root       17911   17905  0.1  4.3 821252 88788 ?        S 03:52:41 00:00:02 zeek
   (+) root       17962   17956  0.0  4.3 642664 89200 ?        S 03:52:43 00:00:01 zeek
   (-) root       18011   18005  0.0  4.2 640972 87516 ?        S 03:52:45 00:00:01 zeek
   (-) root       18081   18069  0.1 10.7 772672 219204 ?       S 03:52:47 00:00:03 zeek
   (-) root       18082   18071  0.1 10.7 772148 218668 ?       S 03:52:47 00:00:03 zeek

这让我们结束了有关如何在 Ubuntu 20.04 上安装 Zeek 的教程。 欢迎发表评论。

参考

安装 Zeek

在 Debian 10 上安装和配置 AIDE

安装 ModSecurity 3 Apache 在 Docker 容器中

在 Ubuntu 18.04 上安装和设置 Suricata

[ad_2]

Related Posts