Ziur nago inoiz lan egin duten guztiekin
"Mirari" bat gertatu da duela gutxi. Bertsio berriaren kaleratzearekin batera Gaia R80 aukera iragarri zen API erabilera, ezarpenak, administrazioa, monitorizazioa eta abar automatizatzeko aukera zabalak zabaltzen dituena. Orain egin dezakezu:
- objektuak sortu;
- sarbide-zerrendak gehitu edo editatu;
- palak gaitu/desgaitu;
- sareko interfazeak konfiguratu;
- politikak instalatu;
- eta askoz gehiago.
Egiari zor, ez dut ulertzen nola pasa zen berri hau Habr-ek. Artikulu honetan APIa nola erabili laburki deskribatuko dugu eta hainbat adibide praktiko emango ditugu. CheckPoint ezarpenak scriptak erabiliz.
Erreserba bat egin nahiko nuke berehala APIa Kudeaketa zerbitzarirako soilik erabiltzen dela. Horiek. Oraindik ezinezkoa da atebideak kudeatzea Kudeaketa zerbitzaririk gabe.
Nork erabil dezake API hau printzipioz?
- Check Pointeko ohiko konfigurazio-zereginak erraztu edo automatizatu nahi dituzten sistema-administratzaileak;
- Check Point beste irtenbide batzuekin (birtualizazio sistemak, txartel-sistemak, konfigurazioa kudeatzeko sistemak, etab.) integratu nahi duten enpresak;
- Ezarpenak estandarizatu edo Check Point-ekin lotutako produktu gehigarriak sortu nahi dituzten sistema integratzaileak.
Eskema tipikoa
Beraz, imajina dezagun Check Point-ekin eskema tipiko bat:
Ohi bezala atari bat dugu (SG), kudeaketa zerbitzaria (SMS) eta administrazio kontsola (SmartConsole). Kasu honetan, ohiko atebidearen konfigurazio-prozesua honelakoa da:
Horiek. Lehenik eta behin administratzailearen ordenagailuan exekutatu behar duzu SmartConsole, zeinekin konektatzen gara Kudeaketa zerbitzariarekin (SMS). Segurtasun-ezarpenak SMSan egiten dira, eta orduan bakarrik aplikatzen dira (instalatu politika) atarira (SG).
Noiz erabiliz Kudeaketa APIa, funtsean, lehen puntua saltatu dezakegu (abiarazi SmartConsole) eta erabili API komandoak Zuzenean Kudeaketa zerbitzarira (SMS).
APIa erabiltzeko moduak
APIa erabiliz konfigurazioa editatzeko lau modu nagusi daude:
1) mgmt_cli utilitatea erabiliz
Adibidea - # mgmt_cli gehitu ostalariaren izena host1 ip-helbidea 192.168.2.100
Komando hau Management Server (SMS) komando-lerrotik exekutatzen da. Uste dut komandoaren sintaxia argia dela - host1 192.168.2.100 helbidearekin sortzen da.
2) Sartu API komandoak clish bidez (aditu moduan)
Funtsean, egin behar duzun guztia komando lerroan saioa hasi da (kudeatu saioa) SmartConsole (edo root kontua) bidez konektatzean erabiltzen den kontuaren azpian. Orduan sar zaitezke API komandoak (kasu honetan ez dago erabilgarritasuna komando bakoitzaren aurretik erabili beharrik mgmt_cli). Osorik sortu dezakezu BASH gidoiak. Ostalariak sortzen duen script baten adibidea:
bash gidoia
#!/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
Interesa baduzu, dagokion bideoa ikus dezakezu:
3) SmartConsole bidez CLI leihoa irekiz
Egin behar duzun guztia leihoa irekitzea da CLI zuzenean SmartConsole, beheko irudian ikusten den bezala.
Leiho honetan, berehala has zaitezke API komandoak sartzen.
4) Web Zerbitzuak. Erabili HTTPS Post eskaera (REST APIa)
Gure ustez, hau da metodorik itxaropentsuenetako bat, zeren oinarritutako aplikazio osoak "eraikitzeko" aukera ematen du kudeaketa zerbitzariaren kudeaketa (barkatu tautologiagatik). Jarraian metodo hau xehetasun apur bat gehiago aztertuko dugu.
Laburtzeko:
- API + cli Cisco-ra ohituta dauden pertsonentzat egokiagoa;
- API + shell gidoiak aplikatzeagatik eta ohiko zereginak egiteko;
- REST API automatizaziorako.
APIa gaitzea
Lehenespenez, APIa gaituta dago 4 GB RAM baino gehiago dituzten kudeaketa zerbitzarietan eta 8 GB RAM baino gehiago dituzten konfigurazio autonomoetan. Egoera egiaztatu dezakezu komandoa erabiliz: api egoera
APIa desgaituta dagoela ikusten bada, nahiko erraza da SmartConsole bidez gaitzea: Kudeatu eta ezarpenak > Blades > Kudeaketa APIa > Ezarpen aurreratuak
Gero argitaratu (Argitaratu) aldatzen du eta exekutatu komandoa api berrabiarazi.
Web eskaerak + Python
API komandoak exekutatzeko, web eskaerak erabil ditzakezu Python eta liburutegiak eskaerak, json. Oro har, web eskaera baten egiturak hiru zati ditu:
1) Helbidea
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP goiburuak
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Karga erabilgarria eskatzea
Testua JSON formatuan parametro desberdinak dituena
Hainbat komando deitzeko adibidea:
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
Hona hemen Check Point administratzean gehien topatzen dituzun zeregin tipiko batzuk.
1) Baimen eta saioa amaitzeko funtzioen adibidea:
Gidoia
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) Bladeak piztea eta sarea konfiguratzea:
Gidoia
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) Suebakiaren arauak aldatzea:
Gidoia
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) Aplikazio geruza gehitzea:
Gidoia
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) Argitaratu eta ezarri politika, egiaztatu komandoaren exekuzioa (zeregin-id):
Gidoia
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) Gehitu ostalaria:
Gidoia
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) Gehitu mehatxuen prebentzio eremu bat:
Gidoia
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) Ikusi saioen zerrenda
Gidoia
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) Sortu profil berri bat:
Gidoia
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) Aldatu IPS sinaduraren ekintza:
Gidoia
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) Gehitu zure zerbitzua:
Gidoia
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) Gehitu kategoria, gune edo talde bat:
Gidoia
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))
Horrez gain, laguntzarekin Web APIa sareak, ostalariak, sarbide-rolak eta abar gehitu eta kendu ditzakezu. Palak pertsonalizatu daitezke Antibirusa, Antibot, IPS, VPN. Komandoa erabiliz lizentziak instalatzea ere posible da exekutatu-gidoia. Check Point API komando guztiak hemen aurki daitezke
Check Point API + Postman
Erabiltzeko erosoa ere Check Point Web APIa ekin batera
Utilitate hau erabiliz, Web eskaerak sortu ahal izango ditugu Check Point APIra. API komando guztiak ez gogoratzeko, posible da bilduma (txantiloi) deiturikoak inportatzea, zeinak dagoeneko beharrezko komando guztiak dituzten:
Nire ustez, hau oso erosoa da. Azkar has zaitezke aplikazioak garatzen Check Point APIa erabiliz.
Check Point + Ansible
Badagoela ere adierazi nahiko nuke Ansible
Irteera
Hementxe amaituko dugu ziurrenik Check Point APIaren berrikuspen laburra. Nire ustez, ezaugarri hau oso itxaroten eta beharrezkoa zen. APIaren sorrerak aukera oso zabalak zabaltzen ditu Check Point produktuekin lan egiten duten sistema-administratzaileentzat eta sistema-integratzaileentzat. Orkestrazioa, automatizazioa, SIEM feedbacka... dena posible da orain.
P.S. Artikulu gehiago
P.S.S. Check Point konfiguratzearekin lotutako galdera teknikoetarako, egin dezakezu
Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan.
APIa erabiltzeko asmoa al duzu?
-
70,6%Bai12
-
23,5%4. zenbakia
-
5,9%Dagoeneko erabiltzen 1
17 erabiltzailek eman dute botoa. 3 erabiltzaile abstenitu ziren.
Iturria: www.habr.com