The Panorama IOC Feeder provides automated integration between Check Point EM and Palo Alto Panorama
9.3K
The ERM-Panorama IOC Feeder provides automated integration between ERM and Palo Alto Panorama.
Daily IOC feeds are retrieved from ERM using configurable filters for severity level, confidence level, and detected activities. IOCs are automatically categorized by type (IP, URL, Domain, File) and saved to their respective directories in predefined formats.
The fetch job will start automatically after running the app. Once the fetch job is finished, you can access the IOC data by going to the following paths:
{docker_ip:docker_port}/ioc/feed/ip/ip_list.txt{docker_ip:docker_port}/ioc/feed/url/url_list.txt{docker_ip:docker_port}/ioc/feed/domain/domain_list.txt{docker_ip:docker_port}/ioc/feed/file/file_list.txtMake sure to add http:// or https:// prefix to the path (based on the ENABLE_HTTPS definition in your .env file).
The following environment variables are required to run the app:
| Name | Description | Default Value | Predefined Values |
|---|---|---|---|
CYBERINT_ACCESS_TOKEN | The API key for accessing the Cyberint API. | ||
CYBERINT_BASE_URL | The base URL for the Cyberint API. | ||
CYBERINT_FEED_SEVERITY_LEVEL | The severity level of the IOC feed to fetch. | 0 | Number between 0 to 100 |
CYBERINT_FEED_CONFIDENCE_LEVEL | The confidence level of the IOC feed to fetch. | 0 | Number between 0 to 100 |
CYBERINT_FEED_DETECTED_ACTIVITIES | The detected activities of the IOC feed to fetch. You can choose one or more. The default is all values. | All | "malware_payload", "cnc_server", "infected_machine", "phishing_website", "payload_delivery", "cc_skimming", "botnet", "anonymization" |
LOGGING_LEVEL | The logging level to display. | INFO | INFO, DEBUG |
PORT | The docker port. For example, for HTTPS requests you can set the port value to '443' and for HTTP requests you can set it to '8000'. | Any port number. | |
ENABLE_HTTPS | Whether to enable HTTPS requests. | True, False | |
SSL_KEY_PATH | The path to your SSL key file. | ||
SSL_CERT_PATH | The path to your SSL certificate file. | ||
SSL_CA_CERT_PATH | The path to your CA certificates file. | ||
VERIFY | Whether verifies SSL certificates for HTTPS requests. | True | True, False |
APP_HTTP_PROXY | The proxy IP and port for HTTP requests. Example value: 'http://127.0.0.1:8080' | ||
APP_HTTPS_PROXY | TThe proxy IP and port for HTTPS requests. Example value: 'http://127.0.0.1:8080' | ||
FEED_MAX_AGE_HOURS | Age after which the served feed is reported as stale and the readiness probe fails. | 48 | Any number of hours |
FEED_STRICT_STALE | Whether to stop serving the feed entirely once it is older than FEED_MAX_AGE_HOURS, instead of serving it with a warning. | False | True, False |
VERSION_CHECK_ENABLED | Whether to check daily for a newer published connector version and log a warning when one exists. Requires outbound access to the registry. | False | True, False |
VERSION_CHECK_URL | Registry endpoint used by the version check. | DockerHub tags API | Any URL returning {"results": [{"name": ...}]} |
Please create the .env file in the root directory and set the variables.
By default the application supports HTTP requests. To enable HTTPS requests, please supply the SSL_KEY_PATH, SSL_CERT_PATH,SSL_CA_CERT_PATH environment variables and set the ENABLE_HTTPS to 'True'.
The application exposes endpoints for health monitoring and Prometheus metrics scraping, suitable for OpenShift/Kubernetes environments.
| Endpoint | Method | Description | Response |
|---|---|---|---|
/health | GET | Liveness probe. Always 200 while the process is alive; the body reports the connector version and the feed's condition. | {"status": "healthy" | "degraded", "version": ..., "feed": {...}} |
/ready | GET | Readiness probe. 503 until a fetch has succeeded, and again once the feed is stale. | {"status": "ready" | "not_ready", ...} |
/version | GET | Running connector version, and the latest published version when VERSION_CHECK_ENABLED is on. | {"current_version": ..., "latest_version": ..., "update_available": ...} |
A stale feed must not fail liveness -- restarting the pod does not refresh it -- so
/health stays 200 and only /ready fails. Point the readiness probe at /ready.
Example /health body when the fetch job is failing:
{
"status": "degraded",
"version": "6.13",
"feed": {
"ready": false,
"stale": false,
"last_successful_fetch": null,
"consecutive_failures": 3,
"last_error": "RestError: Failed to execute request: ...",
"entries": {}
}
}
| Endpoint | Method | Description |
|---|---|---|
/metrics | GET | Prometheus-format metrics |
The /metrics endpoint exposes the following metrics:
http_requests_total - Total HTTP requests by method, path, and status codehttp_request_duration_seconds - Request latency histogramhttp_request_size_bytes - Request size histogramhttp_response_size_bytes - Response size histogramConnector and feed health:
connector_build_info{version} - Running connector versionioc_feed_ready - 1 once a fetch has succeeded and the feed is being servedioc_feed_last_success_timestamp_seconds - Unix timestamp of the last successful fetchioc_feed_age_seconds - Age of the currently served feedioc_feed_entries{ioc_type} - Entries written to each feed file by the last fetchioc_feed_fetch_failures_total - Failed fetch attemptsconnector_update_available - 1 when a newer connector version is publishedAlert on ioc_feed_ready == 0 and on ioc_feed_age_seconds exceeding your refresh
window: both indicate the firewall is enforcing a list that is no longer being updated.
Configure your deployment with the following probes:
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
For Prometheus metrics scraping, create a ServiceMonitor or add pod annotations:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8000"
URL IOCs are processed to be compatible with Palo Alto URL EDL format:
https://example.com/path → example.com/path).google.com/url) receive special handling. Stripping query parameters from these would produce overly broad entries that block all legitimate traffic through the redirect service. Instead, the feeder:
url, q, or u) and adds it as a separate entry.Currently recognized redirect services: google.com/url, www.google.com/url. The list can be extended in REDIRECT_SERVICES.
Content type
Image
Digest
sha256:7ab6d9ef5…
Size
83.8 MB
Last updated
13 days ago
docker pull checkpoint/erm-generic-ioc-feeder