Sigurado ako na lahat ng nakatrabaho
Isang "himala" ang nangyari kamakailan. Sa paglabas ng bagong bersyon Gaia R80 ang pagkakataon ay inihayag Paggamit ng API, na nagbubukas ng malawak na pagkakataon para sa pag-automate ng mga setting, pangangasiwa, pagsubaybay, atbp. Ngayon ay maaari ka nang:
- lumikha ng mga bagay;
- magdagdag o mag-edit ng mga listahan ng access;
- paganahin / huwag paganahin ang mga blades;
- i-configure ang mga interface ng network;
- mga patakaran sa pag-install;
- at marami pang iba.
Sa totoo lang, hindi ko maintindihan kung paano ipinasa ni Habr ang balitang ito. Sa artikulong ito, maikling ilalarawan namin kung paano gamitin ang API at magbigay ng ilang praktikal na halimbawa. Mga setting ng CheckPoint gamit ang mga script.
Gusto kong magpareserba kaagad na ang API ay ginagamit lamang para sa server ng Pamamahala. Yung. Imposible pa ring pamahalaan ang mga gateway nang walang server ng Pamamahala.
Sino ang maaaring gumamit ng API na ito sa prinsipyo?
- Mga administrator ng system na gustong pasimplehin o i-automate ang mga nakagawiang gawain sa pagsasaayos ng Check Point;
- Mga kumpanyang gustong isama ang Check Point sa iba pang mga solusyon (virtualization system, ticket system, configuration management system, atbp.);
- Mga system integrator na gustong i-standardize ang mga setting o gumawa ng mga karagdagang produkto na nauugnay sa Check Point.
Karaniwang pamamaraan
Kaya, isipin natin ang isang karaniwang pamamaraan na may Check Point:
Gaya ng dati, mayroon kaming gateway (SG), server ng pamamahala (SMS) at admin console (SmartConsole). Sa kasong ito, ang karaniwang proseso ng pagsasaayos ng gateway ay ganito:
Yung. Una kailangan mong tumakbo sa computer ng administrator SmartConsole, kung saan kumokonekta kami sa server ng Pamamahala (SMS). Ang mga setting ng seguridad ay ginawa sa SMS, at pagkatapos lamang ilapat (patakaran sa pag-install) sa gateway (SG).
Kapag ginagamit ang Management API, maaari nating laktawan ang unang punto (ilunsad ang SmartConsole) at gamitin Mga utos ng API direkta sa Management server (SMS).
Mga paraan ng paggamit ng API
Mayroong apat na pangunahing paraan upang i-edit ang configuration gamit ang API:
1) Gamit ang mgmt_cli utility
Halimbawa - # mgmt_cli magdagdag ng host name host1 ip-address 192.168.2.100
Ang command na ito ay pinapatakbo mula sa Management Server (SMS) command line. Sa tingin ko ang syntax ng command ay malinaw - ang host1 ay nilikha gamit ang address na 192.168.2.100.
2) Ipasok ang mga utos ng API sa pamamagitan ng clish (sa expert mode)
Karaniwan, ang kailangan mo lang gawin ay mag-log in sa command line (mgmt login) sa ilalim ng account na ginagamit kapag kumokonekta sa pamamagitan ng SmartConsole (o root account). Pagkatapos ay maaari kang pumasok Mga utos ng API (sa kasong ito ay hindi na kailangang gamitin ang utility bago ang bawat command mgmt_cli). Maaari kang lumikha ng ganap Mga script ng BASH. Isang halimbawa ng script na ginawa ng host:
Bash script
#!/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
Kung interesado ka, maaari mong panoorin ang kaukulang video:
3) Sa pamamagitan ng SmartConsole sa pamamagitan ng pagbubukas ng CLI window
Ang kailangan mo lang gawin ay buksan ang bintana CLI diretso mula sa SmartConsole, tulad ng ipinapakita sa larawan sa ibaba.
Sa window na ito, maaari mong simulan kaagad ang pagpasok ng mga API command.
4) Mga Serbisyo sa Web. Gamitin ang HTTPS Post request (REST API)
Sa aming opinyon, ito ay isa sa mga pinaka-promising na pamamaraan, dahil nagbibigay-daan sa iyo na "bumuo" ng buong mga application batay sa pamamahala ng pamamahala ng server (paumanhin para sa tautolohiya). Sa ibaba ay titingnan natin ang pamamaraang ito nang mas detalyado.
Upang ibuod:
- API + cli mas angkop para sa mga taong sanay sa Cisco;
- API + shell para sa paglalapat ng mga script at pagsasagawa ng mga nakagawiang gawain;
- REST API para sa automation.
Paganahin ang API
Bilang default, pinagana ang API sa mga server ng pamamahala na may higit sa 4GB ng RAM at mga standalone na configuration na may higit sa 8GB ng RAM. Maaari mong suriin ang katayuan gamit ang command: katayuan ng api
Kung ito ay lumabas na ang api ay hindi pinagana, kung gayon ito ay medyo madali upang paganahin ito sa pamamagitan ng SmartConsole: Pamahalaan at Mga Setting > Blades > Management API > Mga Advanced na Setting
Pagkatapos ay i-publish (Maglathala) pagbabago at patakbuhin ang utos i-restart ang api.
Mga kahilingan sa web + Python
Upang maisagawa ang mga utos ng API, maaari mong gamitin ang mga kahilingan sa Web gamit ang Sawa at mga aklatan kahilingan, json. Sa pangkalahatan, ang istraktura ng isang kahilingan sa web ay binubuo ng tatlong bahagi:
1) Address
(https://<managemenet server>:<port>/web_api/<command>)
2) Mga Header ng HTTP
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Humiling ng payload
Text sa JSON format na naglalaman ng iba't ibang parameter
Halimbawa para sa pagtawag sa iba't ibang mga utos:
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
Narito ang ilang tipikal na gawain na madalas mong nararanasan kapag nangangasiwa ng Check Point.
1) Halimbawa ng mga function ng awtorisasyon at pag-logout:
Script
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) Pag-on sa mga blades at pag-set up ng network:
Script
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) Pagbabago ng mga panuntunan sa firewall:
Script
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) Pagdaragdag ng layer ng Application:
Script
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) I-publish at itakda ang patakaran, suriin ang pagpapatupad ng command (task-id):
Script
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) Magdagdag ng host:
Script
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) Magdagdag ng field ng Pag-iwas sa Banta:
Script
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) Tingnan ang listahan ng mga session
Script
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) Lumikha ng bagong profile:
Script
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) Baguhin ang aksyon para sa IPS signature:
Script
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) Idagdag ang iyong serbisyo:
Script
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) Magdagdag ng kategorya, site o grupo:
Script
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))
Bilang karagdagan, sa tulong WebAPI maaari kang magdagdag at mag-alis ng mga network, host, mga tungkulin sa pag-access, atbp. Maaaring ipasadya ang mga blades Antivirus, Antibot, IPS, VPN. Posible ring mag-install ng mga lisensya gamit ang command run-script. Ang lahat ng mga utos ng Check Point API ay matatagpuan dito
Check Point API + Postman
Maginhawa ring gamitin Check Point Web API kasabay ng
Gamit ang utility na ito, makakabuo kami ng mga kahilingan sa Web sa Check Point API. Upang hindi matandaan ang lahat ng mga utos ng API, posibleng mag-import ng tinatawag na mga koleksyon (mga template), na naglalaman na ng lahat ng kinakailangang mga utos:
Sa palagay ko, ito ay napaka-maginhawa. Maaari mong mabilis na simulan ang pagbuo ng mga application gamit ang Check Point API.
Check Point + Ansible
Gusto ko ring tandaan na mayroon Ansible
Pagbubuhos
Dito marahil ay tatapusin natin ang ating maikling pagsusuri sa Check Point API. Sa aking opinyon, ang tampok na ito ay napakatagal na hinihintay at kinakailangan. Ang paglitaw ng API ay nagbubukas ng napakalawak na pagkakataon para sa parehong mga administrator ng system at mga integrator ng system na nagtatrabaho sa mga produkto ng Check Point. Orkestrasyon, automation, feedback ng SIEM... posible na ang lahat ngayon.
PS Higit pang mga artikulo tungkol sa
PSS Para sa mga teknikal na tanong na may kaugnayan sa pag-set up ng Check Point, maaari mong
Ang mga rehistradong user lamang ang maaaring lumahok sa survey.
Nagpaplano ka bang gamitin ang API?
-
70,6%Oo12
-
23,5%No4
-
5,9%Gumagamit na ng1
17 mga gumagamit ang bumoto. 3 user ang umiwas.
Pinagmulan: www.habr.com