10.4. 多租户

10.4.1. 介绍

多租户支持允许使用不同规则变量的不同规则集。然后可以将这些租户分配给VLAN或接口(设备)。

10.4.2. YAML

在主(“master”)yaml中,应添加一个名为“multi detect”的新部分suricata.yaml。

设置:

  • 启用:是/否->是否启用多租户支持

  • 默认:是/否->常规检测配置是否为默认的“回退”租户?

  • 选择器:直接(对于Unix套接字PCAP处理,请参阅下面)、VLAN或设备

  • 加载器:启动时并行租户加载的“加载器”线程数

  • 租户:租户列表

    • ID:租户ID

    • yaml:使用租户特定的设置分离yaml文件

  • 映射:

    • VLAN ID或设备

    • 租户ID:要与VLAN ID/设备关联的租户

multi-detect:
  enabled: yes
  #selector: direct # direct or vlan
  selector: vlan
  loaders: 3

  tenants:
  - id: 1
    yaml: tenant-1.yaml
  - id: 2
    yaml: tenant-2.yaml
  - id: 3
    yaml: tenant-3.yaml

  mappings:
  - vlan-id: 1000
    tenant-id: 1
  - vlan-id: 2000
    tenant-id: 2
  - vlan-id: 1112
    tenant-id: 3

租户-1.yaml、租户-2.yaml、租户-3.yaml均包含部分配置:

# Set the default rule path here to search for the files.
# if not set, it will look at the current working dir
default-rule-path: /etc/suricata/rules
rule-files:
  - rules1

# You can specify a threshold config file by setting "threshold-file"
# to the path of the threshold config file:
# threshold-file: /etc/suricata/threshold.config

classification-file: /etc/suricata/classification.config
reference-config-file: /etc/suricata/reference.config

# Holds variables that would be used by the engine.
vars:

  # Holds the address group vars that would be passed in a Signature.
  # These would be retrieved during the Signature address parsing stage.
  address-groups:

    HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"

    EXTERNAL_NET: "!$HOME_NET"

    ...

  port-groups:

    HTTP_PORTS: "80"

    SHELLCODE_PORTS: "!80"

    ...

10.4.2.1. 弗拉尼德

将租户分配到VLAN ID。

VLAN映射示例:

mappings:
- vlan-id: 1000
  tenant-id: 1
- vlan-id: 2000
  tenant-id: 2
- vlan-id: 1112
  tenant-id: 3

映射也可以在Unix套接字上修改,请参见下面的内容。

注意:只能在启用“vlan.use for tracking”时使用。

10.4.2.2. 装置

为设备分配租户。一个租户可以分配给一个设备。多个设备可以具有相同的租户。

设备映射示例:

mappings:
- device: ens5f0
  tenant-id: 1
- device: ens5f1
  tenant-id: 3

映射是静态的,不能在Unix套接字上修改。

注意:目前IP不支持。

注意:支持取决于使用“livedev”API的捕获方法。目前有:PCAP、AF U包、PF U环和Netmap。

10.4.3. 每个租户设置

每个租户都有以下设置:

  • 默认规则路径

  • 规则文件

  • 分类文件

  • 引用配置文件

  • 阈值文件

  • 地址变量

  • 端口变量

10.4.4. Unix套接字

10.4.4.1. 登记处

注册租户

实例:

register-tenant 1 tenant-1.yaml
register-tenant 2 tenant-2.yaml
register-tenant 3 tenant-3.yaml
register-tenant 5 tenant-5.yaml
register-tenant 7 tenant-7.yaml

注销租户<id>

unregister-tenant 2
unregister-tenant 1

10.4.4.2. Unix套接字运行模式(PCAP处理)

unix socket“pcap file”命令可用于选择租户以检查pcap:

pcap-file traffic1.pcap /logs1/ 1
pcap-file traffic2.pcap /logs2/ 2
pcap-file traffic3.pcap /logs3/ 3
pcap-file traffic4.pcap /logs5/ 5
pcap-file traffic5.pcap /logs7/ 7

它针对租户1运行traffic1.pcap,并登录到/logs1/,针对租户2运行traffic2.pcap,然后登录到/logs2/等等。

10.4.4.3. 实时交通模式

对于当前的实时通信,仅支持基于VLAN的多租户。

主yaml需要将选择器设置为“vlan”。

10.4.4.4. 登记处

租户可以映射到VLAN ID。

注册租户处理程序<tenant id>vlan<vlan id>

register-tenant-handler 1 vlan 1000

注销租户处理程序<tenant id>vlan<vlan id>

unregister-tenant-handler 4 vlan 1111
unregister-tenant-handler 1 vlan 1000

租户和租户处理程序的注册可以在正在运行的引擎上完成。

10.4.5. EVE JSON输出

当配置了多租户支持并且检测引擎处于活动状态时,根据流报告的所有Eve类型也将报告相应的 tenant_id 用于与租户配置匹配的事件。