Prepričan sem, da vsi, ki so kdaj delali z
"Čudež" se je zgodil relativno nedavno. Z izidom nove različice Gaia 80 € priložnost je bila napovedana uporaba API-ja, ki odpira široke možnosti za avtomatizacijo nastavitev, administracije, nadzora itd. Zdaj lahko:
- ustvarjanje predmetov;
- dodajanje ali urejanje dostopnih seznamov;
- omogoči/onemogoči rezila;
- konfigurirati omrežne vmesnike;
- namestitvene politike;
- in še veliko več.
Iskreno povedano, ne razumem, kako je ta novica prišla mimo Habra. V tem članku bomo na kratko opisali uporabo API-ja in podali nekaj praktičnih primerov. Nastavitve CheckPointa z uporabo skriptov.
Želel bi takoj rezervirati, da se API uporablja samo za strežnik za upravljanje. Tisti. Še vedno je nemogoče upravljati prehode brez strežnika za upravljanje.
Kdo lahko načeloma uporablja ta API?
- Sistemski skrbniki, ki želijo poenostaviti ali avtomatizirati rutinska konfiguracijska opravila Check Point;
- Podjetja, ki želijo integrirati Check Point z drugimi rešitvami (sistemi za virtualizacijo, sistemi vozovnic, sistemi za upravljanje konfiguracije itd.);
- Sistemski integratorji, ki želijo standardizirati nastavitve ali ustvariti dodatne izdelke, povezane s Check Pointom.
Tipična shema
Torej, predstavljajmo si tipično shemo s Check Pointom:
Kot ponavadi imamo prehod (SG), strežnik za upravljanje (SMS) in skrbniško konzolo (SmartConsole). V tem primeru je običajni postopek konfiguracije prehoda videti takole:
Tisti. Najprej morate zagnati na skrbniškem računalniku SmartConsole, s katerim se povežemo s strežnikom za upravljanje (SMS). Varnostne nastavitve se izvedejo na SMS-u in šele nato uporabijo (pravilnik o namestitvi) do prehoda (SG).
Pri uporabi API za upravljanje, lahko prvo točko v bistvu preskočimo (zaženemo SmartConsole) in uporabimo API ukazi neposredno na strežnik za upravljanje (SMS).
Načini uporabe API-ja
Obstajajo štirje glavni načini urejanja konfiguracije z uporabo API-ja:
1) Z uporabo pripomočka mgmt_cli
Primer - # mgmt_cli dodaj ime gostitelja host1 naslov IP 192.168.2.100
Ta ukaz se zažene iz ukazne vrstice strežnika za upravljanje (SMS). Mislim, da je sintaksa ukaza jasna - host1 je ustvarjen z naslovom 192.168.2.100.
2) Vnesite ukaze API prek clish (v strokovnem načinu)
V bistvu se morate le prijaviti v ukazno vrstico (mgmt prijava) pod računom, ki se uporablja pri povezovanju prek SmartConsole (ali root račun). Potem lahko vstopite API ukazi (v tem primeru ni treba uporabljati pripomočka pred vsakim ukazom mgmt_cli). Ustvarite lahko polnopravne skripte BASH. Primer skripta, ki ga ustvari gostitelj:
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
Če vas zanima, si lahko ogledate ustrezen video:
3) Prek SmartConsole z odpiranjem okna CLI
Vse kar morate storiti je, da odprete okno CLI naravnost iz SmartConsole, kot je prikazano na spodnji sliki.
V tem oknu lahko takoj začnete vnašati ukaze API.
4) Spletne storitve. Uporabi zahtevo za objavo HTTPS (REST API)
Po našem mnenju je to ena najbolj obetavnih metod, saj omogoča "zgradnjo" celotnih aplikacij na podlagi upravljanje strežnika za upravljanje (se opravičujem za tavtologijo). Spodaj si bomo to metodo ogledali nekoliko podrobneje.
Povzeti:
- API + cli bolj primeren za ljudi, ki so navajeni na Cisco;
- API + lupina za uporabo skriptov in izvajanje rutinskih opravil;
- REST API za avtomatizacijo.
Omogočanje API-ja
API je privzeto omogočen na strežnikih za upravljanje z več kot 4 GB RAM-a in samostojnih konfiguracijah z več kot 8 GB RAM-a. Stanje lahko preverite z ukazom: status api
Če se izkaže, da je api onemogočen, ga je zelo enostavno omogočiti prek SmartConsole: Upravljanje in nastavitve > Rezina > API za upravljanje > Napredne nastavitve
Nato objavi (objavi) spremeni in zaženite ukaz ponovni zagon api.
Spletne zahteve + Python
Za izvajanje ukazov API lahko uporabite spletne zahteve z uporabo Python in knjižnice zahteva, json. Na splošno je struktura spletne zahteve sestavljena iz treh delov:
1) Naslov
(https://<managemenet server>:<port>/web_api/<command>)
2) Glave HTTP
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Zahtevajte tovor
Besedilo v formatu JSON, ki vsebuje različne parametre
Primer klicanja različnih ukazov:
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
Tukaj je nekaj tipičnih opravil, s katerimi se najpogosteje srečujete pri upravljanju Check Pointa.
1) Primer funkcij avtorizacije in odjave:
Skripta
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) Vklop rezil in nastavitev omrežja:
Skripta
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) Spreminjanje pravil požarnega zidu:
Skripta
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) Dodajanje sloja aplikacije:
Skripta
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) Objavite in nastavite pravilnik, preverite izvajanje ukaza (task-id):
Skripta
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) Dodajte gostitelja:
Skripta
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) Dodajte polje za preprečevanje groženj:
Skripta
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) Oglejte si seznam sej
Skripta
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) Ustvarite nov profil:
Skripta
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) Spremenite dejanje za podpis IPS:
Skripta
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) Dodajte svojo storitev:
Skripta
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) Dodajte kategorijo, spletno mesto ali skupino:
Skripta
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))
Poleg tega s pomočjo Spletni API dodajate in odstranjujete lahko omrežja, gostitelje, dostopne vloge itd. Rezila je mogoče prilagoditi Antivirus, Antibot, IPS, VPN. Z ukazom je mogoče celo namestiti licence run-script. Vse ukaze Check Point API lahko najdete tukaj
Check Point API + poštar
Prav tako priročen za uporabo Check Point Web API v povezavi z
Z uporabo tega pripomočka bomo lahko ustvarili spletne zahteve za API Check Point. Da si ne zapomnimo vseh API ukazov, je možno uvoziti tako imenovane zbirke (predloge), ki že vsebujejo vse potrebne ukaze:
Po mojem mnenju je to zelo priročno. Z API-jem Check Point lahko hitro začnete razvijati aplikacije.
Check Point + Ansible
Prav tako bi rad opozoril, da obstaja Možno
Izhod
Tukaj bomo verjetno končali naš kratek pregled API-ja Check Point. Po mojem mnenju je bila ta funkcija zelo dolgo pričakovana in potrebna. Pojav API-ja odpira zelo široke možnosti za sistemske skrbnike in sistemske integratorje, ki delajo z izdelki Check Point. Orkestracija, avtomatizacija, povratne informacije SIEM ... vse je zdaj mogoče.
P.S. Več člankov o
P.S.S. Za tehnična vprašanja, povezana z nastavitvijo Check Point, lahko
V anketi lahko sodelujejo samo registrirani uporabniki.
Ali nameravate uporabiti API?
-
70,6%Da12
-
23,5%št.4
-
5,9%Že uporabljam 1
Glasovalo je 17 uporabnikov. 3 uporabnika sta se vzdržala.
Vir: www.habr.com