前言

Security Onion (以下称安全洋葱)是一款免费且开源的,用于威胁发现、企业安全监视和日志管理的 Linux 发行版本。
目前,安全洋葱已经迭代至 2.X,与 1.X 版本不同,2.X 版本基于容器开发,实现了将各个组件和服务容器化,更易于使用者部署和定制。

本篇并不涉及系统的调优,如果你此前已经安装并部署了安全洋葱,可以跳过此章节。

安全洋葱的安装较为简单,网络上也有诸多的 ALL IN ONE 的安装教程,但考虑到这些部署方式不太适合生产环境使用,所以本篇主要讲述如何在生产环境分布式部署安全洋葱系统。

本文中使用的安全洋葱版本为 v2.3.30(截至本文编写时)。

准备工作

官方文档建议采用标准的分布式部署方式进行部署安全洋葱,至少以下三个节点:

节点类型说明
manager node主要节点,负责接收采集到的原始数据
forward node流量分析节点,也叫 sensor-node
search-node搜索节点,存储 ES 数据

我部署了 4 个节点,大家根据实际情况进行扩展:

节点IP配置
security-manager10.10.0.18 cores, 16g memory, 200g disk
security-sensor10.10.0.1008 cores, 32g memory, 12t disk
security-search-110.10.0.118 cores, 16g memory, 2t disk
security-search-210.10.0.128 cores, 16g memory, 2t disk

架构大致如下:

开始安装

security-manager

1.从 ISO 引导启动,设置完用户名和密码,回车后开始安装系统,安装完成后重启系统。
2.登录系统,输入用户名和密码,准备开始配置。

3.选择安装类型为distributed

4.选择节点类型为manager

5.选择安装环境为standard,这里需要注意 security-manager 这台主机需要能够联网。

6.设置主机名

7.设置管理口,并配置静态地址(这里建议不要选择DHCP分配地址,会影响服务/节点之间的通信)

8.选择系统补丁计划(默认),设置家庭网络(默认)

9.选择安装类型为高级,进行功能定制化

10.设置 ES 集群名称(默认)

11.选择元信息分析引擎(zeek or suricata)。考虑到 zeek 可定制化更强些,所以我选择的是 zeek 处理 metadata,suricata 处理 nids-alerts。事实上,两种方式均可,官方这里有讨论//TODO。

12.选择需要发送的日志类型。

请注意,这指的是需要被发送到 manager 节点的日志类型,不是 zeek 要处理的协议(这需要额外进行配置)

建议按照实际监测需求和节点存储容量进行权衡。有选择恐惧症的可以先按默认的来,后面可以再修改的:)。

13.选择 IDS 规则集(默认)。你也可以选择高级订阅版。

14.选择安装的组件列表(默认)。按需选择。

  • Grafana
    • 主机的健康监控和报警
  • Fleet & osquery
    • HIDS,侧重于主机信息被动/主动采集
  • Wazuh
    • HIDS,侧重于威胁检测、完整性监控等
  • TheHive
    • 安全事件响应平台
  • Playbook
    • 检测 Playbook 的工具
  • Strelka
    • 文件提取/分析,用于威胁搜索、威胁检测和事件响应

15.为其他组件设置邮箱和密码
16.选择 WEB 界面的访问方式。我选择的是IP,也可以改为域名方式。

17.选择下载系统更新包的方式。建议选择通过 manager 节点下载

18.设置 soremote 密码,后面用于添加其他节点。

19.设置允许访问WEB界面的网段。建议只添加安全运维段的主机IP, 不在该网段的主机将无法访问WEB界面。

20.确定应用配置,等待完成安装。

21.配置防火墙规则,允许其他节点访问管理节点的 Salt 服务 (重要

很多人在部署非管理节点的时候总是提示安装失败,就是因为缺少这个步骤导致的。
sosetup.log中的报错日志类似:[ERROR ] 'mine.send': False

firewall-cmd --permanent --zone= --add-port=4505-4506/tcp
firewall-cmd --reload

security-sensor

1.完成基础的系统安装后,我们开始配置流量分析节点。
2.选择安装类型为 distributed
3.选择节点类型为 sensor

4.设置主机名

5.选择管理口,并配置静态地址

6.设置 manager 节点,并输入 soremote 密码,与 manager 节点完成连接。


7.选择镜像口

8.选择系统补丁计划(默认),选择下载系统更新包的方式为 manager。
9.选择安装类型为高级,进行功能定制化。

10.进行 CPU 绑定(Zeek、Suricata)

11.配置镜像口MTU(默认)

12.等待安装完成。

1.完成基础的系统安装后,我们开始配置流量分析节点。
2.选择安装类型为 distributed
3.选择节点类型为 searchnode
4.设置主机名
5.选择管理口,并配置静态地址
6.设置 manager 节点(输入 soremote 密码)
7.选择系统补丁计划(默认),选择下载系统更新包的方式为 manager。
8.选择安装类型为高级,进行功能定制化。
9.配置 ES 堆大小(默认)

10.配置 Logstash 堆大小(默认)

11.配置 Logstash pipeline 线程(默认)

12.配置 logstash pipeline 批处理大小(默认)

13.配置 logstash input 线程数(默认),如果发现存在消息积压(redis),可以适当调整以上几个参数。

14.配置 ES 索引关闭时间(默认为 30 天)。关闭索引不会删除数据,如果需要查询历史数据可以再单独开启。如果内存足够的话,可以设置为 90 天。

15.配置 ES 存储大小,我配置的是 1948(2T-100G),可以择优调整。

16.等待安装完成。

功能验证

1.打开 https://10.10.0.1 安全洋葱控制台并登陆
2.点击 Grid 标签,查看网格状态,检查节点是否已经全部上线。

在这里,大家可以看到节点列表中还出现了一个陌生的节点类型 securityonion-fleet,这个是其实是独立部署的 Fleet 服务,由于需要管理的 osquery 客户端较多,容易影响性能,所以就把它从管理节点拆分出来了。

3.点击 Alerts 标签,检查是否可以正常。

4.点击 Hunt 标签,检查是否正常。

5.点击 Grafana 标签,检查各个主机节点是否正常。

6.点击 Kiabana 标签,检查 ES 服务是否正常。

好了,如果服务一切正常的话,你可以开始打工人生活了:)

参考链接