Olen kindel, et kõik, kes on kunagi koos töötanud
Suhteliselt hiljuti juhtus "ime". Uue versiooni ilmumisega Gaia R80 teatati võimalusest API kasutamine, mis avab laialdased võimalused seadistuste, halduse, jälgimise jms automatiseerimiseks. Nüüd sa saad:
- luua objekte;
- lisada või muuta juurdepääsuloendeid;
- lubada/keelata labad;
- konfigureerida võrguliideseid;
- installipoliitikad;
- jpm.
Ausalt öeldes ei saa ma aru, kuidas see uudis Habrilt möödus. Selles artiklis kirjeldame lühidalt API kasutamist ja anname mitmeid praktilisi näiteid. CheckPointi seaded skriptide abil.
Soovin kohe teha broneeringu, et API-d kasutatakse ainult haldusserveri jaoks. Need. Lüüside haldamine ilma haldusserverita on endiselt võimatu.
Kes saab seda API-t põhimõtteliselt kasutada?
- Süsteemiadministraatorid, kes soovivad lihtsustada või automatiseerida rutiinseid Check Pointi konfigureerimisülesandeid;
- Ettevõtted, kes soovivad Check Pointi integreerida teiste lahendustega (virtualiseerimissüsteemid, piletisüsteemid, konfiguratsioonihaldussüsteemid jne);
- Süsteemiintegraatorid, kes soovivad sätteid standardida või luua täiendavaid Check Pointiga seotud tooteid.
Tüüpiline skeem
Niisiis, kujutame ette tüüpilist skeemi Check Pointiga:
Nagu tavaliselt, on meil värav (SG), haldusserver (SMS) ja administraatorikonsool (SmartConsole). Sel juhul näeb tavaline lüüsi konfiguratsiooniprotsess välja järgmine:
Need. Kõigepealt peate käivitama administraatori arvutis SmartConsole, millega ühendame haldusserveriga (SMS). Turvaseaded tehakse SMS-is ja alles siis rakendatakse (installipoliitika) lüüsi (SG).
Kui kasutate Haldamise API, saame põhimõtteliselt esimese punkti vahele jätta (käivitada SmartConsole) ja kasutada API käsud otse haldusserverisse (SMS).
API kasutamise viisid
Konfiguratsiooni muutmiseks API abil on neli peamist võimalust:
1) Utiliidi mgmt_cli kasutamine
Näide - # mgmt_cli lisage hostinimi host1 ip-aadress 192.168.2.100
Seda käsku käivitatakse haldusserveri (SMS) käsurealt. Arvan, et käsu süntaks on selge – host1 luuakse aadressiga 192.168.2.100.
2) Sisestage API-käsud clishi kaudu (eksperdirežiimis)
Põhimõtteliselt pole vaja teha muud, kui sisse logida käsureale (mgmt sisselogimine) selle konto all, mida kasutatakse SmartConsole'i (või juurkonto) kaudu ühenduse loomisel. Siis saate siseneda API käsud (sel juhul pole utiliiti vaja enne iga käsku kasutada mgmt_cli). Saate luua täisväärtusliku BASH-skriptid. Näide skriptist, mille host loob:
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
Huvi korral saate vaadata vastavat videot:
3) SmartConsole'i kaudu, avades CLI akna
Kõik, mida pead tegema, on avada aken CLI otse SmartConsole, nagu on näidatud alloleval pildil.
Selles aknas saate kohe alustada API käskude sisestamist.
4) Veebiteenused. Kasutage HTTPS-i postitustaotlust (REST API)
Meie arvates on see üks paljutõotavamaid meetodeid, sest võimaldab teil "ehitada" terveid rakendusi haldusserveri haldus (vabandan tautoloogia pärast). Allpool vaatleme seda meetodit veidi üksikasjalikumalt.
Kokku võtma:
- API + Cli sobib paremini inimestele, kes on Ciscoga harjunud;
- API + kest skriptide rakendamiseks ja rutiinsete ülesannete täitmiseks;
- REST API automatiseerimiseks.
API lubamine
Vaikimisi on API lubatud haldusserverites, millel on rohkem kui 4 GB muutmälu, ja eraldiseisvates konfiguratsioonides, kus on rohkem kui 8 GB muutmälu. Olekut saate kontrollida käsuga: api olek
Kui selgub, et api on keelatud, on selle lubamine SmartConsole'i kaudu üsna lihtne: Haldamine ja sätted > Blades > Haldamise API > Täpsemad sätted
Seejärel avaldage (Avalda) muudab ja käivitage käsk api taaskäivitamine.
Veebipäringud + Python
API käskude täitmiseks saate kasutada veebipäringuid kasutades Python ja raamatukogud Taotlusi, Json. Üldiselt koosneb veebipäringu struktuur kolmest osast:
1) Aadress
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP päised
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Taotle kasulikku koormust
JSON-vormingus tekst, mis sisaldab erinevaid parameetreid
Näide erinevate käskude kutsumiseks:
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
Siin on mõned tüüpilised toimingud, millega Check Pointi haldamisel kõige sagedamini kokku puutute.
1) Autoriseerimise ja väljalogimise 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) Terade sisselülitamine 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) Rakenduskihi 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) Avaldage ja määrake poliitika, kontrollige käsu täitmist (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) 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) Lisage ohuennetuse 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) Vaadake 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) Looge 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) Muutke IPS-allkirja 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) Lisage 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) Lisage kategooria, sait või rühm:
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 abiga Veebi API saate lisada ja eemaldada võrke, hoste, juurdepääsurolle jne. Terasid saab kohandada Viirusetõrje, Antibot, IPS, VPN. Litsentse on võimalik isegi käsu abil installida run-script. Kõik Check Point API käsud leiate siit
Check Point API + Postimees
Samuti mugav kasutada Check Point Web API seoses
Selle utiliidi abil saame genereerida veebipäringuid Check Point API-le. Et mitte kõiki API käske meelde jätta, on võimalik importida nn kogusid (malle), mis juba sisaldavad kõiki vajalikke käske:
Minu arvates on see väga mugav. Saate kiiresti alustada rakenduste arendamist Check Point API abil.
Check Point + Ansible
Tahaksin ka märkida, et on olemas Võimalik
Väljund
Siin me tõenäoliselt lõpetame oma lühikese ülevaate Check Point API kohta. Minu arvates oli see funktsioon väga kaua oodatud ja vajalik. API tekkimine avab väga laialdased võimalused nii süsteemiadministraatoritele kui ka süsteemiintegraatoritele, kes töötavad Check Pointi toodetega. Orkestreerimine, automatiseerimine, SIEM-i tagasiside... see kõik on nüüd võimalik.
PS Rohkem artikleid teemal
PSS Check Pointi seadistamisega seotud tehniliste küsimuste korral saate seda teha
Küsitluses saavad osaleda ainult registreerunud kasutajad.
Kas kavatsete API-d kasutada?
-
70,6%jah 12
-
23,5%Ei 4
-
5,9%Kasutan juba 1
17 kasutajat hääletas. 3 kasutajat jäi erapooletuks.
Allikas: www.habr.com