Sigurado ako nga ang tanan nga nakatrabaho sukad
Usa ka "milagro" nahitabo bag-o lang. Uban sa pagpagawas sa bag-ong bersyon Gaia R80 gipahibalo ang kahigayonan Paggamit sa API, nga nagbukas sa daghang mga oportunidad alang sa pag-automate sa mga setting, pagdumala, pag-monitor, ug uban pa. Karon mahimo nimong:
- paghimo og mga butang;
- pagdugang o pag-edit sa mga lista sa pag-access;
- pag-enable/disable blades;
- i-configure ang mga interface sa network;
- instalar nga mga palisiya;
- ug daghan pa.
Sa tinuud, wala ko kasabot kung giunsa kini nga balita gipasa ni Habr. Niini nga artikulo atong lakbit nga ihulagway kung giunsa paggamit ang API ug maghatag daghang praktikal nga mga pananglitan. Mga setting sa CheckPoint gamit ang mga script.
Gusto ko nga maghimo dayon og reserbasyon nga ang API gigamit lamang alang sa Management server. Mga. Imposible gihapon ang pagdumala sa mga ganghaan nga wala’y server sa Pagdumala.
Kinsa ang makagamit niini nga API sa prinsipyo?
- Ang mga tagdumala sa sistema nga gusto nga pasimplehon o i-automate ang naandan nga mga buluhaton sa pagsumpo sa Check Point;
- Mga kompanya nga gustong i-integrate ang Check Point sa ubang mga solusyon (virtualization system, ticket system, configuration management systems, ug uban pa);
- Mga integrator sa sistema nga gusto nga i-standardize ang mga setting o maghimo dugang nga mga produkto nga may kalabotan sa Check Point.
Tipikal nga laraw
Busa, atong mahanduraw ang usa ka tipikal nga pamaagi sa Check Point:
Sama sa naandan naa mi gateway (SG), server sa pagdumala (SMS) ug admin console (SmartConsole). Sa kini nga kaso, ang naandan nga proseso sa pag-configure sa gateway ingon niini:
Mga. Una kinahanglan nimo nga modagan sa kompyuter sa tigdumala SmartConsole, diin kita magkonektar sa Management server (SMS). Ang mga setting sa seguridad gihimo sa SMS, ug unya gipadapat (instalar nga palisiya) ngadto sa ganghaan (SG).
Sa paggamit API sa pagdumala, mahimo natong laktawan ang unang punto (ilunsad ang SmartConsole) ug gamiton Mga sugo sa API direkta sa Management server (SMS).
Mga paagi sa paggamit sa API
Adunay upat ka nag-unang paagi sa pag-edit sa configuration gamit ang API:
1) Gamit ang mgmt_cli utility
Pananglitan - # mgmt_cli idugang ang host name host1 ip-address 192.168.2.100
Kini nga sugo gipadagan gikan sa Management Server (SMS) command line. Sa akong hunahuna ang syntax sa sugo klaro - ang host1 gihimo uban ang adres nga 192.168.2.100.
2) Pagsulod sa mga komand sa API pinaagi sa clish (sa mode nga eksperto)
Sa panguna, ang kinahanglan nimong buhaton mao ang pag-log in sa linya sa mando (mgmt login) ubos sa account nga gigamit sa pagkonektar pinaagi sa SmartConsole (o root account). Unya makasulod ka Mga sugo sa API (sa kini nga kaso dili kinahanglan nga gamiton ang utility sa wala pa ang matag mando mgmt_cli). Makahimo ka og bug-os Mga script sa BASH. Usa ka pananglitan sa usa ka script nga gihimo sa host:
Bash nga 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, mahimo nimong tan-awon ang katugbang nga video:
3) Pinaagi sa SmartConsole pinaagi sa pag-abli sa CLI window
Ang kinahanglan nimong buhaton mao ang pag-abli sa bintana CLI diretso gikan SmartConsole, ingon sa gipakita sa hulagway sa ubos.
Niini nga bintana, mahimo ka dayon magsugod sa pagsulod sa mga komand sa API.
4) Mga Serbisyo sa Web. Gamita ang HTTPS Post request (REST API)
Sa among opinyon, kini usa sa labing gisaad nga mga pamaagi, tungod kay nagtugot kanimo sa "pagtukod" sa tibuok nga mga aplikasyon base sa pagdumala sa pagdumala sa server (pasensya sa tautolohiya). Sa ubos atong tan-awon ang kini nga pamaagi sa usa ka gamay nga detalye.
Sa pag-summarize:
- API + cli mas angay alang sa mga tawo nga naanad sa Cisco;
- API + kabhang alang sa pagpadapat sa mga script ug paghimo sa naandan nga mga buluhaton;
- PAHULAY API alang sa automation.
Pag-enable sa API
Sa kasagaran, ang API gipalihok sa mga server sa pagdumala nga adunay labaw sa 4GB nga RAM ug mga standalone nga mga pag-configure nga adunay labaw sa 8GB nga RAM. Mahimo nimong susihon ang kahimtang gamit ang mando: kahimtang sa api
Kung nahibal-an nga ang api na-disable, nan dali ra nga mahimo kini pinaagi sa SmartConsole: Pagdumala ug Mga Setting > Blades > Management API > Advanced Settings
Unya i-publish (imantala) pagbag-o ug pagdagan ang mando api restart.
Mga hangyo sa web + Python
Aron ipatuman ang mga sugo sa API, mahimo nimong gamiton ang mga hangyo sa Web gamit Python ug mga librarya Mga hangyo, json. Sa kinatibuk-an, ang istruktura sa usa ka hangyo sa web naglangkob sa tulo ka bahin:
1) Address
(https://<managemenet server>:<port>/web_api/<command>)
2) Mga ulohan sa HTTP
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Pagpangayo payload
Teksto sa format nga JSON nga adunay lainlaing mga parameter
Pananglitan sa pagtawag sa lainlaing mga sugo:
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
Ania ang pipila ka mga tipikal nga buluhaton nga kanunay nimong masugatan kung nagdumala sa Check Point.
1) Pananglitan sa pagtugot ug pag-logout nga mga gimbuhaton:
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 ug pag-set up sa 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) Pag-usab sa mga lagda 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) Pagdugang Application layer:
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) Imantala ug itakda ang polisiya, susiha ang pagpatuman sa sugo (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) Idugang ang 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) Pagdugang usa ka natad sa Paglikay sa Panghulga:
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) Tan-awa ang listahan sa mga sesyon
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) Paghimo og bag-ong 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) Usba 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) Idugang ang imong 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) Pagdugang usa ka 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))
Dugang pa, uban sa tabang WebAPI mahimo nimong idugang ug tangtangon ang mga network, host, mga tahas sa pag-access, ug uban pa. Ang mga blades mahimong ipasibo Antivirus, Antibot, IPS, VPN. Posible pa nga mag-install og mga lisensya gamit ang command run-script. Tanan nga Check Point API nga mga sugo makita dinhi
Check Point API + Postman
Kombenyente usab nga gamiton Check Point Web API inubanan sa
Gamit kini nga utility, makahimo kami og mga hangyo sa Web sa Check Point API. Aron dili mahinumduman ang tanan nga mga sugo sa API, posible ang pag-import sa gitawag nga mga koleksyon (mga template), nga adunay na tanan nga kinahanglan nga mga mando:
Sa akong opinyon, kini sayon kaayo. Makasugod ka dayon sa paghimo og mga aplikasyon gamit ang Check Point API.
Check Point + Ansible
Gusto ko usab nga timan-an nga adunay Ansible
konklusyon
Dinhi tingali mahuman ang among mubo nga pagrepaso sa Check Point API. Sa akong opinyon, kini nga bahin dugay na nga gipaabut ug gikinahanglan. Ang pagtungha sa API nagbukas sa lapad kaayo nga mga oportunidad alang sa mga tigdumala sa sistema ug mga integrator sa sistema nga nagtrabaho sa mga produkto sa Check Point. Orchestration, automation, feedback sa SIEM... posible na ang tanan.
P.S. Dugang nga mga artikulo bahin sa
P.S.S. Para sa teknikal nga mga pangutana nga may kalabutan sa pag-set up sa Check Point, mahimo nimo
Ang mga rehistradong tiggamit lamang ang makaapil sa survey.
Nagplano ka ba nga gamiton ang API?
-
70,6%Oo12
-
23,5%Dili4
-
5,9%Gigamit na ang1
17 ka tiggamit ang miboto. 3 ka tiggamit ang nag- abstain.
Source: www.habr.com