Som si istý, že každý, s kým kedy spolupracoval
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ť?
- Správcovia systému, ktorí chcú zjednodušiť alebo zautomatizovať rutinné úlohy konfigurácie Check Point;
- 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ď.);
- 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:
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:
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.
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úť:
- API + cli vhodnejšie pre ľudí, ktorí sú zvyknutí na Cisco;
- API + shell na aplikáciu skriptov a vykonávanie rutinných úloh;
- 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
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
Check Point API + Postman
Tiež pohodlné použitie Check Point Web API v spojení s
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:
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
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
PSS Ak máte technické otázky týkajúce sa nastavenia Check Point, môžete
Do prieskumu sa môžu zapojiť iba registrovaní užívatelia.
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