
Olen veendunud, et igaühel, kes on kunagi töötanud , on esinenud kaebuseid konfiguratsiooni muutmise võimatusest käsurealt. See on eriti kummaline neile, kes on varem töötanud Cisco ASA-ga, kus kõik on võimalik seadistada CLI kaudu. Check Pointis on aga kõik vastupidi — kõik turvaseaded tehti ainult graafilise liidese kaudu. Siiski on mõned asjad täiesti ebamugavad teha GUI kaudu (isegi nii mugav kui Check Point). Näiteks 100 uue hosti või võrgu lisamine muutub pika ja tüütu protsessiks. Iga objekti jaoks tuleb mitu korda hiirt klõpsata ja IP-aadressi sisestada. Sama kehtib ka veebisaitide rühma loomise või IPS-signatuuride massilise sisselülitamise/väljalülitamise kohta. Samuti on suure tõenäosusega võimalik teha viga.
Hiljuti juhtus 'ime'. Uue versiooni väljalaskmisega Gaia R80 kuulutati välja 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 access-list-e;
- sisse lülitada/välja lülitada blade'e;
- seada sisse võrgu liideseid;
- installeerimise poliitikad;
- ja palju muud.
Ausalt öeldes ei saa ma aru, kuidas see uudis Habrast mööda läks. Selles artiklis anname lühikese ülevaate API kasutamisest ja toome mitu praktilist näidet. CheckPointi seadistamine skriptide abil.
Tahan kohe öelda, et API-d kasutatakse ainult Management serveri jaoks. See tähendab, et gatewaysid ei saa endiselt hallata ilma Management serverita.
Kellele võib see API 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, konfigureerimise haldamise süsteemid jms);
- Süsteemiintegratsioonifirmad, kes soovivad standardiseerida seadistusi või luua täiendavaid tooteid, mis on seotud Check Pointiga.
Tüüpiline skeem
Kujutage näiteks ette tüüpilist skeemi Check Pointiga:

Nagu tavaliselt, on meil olemas gateway (SG), haldussüsteem (SMS) ja administraatori konsool (SmartConsole). Tavaline gateway seadistamise protsess näeb välja järgmine:

Esiteks, peab administraatori arvutis olema käivitatud SmartConsole, millega me ühendume haldusserveriga (SMS). SMS-is tehakse turvaseaded ja seejärel rakendatakse (install policy) värava (SG).
При использовании Management API, põhjus on, et me saame esimest sammu (SmartConsole'i käivitamine) jätta vahele ja rakendada API-käsud otseselt haldusserverile (SMS).
API kasutamise meetodid
API kaudu konfiguratsiooni muutmiseks on neli peamist võimalust:
1) Kasutades utiliiti mgmt_cli
Näide — # mgmt_cli add host name host1 ip-address 192.168.2.100
See käsk käivitatakse haldusserveri (SMS) käsurealt. Arvan, et käsusüntaks on arusaadav — luuakse host1 aadressiga 192.168.2.100.
2) Sisestades API käsud läbi clish (ekspertrežiimis)
Põhimõtteliselt, kõik, mida vajate, on sisse logida käsureale (mgmt login) kasutajakontoga, mida kasutatakse SmartConsole'i kaudu ühenduse loomiseks (või root-kontoga). Seejärel saab sisestada API-käsud (sel juhul ei ole vajalik kasutada iga käsu ees utiliiti mgmt_cli). Saate luua täisväärtuslikke BASH-skripte. Skripti näide, 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 olete huvitatud, võite vaadata vastavat videot:

3) Läbi SmartConsole, avades CLI akna
Kõik, mida peate tegema, on avada aken CLI otse SmartConsole, nagu on näidatud alloleval pildil.

Selles aknas saab kohe alustada API käskude sisestamist.
4) Veebiteenused. Kasutage HTTPSi POST-päringut (REST API)
Meie arvates on see üks kõige paljutõotavamaid viise, kuna see võimaldab "ehitada" terveid rakendusi serverihalduse jaoks (vabandust tautoloogia eest). Allpool vaatame seda meetodit veidi üksikasjalikumalt.
Kokkuvõttes:
- API + cli sobib rohkem neile, kes on harjunud Cisco'ga;
- API + shell skriptide rakendamiseks ja rutiinsete ülesannete täitmiseks;
- REST API automaatika jaoks.
API aktiveerimine
Käivitataval seadmel, mille RAM on üle 4 GB, ja iseseisvates konfiguratsioonides, mille RAM on üle 8 GB, on API vaikevälja lülitatud. Staatusi saab kontrollida käsuga: api status
Kui selgub, et api on välja lülitatud, on seda üsna lihtne aktiveerida SmartConsole'i kaudu: Manage & Settings > Blades > Management API > Advanced Settings

Seejärel avaldage (Publish) muudatused ja käivitage käsk api restart.
Veebipäringud + Python
API käskude täitmiseks saab kasutada veebipäringute ja Python raamatukogude requests, json. Üldiselt koosneb veebipäringu struktuur kolmest osast:
1) Aadress
(https://<halduse server>:<port>/web_api/<käsk>)
2) HTTP Päised
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Päringu koormus
JSON formaadis tekst, mis sisaldab erinevaid parameetreid
Näide erinevate käskude väljakutsumiseks:
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
Toome välja mõned tüüpilised ülesanded, millega kõige sagedamini kokku puututakse Check Point'i haldamisel.
1) Näide autoriseerimise ja välja logimise funktsioonidest:
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) Blä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) Tulekahju seina 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) Poliitika avaldamine ja installimine, käsu (task-id) täitmise kontrollimine:
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) Lisa host:
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) Lisa Threat Prevention väli:
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) Vaata seansside loendit
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) Muuda IPS signatuuri tegevust:
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" : "Mängud","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 saate Web API lisada ja kustutada võrgustikke, hoste, juurdepääsu rolle jne. Olemas on blade'ide seadistamise võimalus Antivirus, Antibot, IPS, VPN. Samuti on võimalik litsentside paigaldamine käsu abil run-script. Kõigi API-käskudega Check Point'is saate tutvuda .
Check Point API + Postman
Samuti on mugav kasutada Check Point Web API seotud . Postmanil on töölauaversioonid Windowsile, Linuxile ja MacOS-ile. Lisaks on olemas ka Google Chrome'i plugin. Kasutame seda. Esiteks tuleb leida Postman Google Chrome'i poes ja installida see:

Selle tarkvara abil suudame genereerida veebiküsimusi Check Point API-le. Et mitte kõik API-käsud meelde jätta, on võimalik importida nn kogusid (šabloone), mis sisaldavad juba kõiki vajalikke käske:

leiate kogus kuna R80.10. Pärast importimist saavad meile kättesaadavaks API-käskude šablonid:

Minu arvates on see väga mugav. Saame üsna kiiresti alustada rakenduste väljatöötamist, kasutades Check Point API-d.
Check Point + Ansible
Samuti tahan märkida, et olemas on Ansible CheckPoint API jaoks. Moodul võimaldab hallata konfiguratsioone, kuid ei ole nii mugav eksootiliste ülesannete lahendamiseks. Skriptide kirjutamine mis tahes programmeerimiskeeles pakub paindlikumaid ja mugavamaid lahendusi.
Kokkuvõte
Siin lõpetame meie väikese ülevaate Check Point API-st. Minu arvates on see funktsioon olnud kauaoodatud ja hädavajalik. API ilmumine 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 .
P.S.S. Tehnilisi küsimusi, mis on seotud Check Pointi seadistamisega, saab esitada
Ainult registreeritud kasutajad saavad küsitluses osaleda. , palun.
Kas plaanite API kasutada?
70,6%Jah12
23,5%Ei4
5,9%Kasutab juba1
Hääletas 17 kasutajat. 3 kasutajat jäid erapooletuks.
Allikas: habr.com
