Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Som si istý, že každý, s kým kedy spolupracoval Check Point, došlo k sťažnosti o nemožnosť úpravy konfigurácie z príkazového riadku. To je zvláštne najmä pre tých, ktorí predtým pracovali s Cisco ASA, kde sa dá v CLI nakonfigurovať úplne všetko. S Check Point je to naopak – všetky bezpečnostné nastavenia boli vykonávané výlučne z grafického rozhrania. Niektoré veci je však úplne nepohodlné robiť cez GUI (dokonca také pohodlné ako Check Point). Napríklad úloha pridať 100 nových hostiteľov alebo sietí sa zmení na dlhý a únavný postup. Pre každý objekt budete musieť niekoľkokrát kliknúť myšou a zadať IP adresu. To isté platí pre vytvorenie skupiny stránok alebo hromadné zapnutie/vypnutie IPS podpisov. V tomto prípade existuje vysoká pravdepodobnosť, že urobíte chybu.

Relatívne nedávno sa stal „zázrak“. S vydaním novej verzie Gaia R80 príležitosť bola oznámená Použitie API, čo otvára široké možnosti automatizácie nastavení, administrácie, monitorovania a pod. Teraz môžeš:

  • vytvárať predmety;
  • pridávať alebo upravovať zoznamy prístupových práv;
  • povoliť/zakázať čepele;
  • konfigurovať sieťové rozhrania;
  • inštalovať zásady;
  • И многое другое.

Úprimne povedané, nechápem, ako táto správa prešla okolo Habra. V tomto článku stručne popíšeme, ako API používať a uvedieme niekoľko praktických príkladov. Nastavenia CheckPoint pomocou skriptov.

Okamžite by som chcel urobiť rezerváciu, že API sa používa iba pre Management server. Tie. Stále nie je možné spravovať brány bez riadiaceho servera.

Kto môže toto API v zásade používať?

  1. Správcovia systému, ktorí chcú zjednodušiť alebo zautomatizovať rutinné úlohy konfigurácie Check Point;
  2. Spoločnosti, ktoré chcú integrovať Check Point s inými riešeniami (virtualizačné systémy, ticket systémy, systémy na správu konfigurácie atď.);
  3. Systémoví integrátori, ktorí chcú štandardizovať nastavenia alebo vytvárať ďalšie produkty súvisiace s Check Point.

Typická schéma

Predstavme si teda typickú schému s Check Point:

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Ako obvykle máme bránu (SG), server pre správu (SMS) a správcovská konzola (SmartConsole). V tomto prípade zvyčajný proces konfigurácie brány vyzerá takto:

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Tie. Najprv musíte spustiť na počítači správcu SmartConsole, s ktorým sa pripájame na server správy (SMS). Nastavenia zabezpečenia sa vykonajú v SMS a až potom sa použijú (inštalovať politiku) na bránu (SG).

Pri použití Management API, môžeme v podstate preskočiť prvý bod (spustiť SmartConsole) a použiť API príkazy priamo na riadiaci server (SMS).

Spôsoby použitia API

Existujú štyri hlavné spôsoby úpravy konfigurácie pomocou rozhrania API:

1) Pomocou pomôcky mgmt_cli

Príklad - # mgmt_cli pridať názov hostiteľa IP-adresa hostiteľa1 192.168.2.100
Tento príkaz sa spúšťa z príkazového riadku servera Management Server (SMS). Myslím, že syntax príkazu je jasná - hostiteľ1 je vytvorený s adresou 192.168.2.100.

2) Zadajte príkazy API cez clish (v expertnom režime)

V podstate všetko, čo musíte urobiť, je prihlásiť sa do príkazového riadku (mgmt prihlásenie) pod účtom, ktorý sa používa pri pripájaní cez SmartConsole (alebo root účet). Potom môžete vstúpiť API príkazy (v tomto prípade nie je potrebné použiť nástroj pred každým príkazom mgmt_cli). Môžete vytvárať plnohodnotné BASH skripty. Príklad skriptu, ktorý hostiteľ vytvorí:

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

Ak máte záujem, môžete si pozrieť príslušné video:

3) Cez SmartConsole otvorením okna CLI

Všetko, čo musíte urobiť, je otvoriť okno CLI priamo z SmartConsole, ako je znázornené na obrázku nižšie.

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

V tomto okne môžete okamžite začať zadávať príkazy API.

4) Webové služby. Použiť požiadavku HTTPS Post (REST API)

Podľa nášho názoru je to jedna z najsľubnejších metód, pretože umožňuje „vytvárať“ celé aplikácie na základe správa servera na správu (prepáčte za tautológiu). Nižšie sa pozrieme na túto metódu trochu podrobnejšie.

Zhrnúť:

  1. API + cli vhodnejšie pre ľudí, ktorí sú zvyknutí na Cisco;
  2. API + shell na aplikáciu skriptov a vykonávanie rutinných úloh;
  3. REST API pre automatizáciu.

Povolenie rozhrania API

V predvolenom nastavení je rozhranie API povolené na serveroch na správu s viac ako 4 GB pamäte RAM a v samostatných konfiguráciách s viac ako 8 GB pamäte RAM. Stav môžete skontrolovať pomocou príkazu: stav api

Ak sa ukáže, že API je vypnuté, potom je celkom jednoduché ho povoliť cez SmartConsole: Manage & Settings > Blades > Management API > Advanced Settings

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Potom zverejnite (Publikovať) zmení a spustite príkaz reštart api.

Webové požiadavky + Python

Na spustenie príkazov API môžete použiť webové požiadavky pomocou Pytón a knižnice Žiadosti, json. Vo všeobecnosti štruktúra webovej požiadavky pozostáva z troch častí:

1) Adresa

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


2) Hlavičky HTTP

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


3) Požiadajte o užitočné zaťaženie

Text vo formáte JSON obsahujúci rôzne parametre

Príklad na volanie rôznych príkazov:


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

Tu je niekoľko typických úloh, s ktorými sa najčastejšie stretávate pri správe Check Point.

1) Príklad funkcií autorizácie a odhlásenia:

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) Zapnutie nožov a nastavenie siete:

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) Zmena pravidiel brány firewall:

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) Pridanie aplikačnej vrstvy:

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) Zverejnite a nastavte politiku, skontrolujte vykonanie príkazu (task-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) Pridať hostiteľa:

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) Pridajte pole Prevencia hrozieb:

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) Pozrite si zoznam relácií

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) Vytvorte si nový 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) Zmeňte akciu pre IPS podpis:

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) Pridajte svoju službu:

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) Pridajte kategóriu, stránku alebo skupinu:

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))

Navyše s pomocou WebAPI môžete pridávať a odstraňovať siete, hostiteľov, prístupové roly atď. Čepele je možné prispôsobiť Antivírus, Antibot, IPS, VPN. Je dokonca možné nainštalovať licencie pomocou príkazu run-script. Všetky príkazy API Check Point nájdete tu tu.

Check Point API + Postman

Tiež pohodlné použitie Check Point Web API v spojení s poštár. Postman má desktopové verzie pre Windows, Linux a MacOS. Okrem toho existuje plugin pre Google Chrome. To je to, čo budeme používať. Najprv musíte nájsť Postman v obchode Google Chrome a nainštalovať:

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Pomocou tejto pomôcky budeme môcť generovať webové požiadavky na Check Point API. Aby sme si nepamätali všetky API príkazy, je možné importovať takzvané kolekcie (šablóny), ktoré už obsahujú všetky potrebné príkazy:

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Tu nájdete zbierka pre R80.10. Po importovaní nám budú k dispozícii šablóny príkazov API:

Check Point R80.10 API. Správa cez CLI, skripty a ďalšie

Podľa mňa je to veľmi pohodlné. Pomocou rozhrania Check Point API môžete rýchlo začať s vývojom aplikácií.

Check Point + Ansible

Chcel by som tiež poznamenať, že existuje Ansible modul pre CheckPoint API. Modul umožňuje spravovať konfigurácie, ale nie je tak vhodný na riešenie exotických problémov. Písanie skriptov v akomkoľvek programovacom jazyku poskytuje flexibilnejšie a pohodlnejšie riešenia.

Výkon

Tu pravdepodobne dokončíme našu krátku recenziu rozhrania Check Point API. Táto funkcia bola podľa mňa veľmi dlho očakávaná a potrebná. Vznik API otvára veľmi široké možnosti pre systémových administrátorov aj systémových integrátorov, ktorí pracujú s produktmi Check Point. Orchestrácia, automatizácia, spätná väzba SIEM... to všetko je teraz možné.

PS Ďalšie články o Check Point ako vždy to nájdete na našom blogu Habr alebo na blogu na Online.

PSS Ak máte technické otázky týkajúce sa nastavenia Check Point, môžete tu

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

Plánujete použiť API?

  • 70,6%Áno12

  • 23,5%č.4

  • 5,9%Už používa 1

Hlasovalo 17 užívateľov. 3 používatelia sa zdržali hlasovania.

Zdroj: hab.com

Pridať komentár