Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Ich bin mir sicher, dass jeder, der jemals damit gearbeitet hat Check Point, es gab eine Beschwerde darüber Unmöglichkeit, die Konfiguration über die Befehlszeile zu bearbeiten. Dies ist besonders seltsam für diejenigen, die zuvor mit Cisco ASA gearbeitet haben, wo absolut alles in der CLI konfiguriert werden kann. Bei Check Point ist es umgekehrt – alle Sicherheitseinstellungen wurden ausschließlich über die grafische Oberfläche vorgenommen. Allerdings sind einige Dinge über die GUI völlig umständlich zu erledigen (selbst wenn sie so praktisch ist wie die von Check Point). Beispielsweise wird das Hinzufügen von 100 neuen Hosts oder Netzwerken zu einer langwierigen und mühsamen Prozedur. Für jedes Objekt müssen Sie mehrmals mit der Maus klicken und die IP-Adresse eingeben. Das Gleiche gilt für die Erstellung einer Gruppe von Sites oder die Massenaktivierung/-deaktivierung von IPS-Signaturen. In diesem Fall besteht eine hohe Wahrscheinlichkeit, einen Fehler zu machen.

Ein „Wunder“ geschah vor relativ kurzer Zeit. Mit der Veröffentlichung der neuen Version Gaia R80 Die Gelegenheit wurde angekündigt API-Nutzung, was vielfältige Möglichkeiten zur Automatisierung von Einstellungen, Verwaltung, Überwachung usw. eröffnet. Jetzt kannst du:

  • Objekte erstellen;
  • Zugriffslisten hinzufügen oder bearbeiten;
  • Blades aktivieren/deaktivieren;
  • Netzwerkschnittstellen konfigurieren;
  • Richtlinien installieren;
  • und vieles mehr.

Ehrlich gesagt verstehe ich nicht, wie diese Nachricht an Habr weitergegeben wurde. In diesem Artikel beschreiben wir kurz die Verwendung der API und stellen einige praktische Beispiele bereit. CheckPoint-Einstellungen mithilfe von Skripten.

Ich möchte gleich reservieren, dass die API nur für den Management-Server verwendet wird. Diese. Es ist immer noch unmöglich, Gateways ohne einen Management-Server zu verwalten.

Wer kann diese API grundsätzlich nutzen?

  1. Systemadministratoren, die routinemäßige Check Point-Konfigurationsaufgaben vereinfachen oder automatisieren möchten;
  2. Unternehmen, die Check Point mit anderen Lösungen (Virtualisierungssysteme, Ticketsysteme, Konfigurationsmanagementsysteme usw.) integrieren möchten;
  3. Systemintegratoren, die Einstellungen standardisieren oder zusätzliche Produkte rund um Check Point erstellen möchten.

Typisches Schema

Stellen wir uns also ein typisches Schema mit Check Point vor:

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Wie üblich haben wir ein Gateway (SG), Verwaltungsserver (SMS) und Admin-Konsole (SmartConsole). In diesem Fall sieht der übliche Gateway-Konfigurationsprozess wie folgt aus:

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Diese. Zuerst müssen Sie es auf dem Computer des Administrators ausführen SmartConsole, mit dem wir uns mit dem Management-Server verbinden (SMS). Sicherheitseinstellungen werden auf der SMS vorgenommen und erst dann angewendet (Installationsrichtlinie) zum Gateway (SG).

Wenn Sie Verwaltungs-API, können wir grundsätzlich den ersten Punkt (SmartConsole starten) überspringen und verwenden API-Befehle direkt an den Management-Server (SMS).

Möglichkeiten zur Verwendung der API

Es gibt im Wesentlichen vier Möglichkeiten, die Konfiguration mithilfe der API zu bearbeiten:

1) Verwendung des Dienstprogramms mgmt_cli

Beispiel - # mgmt_cli Hostnamen Host1 IP-Adresse 192.168.2.100 hinzufügen
Dieser Befehl wird über die Befehlszeile des Management Servers (SMS) ausgeführt. Ich denke, die Syntax des Befehls ist klar – host1 wird mit der Adresse 192.168.2.100 erstellt.

2) API-Befehle über clish eingeben (im Expertenmodus)

Im Grunde müssen Sie sich lediglich an der Befehlszeile anmelden (mgmt-Login) unter dem Konto, das bei der Verbindung über SmartConsole (oder Root-Konto) verwendet wird. Dann können Sie eintreten API-Befehle (In diesem Fall ist es nicht erforderlich, das Dienstprogramm vor jedem Befehl zu verwenden mgmt_cli). Sie können vollwertige erstellen BASH-Skripte. Ein Beispiel für ein Skript, das der Host erstellt:

Bash-Skript

#!/bin/bash

main() {
    clear

    #LOGIN (don't ask for username and password, user is already logged in to Management server as 'root' user)
    mgmt_cli login --root true > id_add_host.txt
    on_error_print_and_exit "Error: Failed to login, check that the server is up and running (run 'api status')"

    #READ HOST NAME
    printf "Enter host name:n"
    read -e host_name
    on_empty_input_print_and_exit "$host_name" "Error: The host's name cannot be empty."

    #READ IP ADDRESS
    printf "nEnter host IP address:n"
    read -e ip
    on_empty_input_print_and_exit "$ip" "Error: The host's IP address cannot be empty."

    #CREATE HOST
    printf "Creating new host: $host_name with IP address: $ipn"
    new_host_response=$(mgmt_cli add host name $host_name ip-address $ip -s id_add_host.txt 2> /dev/null)
    on_error_print_and_exit "Error: Failed to create host object. n$new_host_response"

    #PUBLISH THE CHANGES
    printf "nPublishing the changesn"
    mgmt_cli publish --root true -s id_add_host.txt &> /dev/null
    on_error_print_and_exit "Error: Failed to publish the changes."

    #LOGOUT
    logout
	
	printf "Done.n"
}

logout(){
	mgmt_cli logout --root true -s id_add_host.txt &> /dev/null
}

on_error_print_and_exit(){
    if [ $? -ne 0 ]; then
        handle_error "$1" 
	fi
}

handle_error(){
    printf "n$1n" #print error message
    mgmt_cli discard --root true -s id_add_host.txt &> /dev/null
    logout
    exit 1
}

on_empty_input_print_and_exit(){
	if [ -z "$1" ]; then
		printf "$2n" #print error message
		logout
		exit 0
	fi
}

# Script starts here. Call function "main".
main

Bei Interesse können Sie sich das entsprechende Video ansehen:

3) Über SmartConsole durch Öffnen des CLI-Fensters

Sie müssen lediglich das Fenster öffnen CLI direkt von SmartConsole, wie im Bild unten gezeigt.

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

In diesem Fenster können Sie sofort mit der Eingabe von API-Befehlen beginnen.

4) Webdienste. HTTPS-Post-Anfrage verwenden (REST API)

Unserer Meinung nach ist dies eine der vielversprechendsten Methoden, denn ermöglicht es Ihnen, komplette Anwendungen darauf zu „erstellen“. Management-Server-Management (Entschuldigung für die Tautologie). Im Folgenden werden wir uns diese Methode etwas genauer ansehen.

Zusammenfassen:

  1. API + CLI besser geeignet für Leute, die an Cisco gewöhnt sind;
  2. API + Shell zum Anwenden von Skripten und Durchführen von Routineaufgaben;
  3. REST API für Automatisierung.

Aktivieren der API

Standardmäßig ist die API auf Verwaltungsservern mit mehr als 4 GB RAM und eigenständigen Konfigurationen mit mehr als 8 GB RAM aktiviert. Sie können den Status mit dem folgenden Befehl überprüfen: API-Status

Wenn sich herausstellt, dass die API deaktiviert ist, können Sie sie ganz einfach über SmartConsole aktivieren: Verwalten und Einstellungen > Blades > Verwaltungs-API > Erweiterte Einstellungen

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Dann veröffentlichen (Veröffentlichen) Änderungen und führen Sie den Befehl aus API-Neustart.

Webanfragen + Python

Um API-Befehle auszuführen, können Sie Web-Anfragen verwenden Python und Bibliotheken Zugriffe, JSON. Im Allgemeinen besteht der Aufbau einer Webanfrage aus drei Teilen:

1)Adresse

(https://<managemenet server>:<port>/web_api/<command>) 


2) HTTP-Header

content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>


3) Nutzlast anfordern

Text im JSON-Format, der die verschiedenen Parameter enthält

Beispiel für den Aufruf verschiedener Befehle:


def api_call(ip_addr, port, command, json_payload, sid):
    url = 'https://' + ip_addr + ':' + str(port) + '/web_api/' + command
    if sid == “”:
        request_headers = {'Content-Type' : 'application/json'}
    else:
        request_headers = {'Content-Type' : 'application/json', 'X-chkp-sid' : sid}
    r = requests.post(url,data=json.dumps(json_payload), headers=request_headers,verify=False)
    return r.json()                                        
'xxx.xxx.xxx.xxx' -> Ip address GAIA

Hier sind einige typische Aufgaben, die Ihnen bei der Verwaltung von Check Point am häufigsten begegnen.

1) Beispiel für Autorisierungs- und Abmeldefunktionen:

Skript


    payload = {‘user’: ‘your_user’, ‘password’ : ‘your_password’}
    response = api_call('xxx.xxx.xxx.xxx', 443, 'login',payload, '')
    return response["sid"]

    response = api_call('xxx.xxx.xxx.xxx', 443,'logout', {} ,sid)
    return response["message"]

2) Einschalten der Blades und Einrichten des Netzwerks:

Skript


new_gateway_data = {'name':'CPGleb','anti-bot':True,'anti-virus' : True,'application-control':True,'ips':True,'url-filtering':True,'interfaces':
                    [{'name':"eth0",'topology':'external','ipv4-address': 'xxx.xxx.xxx.xxx',"ipv4-network-mask": "255.255.255.0"},
                     {'name':"eth1",'topology':'internal','ipv4-address': 'xxx.xxx.xxx.xxx',"ipv4-network-mask": "255.255.255.0"}]}
new_gateway_result = api_call('xxx.xxx.xxx.xxx', 443,'set-simple-gateway', new_gateway_data ,sid)
print(json.dumps(new_gateway_result))

3) Firewall-Regeln ändern:

Skript


new_access_data={'name':'Cleanup rule','layer':'Network','action':'Accept'}
new_access_result = api_call('xxx.xxx.xxx.xxx', 443,'set-access-rule', new_access_data ,sid)
print(json.dumps(new_access_result))

4)Hinzufügen einer Anwendungsschicht:

Skript


add_access_layer_application={ 'name' : 'application123',"applications-and-url-filtering" : True,"firewall" : False}
add_access_layer_application_result = api_call('xxx.xxx.xxx.xxx', 443,'add-access-layer', add_access_layer_application ,sid)
print(json.dumps(add_access_layer_application_result))

set_package_layer={"name" : "Standard","access":True,"access-layers" : {"add" : [ { "name" : "application123","position" :2}]} ,"installation-targets" : "CPGleb"}
set_package_layer_result = api_call('xxx.xxx.xxx.xxx', 443,'set-package', set_package_layer ,sid)
print(json.dumps(set_package_layer_result))

5) Veröffentlichen und legen Sie die Richtlinie fest, überprüfen Sie die Ausführung des Befehls (Aufgaben-ID):

Skript


publish_result = api_call('xxx.xxx.xxx.xxx', 443,"publish", {},sid)
print("publish result: " + json.dumps(publish_result))
new_policy = {'policy-package':'Standard','access':True,'targets':['CPGleb']}
new_policy_result = api_call('xxx.xxx.xxx.xxx', 443,'install-policy', new_policy ,sid)
print(json.dumps(new_policy_result)

task_id=(json.dumps(new_policy_result ["task-id"]))
len_str=len(task_id)
task_id=task_id[1:(len_str-1)]
show_task_id ={'task-id':(task_id)}
show_task=api_call('xxx.xxx.xxx.xxx',443,'show-task',show_task_id,sid)
print(json.dumps(show_task))

6) Host hinzufügen:

Skript


new_host_data = {'name':'JohnDoePc', 'ip-address': '192.168.0.10'}
new_host_result = api_call('xxx.xxx.xxx.xxx', 443,'add-host', new_host_data ,sid)
print(json.dumps(new_host_result))

7) Fügen Sie ein Feld „Bedrohungsprävention“ hinzu:

Skript


set_package_layer={'name':'Standard','threat-prevention' :True,'installation-targets':'CPGleb'}
set_package_layer_result = api_call('xxx.xxx.xxx.xxx', 443,'set-package',set_package_layer,sid)
print(json.dumps(set_package_layer_result))

8) Sehen Sie sich die Liste der Sitzungen an

Skript


new_session_data = {'limit':'50', 'offset':'0','details-level' : 'standard'}
new_session_result = api_call('xxx.xxx.xxx.xxx', 443,'show-sessions', new_session_data ,sid)
print(json.dumps(new_session_result))

9) Erstellen Sie ein neues Profil:

Skript


add_threat_profile={'name':'Apeiron', "active-protections-performance-impact" : "low","active-protections-severity" : "low or above","confidence-level-medium" : "prevent",
  "confidence-level-high" : "prevent", "threat-emulation" : True,"anti-virus" : True,"anti-bot" : True,"ips" : True,
  "ips-settings" : { "newly-updated-protections" : "staging","exclude-protection-with-performance-impact" : True,"exclude-protection-with-performance-impact-mode" : "High or lower"},
  "overrides" : [ {"protection" : "3Com Network Supervisor Directory Traversal","capture-packets" : True,"action" : "Prevent","track" : "Log"},
                  {"protection" : "7-Zip ARJ Archive Handling Buffer Overflow", "capture-packets" : True,"action" : "Prevent","track" : "Log"} ]}
add_threat_profile_result=api_call('xxx.xxx.xxx.xxx',443,'add-threat-profile',add_threat_profile,sid)
print(json.dumps(add_threat_profile_result))  

10) Ändern Sie die Aktion für die IPS-Signatur:

Skript


set_threat_protection={
  "name" : "3Com Network Supervisor Directory Traversal",
  "overrides" : [{ "profile" : "Apeiron","action" : "Detect","track" : "Log","capture-packets" : True},
    { "profile" : "Apeiron", "action" : "Detect", "track" : "Log", "capture-packets" : False} ]}
set_threat_protection_result=api_call('xxx.xxx.xxx.xxx',443,'set-threat-protection',set_threat_protection,sid)
print(json.dumps(set_threat_protection_result))

11) Fügen Sie Ihren Service hinzu:

Skript


add_service_udp={    "name" : "Dota2_udp", "port" : '27000-27030',
"keep-connections-open-after-policy-installation" : False,
"session-timeout" : 0, "match-for-any" : True,
"sync-connections-on-cluster" : True,
"aggressive-aging" : {"enable" : True, "timeout" : 360,"use-default-timeout" : False  },
"accept-replies" : False}
add_service_udp_results=api_call('xxx.xxx.xxx.xxx',443,"add-service-udp",add_service_udp,sid)
print(json.dumps(add_service_udp_results))

12) Fügen Sie eine Kategorie, Site oder Gruppe hinzu:

Skript


add_application_site_category={  "name" : "Valve","description" : "Valve Games"}
add_application_site_category_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site-category",add_application_site_category,sid)
print(json.dumps(add_application_site_category_results))

add_application_site={    "name" : "Dota2", "primary-category" : "Valve",  "description" : "Dotka",
  "url-list" : [ "www.dota2.ru" ], "urls-defined-as-regular-expression" : False}
add_application_site_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site " , 
add_application_site , sid)
print(json.dumps(add_application_site_results))

add_application_site_group={"name" : "Games","members" : [ "Dota2"]}
add_application_site_group_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site-group",add_application_site_group,sid)
print(json.dumps(add_application_site_group_results))

Darüber hinaus mit der Hilfe Web API Sie können Netzwerke, Hosts, Zugriffsrollen usw. hinzufügen und entfernen. Klingen können individuell angepasst werden Antivirus, Antibot, IPS, VPN. Es ist sogar möglich, Lizenzen mit dem Befehl zu installieren Skript ausführen. Alle Check Point API-Befehle finden Sie hier hier.

Check Point API + Postbote

Auch bequem in der Anwendung Check Point-Web-API in Verbindung mit Postman. Postman verfügt über Desktop-Versionen für Windows, Linux und MacOS. Darüber hinaus gibt es ein Plugin für Google Chrome. Das werden wir nutzen. Zuerst müssen Sie Postman im Google Chrome Store finden und installieren:

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Mit diesem Dienstprogramm können wir Webanfragen an die Check Point API generieren. Um sich nicht alle API-Befehle zu merken, besteht die Möglichkeit, sogenannte Collections (Vorlagen) zu importieren, die bereits alle notwendigen Befehle enthalten:

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Hier Sie finden, Sammlung für R80.10. Nach dem Import stehen uns API-Befehlsvorlagen zur Verfügung:

Check Point R80.10 API. Verwaltung über CLI, Skripte und mehr

Meiner Meinung nach ist das sehr praktisch. Mit der Check Point API können Sie schnell mit der Entwicklung von Anwendungen beginnen.

Check Point + Ansible

Ich möchte auch darauf hinweisen, dass dies der Fall ist Ansible Modul für die CheckPoint-API. Mit dem Modul können Sie Konfigurationen verwalten, es ist jedoch nicht so praktisch für die Lösung exotischer Probleme. Das Schreiben von Skripten in einer beliebigen Programmiersprache bietet flexiblere und bequemere Lösungen.

Abschluss

Hier werden wir wahrscheinlich unsere kurze Überprüfung der Check Point API beenden. Meiner Meinung nach wurde dieses Feature sehr lange erwartet und war notwendig. Das Aufkommen der API eröffnet sehr weitreichende Möglichkeiten sowohl für Systemadministratoren als auch für Systemintegratoren, die mit Check Point-Produkten arbeiten. Orchestrierung, Automatisierung, SIEM-Feedback ... jetzt ist alles möglich.

PS Weitere Artikel zum Thema Check Point Ihr findet es wie immer auf unserem Blog Habr oder auf dem Blog unter Webseite.

PSS Bei technischen Fragen zur Einrichtung von Check Point können Sie sich gerne an uns wenden hier

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Planen Sie die Verwendung der API?

  • 70,6%Ja12

  • 23,5%Nr. 4

  • 5,9%Benutze bereits1

17 Benutzer haben abgestimmt. 3 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen