checkpoint — Check Point Management API

Blocks on Check Point by creating a host object per banned IP, membered into a group, via the Management API (login → command → publish). A security policy referencing the group does the blocking. The group and policy are yours — as is policy installation, the Check Point equivalent of Firepower's deployment caveat.

(No relation to Ereshkigal's own checkpoint command, which recopies the clay tablets — an unfortunate collision of vendor and metaphor.)

[kur.web]
backend = "checkpoint"

[kur.web.options]
host     = "mgmt.example.org"
user     = "kur-api"
password = "hunter2"

The install-policy caveat — read this first

The Management API's publish saves changes to the management database; gateways enforce them only after install-policy (or, on newer setups, updatable-object style automation). The kur publishes after every change but never installs policy. Pair it with scheduled policy pushes or automation that installs on publish — without that, bans accumulate in SmartConsole and block nothing.

Check Point-side setup — required first

Requirements

Settings

Options

| option | default | what | |------------|-------------------|------------------------------------------| | host | (required) | management server host | | user | (required) | Management API user | | password | (required) | its password | | group | <prefix>_<name> | the pre-existing group that objects join | | timeout | 30 | HTTP timeout in seconds | | insecure | 0 | skip TLS certificate verification |

What each operation does

init POSTs /web_api/login and carries the returned session id as X-chkp-sid thereafter. Per-IP host objects are named <prefix>_<name>_<ip> with dots/colons flattened to dashes:

| operation | API traffic | |------------|-----------------------------------------------------------------------------| | init | POST /web_api/login | | ban | POST /web_api/add-host with {"name":"<obj>","ip-address":"<ip>","groups":["<group>"]}, then POST /web_api/publish | | unban | POST /web_api/delete-host with {"name":"<obj>"}, then publish | | list | no API call — the kur's own ban book | | check | POST /web_api/keepalive — session still valid (and refreshed) | | flush | delete-host + publish per banned IP | | re_init | teardown (best effort), init (fresh login), re-add + publish per IP | | teardown | delete-host + publish per banned IP (ban book kept) |

self_heal

check is a session keepalive — it validates (and refreshes) the session, nothing about objects, group, policy, or installation. A timed-out session fails checks and bans; the re_init that self_heal then triggers performs a fresh login, so session expiry heals itself at the next ban/unban. With self_heal on, every ban's keepalive also keeps the session alive.

Gotchas