Ég er viss um að allir sem hafa unnið með
„kraftaverk“ gerðist tiltölulega nýlega. Með útgáfu nýju útgáfunnar Gaia 80 kr tækifærið var tilkynnt API notkun, sem opnar víðtæka möguleika til að gera sjálfvirkar stillingar, stjórnun, eftirlit o.s.frv. Nú geturðu:
- búa til hluti;
- bæta við eða breyta aðgangslistum;
- virkja/slökkva á blöðum;
- stilla netviðmót;
- setja upp stefnur;
- og margt fleira.
Satt að segja skil ég ekki hvernig þessar fréttir fóru fram hjá Habr. Í þessari grein munum við lýsa í stuttu máli hvernig á að nota API og gefa nokkur hagnýt dæmi. CheckPoint stillingar með forskriftum.
Mig langar strax að gera fyrirvara um að API sé aðeins notað fyrir stjórnunarþjóninn. Þeir. Það er samt ómögulegt að stjórna gáttum án stjórnunarþjóns.
Hver getur notað þetta API í grundvallaratriðum?
- Kerfisstjórar sem vilja einfalda eða gera sjálfvirkan reglubundna stillingu Check Point;
- Fyrirtæki sem vilja samþætta Check Point við aðrar lausnir (sýndarkerfi, miðakerfi, stillingarstjórnunarkerfi osfrv.);
- Kerfissamþættingar sem vilja staðla stillingar eða búa til viðbótar vörur tengdar Check Point.
Dæmigert kerfi
Svo, við skulum ímynda okkur dæmigert kerfi með Check Point:
Eins og venjulega höfum við hlið (SG), stjórnunarþjónn (SMS) og stjórnborði (SmartConsole). Í þessu tilviki lítur venjulega gáttarstillingarferlið svona út:
Þeir. Fyrst þarftu að keyra á tölvu stjórnanda SmartConsole, sem við tengjumst við stjórnunarþjóninn (SMS). Öryggisstillingar eru gerðar á SMS, og aðeins þá notaðar (setja upp stefnu) að gátt (SG).
Þegar á Stjórnunarforritaskil, við getum í grundvallaratriðum sleppt fyrsta punktinum (ræst SmartConsole) og notað API skipanir beint á stjórnunarþjóninn (SMS).
Leiðir til að nota API
Það eru fjórar helstu leiðir til að breyta stillingunum með því að nota API:
1) Notaðu mgmt_cli tólið
Dæmi - # mgmt_cli bæta við hýsilsnafni host1 IP-tölu 192.168.2.100
Þessi skipun er keyrð frá stjórnunarþjóninum (SMS) skipanalínunni. Ég held að setningafræði skipunarinnar sé skýr - host1 er búin til með heimilisfanginu 192.168.2.100.
2) Sláðu inn API skipanir í gegnum clish (í sérfræðingaham)
Í grundvallaratriðum, allt sem þú þarft að gera er að skrá þig inn á skipanalínuna (mgmt innskráningu) undir reikningnum sem er notaður þegar tengst er í gegnum SmartConsole (eða rótarreikning). Þá er hægt að slá inn API skipanir (í þessu tilfelli er engin þörf á að nota tólið fyrir hverja skipun mgmt_cli). Þú getur búið til fullgild BASH handrit. Dæmi um skriftu sem gestgjafinn býr til:
Bash handrit
#!/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
Ef þú hefur áhuga geturðu horft á samsvarandi myndband:
3) Í gegnum SmartConsole með því að opna CLI gluggann
Allt sem þú þarft að gera er að opna gluggann CLI beint frá SmartConsole, eins og sést á myndinni hér að neðan.
Í þessum glugga geturðu strax byrjað að slá inn API skipanir.
4) Vefþjónusta. Notaðu HTTPS Post beiðni (REST API)
Að okkar mati er þetta ein vænlegasta aðferðin, því gerir þér kleift að „smíða“ heil forrit byggð á stjórnun miðlara stjórnun (afsakið tautology). Hér að neðan munum við skoða þessa aðferð aðeins nánar.
Til að draga saman:
- API + cli hentugra fyrir fólk sem er vant Cisco;
- API + skel til að beita handritum og framkvæma venjubundin verkefni;
- REST API fyrir sjálfvirkni.
Virkja API
Sjálfgefið er að API er virkt á stjórnunarþjónum með meira en 4GB af vinnsluminni og sjálfstæðum stillingum með meira en 8GB af vinnsluminni. Þú getur athugað stöðuna með því að nota skipunina: API stöðu
Ef það kemur í ljós að api er óvirkt, þá er frekar auðvelt að virkja það í gegnum SmartConsole: Stjórna og stillingum > Blað > Stjórnunarforritaskil > Ítarlegar stillingar
Birtu síðan (Birta) breytist og keyrðu skipunina api endurræsa.
Vefbeiðnir + Python
Til að framkvæma API skipanir geturðu notað vefbeiðnir með því að nota Python og bókasöfn beiðnir, json. Almennt séð samanstendur uppbygging vefbeiðni úr þremur hlutum:
1) Heimilisfang
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP hausar
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Biðja um farm
Texti á JSON sniði sem inniheldur mismunandi færibreytur
Dæmi um að kalla á ýmsar skipanir:
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
Hér eru nokkur dæmigerð verkefni sem þú lendir oftast í þegar þú stjórnar Check Point.
1) Dæmi um heimildar- og útskráningaraðgerðir:
Handrit
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) Kveikja á blöðunum og setja upp netið:
Handrit
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) Breyting á eldveggsreglum:
Handrit
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) Bæta við umsóknarlagi:
Handrit
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) Birtu og stilltu stefnuna, athugaðu framkvæmd skipunarinnar (verkefni-id):
Handrit
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) Bæta við gestgjafa:
Handrit
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) Bættu við reit til að koma í veg fyrir ógn:
Handrit
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) Skoðaðu lista yfir fundi
Handrit
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) Búðu til nýjan prófíl:
Handrit
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) Breyttu aðgerðinni fyrir IPS undirskriftina:
Handrit
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) Bættu við þjónustunni þinni:
Handrit
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) Bættu við flokki, síðu eða hópi:
Handrit
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))
Að auki, með hjálp Vef-API þú getur bætt við og fjarlægt netkerfi, vélar, aðgangshlutverk o.s.frv. Hægt er að aðlaga blöð Antivirus, Antibot, IPS, VPN. Það er jafnvel hægt að setja upp leyfi með skipuninni run-script. Allar Check Point API skipanir má finna hér
Check Point API + Postman
Einnig þægilegt í notkun Check Point Web API í tengslum við
Með því að nota þetta tól munum við geta búið til vefbeiðnir í Check Point API. Til að muna ekki allar API skipanir er hægt að flytja inn svokölluð söfn (sniðmát), sem innihalda nú þegar allar nauðsynlegar skipanir:
Að mínu mati er þetta mjög þægilegt. Þú getur fljótt byrjað að þróa forrit með því að nota Check Point API.
Check Point + Ansible
Ég vil líka taka það fram að það er till Ansible
Output
Þetta er þar sem við munum líklega ljúka stuttri endurskoðun okkar á Check Point API. Að mínu mati var þessi eiginleiki mjög langþráður og nauðsynlegur. Tilkoma API opnar mjög víðtæk tækifæri fyrir bæði kerfisstjóra og kerfissamþættara sem vinna með Check Point vörur. Hljómsveit, sjálfvirkni, SIEM endurgjöf... það er allt mögulegt núna.
PS Fleiri greinar um
PSS Fyrir tæknilegar spurningar sem tengjast uppsetningu Check Point geturðu
Aðeins skráðir notendur geta tekið þátt í könnuninni.
Ætlarðu að nota API?
-
70,6%Já12
-
23,5%No4
-
5,9%Notar nú þegar 1
17 notendur greiddu atkvæði. 3 notendur sátu hjá.
Heimild: www.habr.com