
Olen kindel, et igaĂŒhel, kes on kunagi töötanud , on tekkinud kaebus konfiguratsiooni muutmise vĂ”imatuse ĂŒle kĂ€surealt. See on eriti kummaline neile, kes on töötanud Cisco ASA-ga, kus kĂ”ik on tĂ€iesti seadistatav CLI kaudu. Check Point'is on kĂ”ik vastupidi â kĂ”ik turvaseaded tehti ainult graafilise liidese kaudu. Kuid mĂ”ned asjad ei ole GUI kaudu (isegi nii mugav kui Check Point) lihtsalt mugavad. NĂ€iteks 100 uue hosti vĂ”i vĂ”rgu lisamine muutub pika ja tĂŒĂŒtu protsessiks. Iga objekti jaoks peab mitu korda hiireklikkima ja IP-aadressi sisestama. Sama kehtib ka saidigruppide loomise vĂ”i IPS-signatuuride massilise lubamise/keeldumise kohta. Samal ajal on suur tĂ”enĂ€osus eksida.
Hiljuti toimus "ime". Uue versiooni ilmumisega Gaia R80 kanti sisse vĂ”imalus kasutada API-d, mis avab laiad vĂ”imalused seadistuste automatiseerimiseks, haldamiseks, jĂ€lgimiseks jne. NĂŒĂŒd on vĂ”imalik:
- luua objekte;
- lisada vÔi muuta pÀÀsuliste nimekirju;
- lubada/keelata blade'e;
- konfigureerida vÔrgu liideseid;
- installida poliitikaid;
- ja palju muud.
Austuselt, ma ei saa aru, kuidas see uudis mööda Habrast lipsas. KĂ€esolevas artiklis kĂ€sitleme lĂŒhidalt, kuidas API-d kasutada ja toome vĂ€lja mĂ”ned praktilised nĂ€ited CheckPointi seadistamisest skriptide abil.
Ma tahan kohe öelda, et API-d kasutatakse ainult Management serveri jaoks. See tÀhendab, et pÀÀsude haldamine ilma Management serverita ei ole endiselt vÔimalik.
Kellele vÔib see API tegelikult kasuks tulla?
- SĂŒsteemiadministraatorid, kes soovivad lihtsustada vĂ”i automatiseerida rutiinseid Check Pointi seadistamise ĂŒlesandeid;
- EttevĂ”tted, kes soovivad integreerida Check Pointi teiste lahendustega (virtualiseerimissĂŒsteemid, piletisĂŒsteemid, konfigureerimissĂŒsteemid jne);
- SĂŒsteemiintegraatorid, kes soovivad standardiseerida seadistusi vĂ”i luua tĂ€iendavaid tooteid, mis on seotud Check Pointiga.
TĂŒĂŒpiline skeem
Nii et kujutame ette tĂŒĂŒpilist skeemi Check Pointiga:

Kuidas tavaliselt on meil hĂŒbriid (SG), haldusseerver (SMS) ja administraatori konsool (SmartConsole). Tavaline protsess hĂŒbriidi seadistamiseks nĂ€eb vĂ€lja jĂ€rgmine:

See tĂ€hendab, et kĂ”igepealt tuleb administraatori arvutis kĂ€ivitada SmartConsole, millega me ĂŒhendume Management-serveriga (SMS). SMS-is kehtestatakse turvaseaded, ja seejĂ€rel rakendatakse (install policy) lĂŒĂŒsis (SG).
Kasutades Management API, pÔhimÔtteliselt saame esimese sammu (SmartConsole'i kÀivitamine) vahele jÀtta ja rakendada API-kÀsklusi otseselt Management-serverile (SMS).
API kasutamise viisid
Konfiguratsiooni muutmiseks API abil on neli peamist viisi:
1) Kasutades utiliidi mgmt_cli
NĂ€ide â # mgmt_cli add host name host1 ip-address 192.168.2.100
See kĂ€sk kĂ€ivitatakse Management-serveri (SMS) kĂ€surealt. Arvan, et kĂ€susĂŒntaks on selge â luuakse host1 aadressiga 192.168.2.100.
2) Sisestades API kĂ€ske lĂ€bi clish (eksperti reĆŸiimis)
Sisuliselt on kĂ”ik, mis on vajalik, sisse logida kĂ€sureale (mgmt login) kasutajakonto alla, mida kasutatakse SmartConsole'i kaudu ĂŒhendamiseks (vĂ”i root-konto). Siis saate sisestada API-kĂ€sklusi (selles juhul ei ole vaja iga kĂ€su ette kasutada utiliiti mgmt_cli). Saate luua tĂ€isfunktsionaalseid BASH-skripte. NĂ€ide skriptist, mis loob hosti:
Bash-skripti
#!/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
Kui huvitab, siis saate vaadata vastavat videot:

3) LĂ€bi SmartConsole, avades CLI akna
KÔik, mida on vaja teha, on kÀivitada aken cli-runtime'is ja kubectl'is otse SmartConsole, nagu on alloleval pildil nÀidatud.

Selles aknas saate kohe alustada API-kÀskluste sisestamist.
4) Veebiteenused. Kasutada HTTPS Post-pÀringut (REST API)
Meie arvates on see ĂŒks perspektiivsemaid viise, kuna see vĂ”imaldab âehitadaâ terveid rakendusi haldamise serveri (vabandust, et see nĂ€eb vĂ€lja nagu tautoloogia). Allpool kĂ€sitleme seda meetodit lĂ€hemalt.
KokkuvÔtteks:
- API + cli sobib rohkem inimestele, kes on harjunud Cisco'ga;
- API + shell skripti rakendamiseks ja rutiinsete ĂŒlesannete tĂ€itmiseks;
- REST API automaatika jaoks.
API lubamine
Suvandina on API vaikimisi lubatud juhtimisseerverites, kus RAM mahutavus on suurem kui 4 GB, ja iseseisvates konfiguratsioonides, kus RAM mahutavus on suurem kui 8 GB. Oleku kontrollimiseks saab kasutada kÀsku: api status
Kui selgub, et API on vĂ€lja lĂŒlitatud, saab selle SmartConsole'i kaudu lihtsalt sisse lĂŒlitada: Manage & Settings > Blades > Management API > TĂ€iendavad seaded

SeejÀrel avaldada (vÀlises teenuses) muudatused ja kÀivitada kÀsk api restart.
VeebipÀringud + Python
API-kĂ€skluste tĂ€itmiseks saab kasutada veebipĂ€ringuid koos Python ja raamatukogudega taotlused, json. Ăldiselt koosneb veebipĂ€ringu struktuur kolmest osast:
1) Aadress
(https://:/web_api/)
2) HTTP pÀised
content-Type: application/json
x-chkp-sid:
3) PĂ€ringu koormus
JSON formaadis tekst, mis sisaldab erinevaid parameetreid
KÀskude erinevate funktsioonide nÀide:
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-aadress GAIA
Vaatame mĂ”ningaid tĂŒĂŒpilisi ĂŒlesandeid, millega sageli kohtatakse Check Pointi haldamisel.
1) Autoriseerimise ja vÀljaregistreerimise funktsioonide nÀide:
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) Blade-de aktiveerimine ja vÔrgu seadistamine:
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) TulemĂŒĂŒri reeglite muutmine:
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) Rakenduse taseme lisamine:
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) Politika avaldamine ja seadistamine, kÀsu tÀitmise kontroll (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) Uue hosti lisamine:
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) Threat Prevention vÀli lisamine:
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) Seanssiloendi vaatamine
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) Loo uus profiil:
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) Muuta IPS signatuuri toimingut:
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) Lisa oma teenus:
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) Lisa kategooria, sait vÔi grupp:
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))
Lisaks saab abil Veebi API saate lisada ja eemaldada vÔrke, hoste, ligipÀÀsurole, jne. On vÔimalik seadistada blade-e Antiviirus, Antibot, IPS, VPN. On vÔimalik isegi litsentse installida kÀsu abil run-script. KÔiki Check Pointi API kÀske saab tutvuda .
Check Point API + Postman
Samuti on mugav kasutada Check Point Web API koos . Postmanil on töölauaversioonid Windowsile, Linuxile ja MacOS-ile. Lisaks on olemas punkti lisand Google Chrome'ile. Seda me kasutame. Esiteks peate leidma Postmani Google Chrome'i poest ja paigaldama:

Selle utiliidi abil saame vormindada veebikÀske Check Point API-le. Et mitte kÔik API kÀsud meelde jÀtta, on vÔimalik importida nn kogusid (mallid), mis sisaldavad juba kÔiki vajalikke kÀske:

leiate kogus jaoks R80.10. PÀrast importi on meil saadaval API kÀskude malli:

Minu arvates on see vÀga mugav. Saame kiiresti alustada rakenduste arendamist, kasutades Check Point API-t.
Check Point + Ansible
Samuti sooviksin mĂ€rkida, et eksisteerib Ansible CheckPoint API jaoks. Moodul vĂ”imaldab hallata konfiguratsioone, kuid see pole nii mugav eksootiliste ĂŒlesannete lahendamiseks. Skriptide kirjutamine mistahes programmeerimiskeeles pakub paindlikumaid ja mugavamaid lahendusi.
KokkuvÔte
Selleks lĂ”petame meie vĂ€ikese ĂŒlevaate Check Point API-st. Minu arvates oli see funktsioon kauaoodatud ja vajalik. API kasutuselevĂ”tt avab vĂ€ga laiad vĂ”imalused nii sĂŒsteemiadministraatoritele kui ka sĂŒsteemiintegraatoritele, kes töötavad Check Pointi toodetega. Orkestreerimine, automatiseerimine, tagasiside SIEM-ile... kĂ”ik see on nĂŒĂŒd vĂ”imalik.
P.S. Rohkem artikleid leiate nagu alati meie blogist vÔi blogist aadressil .
P.S.S. Tehnilisi kĂŒsimusi seoses Check Pointi seadistamisega saab esitada
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Kas plaanite kasutada API-d?
70,6%Jah12
23,5%Ei4
5,9%Kasutame juba1
Olen hÀÀltega 17 kasutajat. 3 kasutajad on hoidunud.
Allikas: habr.com
