FSM: Gatekeeper Service Updates
Design
Gatekeeper is an FSM plugin that enforces data traffic flow policy decisions. The plugin acts as a policy engine that uses an external threat intelligence service (IP threat detection) to allow or block the data flows.
Controller Involvement
Providing Gatekeeper support for IP threat detection
Configuring the OVSDB FSM_Policy table to use Gatekeeper as an IP reputation service
Configuring the OVSDB Flow_Service_Manager_Config table IP threat entry to use the gate
OVSDB Configuration
FSM_Policy Configuration
Add an FSM_Policy table entry dedicated to the Gatekeeper DPI requests. The policy does not need to have rules that differentiate between the inbound and outbound rules. Device request to the Gatekeeper service indicates that the IP address to process belongs to an outbound or an inbound flow.
$ ovsh s FSM_Policy -w idx==8
-------------------------------
_uuid | 72d8~b542 |
_version | 5e2b~bb0c |
action | gatekeeper |
fqdn_op | ["set",[]] |
fqdncat_op | ["set",[]] |
fqdncats | ["set",[]] |
fqdns | ["set",[]] |
idx | 8 |
ipaddr_op | ["set",[]] |
ipaddrs | ["set",[]] |
log | blocked |
mac_op | ["set",[]] |
macs | ["set",[]] |
name | gk_ip_all |
next | ["map",[]] |
other_config | ["map",[]] |
policy | gatekeeper_dpi |
redirect | ["set",[]] |
risk_level | ["set",[]] |
risk_op | ["set",[]] |
------------------------------- |
Flow_Service_Manager_Config Configuration
Update the Flow_Service_Manager_Config ipthreat_dpi entry to point to the gatekeeper-dpi policy. As noted above, the IP threat detection DPI plugin does not have to be provided for both (inbound and outbound) policies.
$ ovsh -j s Flow_Service_Manager_Config -w handler==ipthreat_dpi
[
{
"if_name": "",
"_version": [
"uuid",
"a1c80e4e-acb0-48f5-9d2f-b060fbcba61f"
],
"other_config": [
"map",
[
[
"dpi_dispatcher",
"core_dpi_dispatch"
],
[
"mqtt_v",
"IP/Threats/opensync/XXXXX002B3/XXXXXf5acbb22513f0ae5e17"
],
[
"policy_table", <---------- unique policy table
"gatekeeper_dpi"
],
[
"provider_plugin", <---------- gatekeeper as a provider
"gatekeeper"
],
[
"targeted_devices",
"${iptd-devices}"
],
[
"wc_hero_stats_interval_secs",
"1800"
],
[
"wc_hero_stats_topic",
"IP-WC/Stats/Hero/opensync/XXXXXf5acbb22513f0ae5e17/XXXXX002B3"
]
]
],
"type": "dpi_plugin",
"plugin": "",
"_uuid": [
"uuid",
"72be1f99-1194-4dfa-8e0a-9d9d1bf8dca5"
],
"pkt_capt_filter": "",
"handler": "ipthreat_dpi"
}
] |
Reporting
Reporting is done using MQTT. The ipCategorization info has fields specific to the Gatekeeper service (gatekeeperFilter).
{
"action": "blocked",
"classifiedBy": "ip",
"deviceMac": "00:AA:BB:CC:9F:85",
"direction": "outbound",
"flow": {
"dstIpaddr": "10.2.0.43",
"dstPort": 12345,
"proto": 17,
"srcIpaddr": "192.168.40.111",
"srcPort": 39806
},
"ipAddr": "10.2.0.43",
"ipCategorization": {
"categoryId": 100,
"confidenceLevel": 30,
"gatekeeperFilter": "gk_outbound_ipv4", <---------- hint provided by the gatekeeper service, reported as is by the FW
"source": "gatekeeper"
},
"locationId": "XXXXXf5acbb22513f0ae5e17",
"nodeId": "XXXXX002B3",
"policy": "gatekeeper_dpi",
"policyIndex": 10,
"reportedAt": "2021-04-30T00:36:53.026Z",
"ruleName": "gk_ip_all",
"version": "1.0.0"
} |
Published Content
https://www.opensync.io/s/EDE-021-030-501_FSM_Plugins.pdf
https://www.opensync.io/s/ERE-021-061-701_FSM_Plugin_Requirements.pdf