Kuring yakin yén saha waé anu kantos damel sareng
A "kaajaiban" lumangsung rélatif anyar. Jeung sékrési versi anyar Gaia R80 kasempetan diumumkeun pamakéan API, nu muka up kasempetan lega pikeun automating setelan, administrasi, monitoring, jsb. Ayeuna anjeun tiasa:
- nyieun objék;
- nambahkeun atawa ngédit daptar aksés;
- ngaktipkeun / nganonaktipkeun wilah;
- ngonpigurasikeun interfaces jaringan;
- kawijakan install;
- jeung leuwih.
Sajujurna, kuring teu ngarti kumaha warta ieu diliwatan ku Habr. Dina artikel ieu kami bakal ngajelaskeun sakeudeung kumaha ngagunakeun API tur nyadiakeun sababaraha conto praktis. Setélan CheckPoint ngagunakeun skrip.
Abdi hoyong ngadamel reservasi langsung yén API dianggo ngan pikeun server Manajemén. Jelema. Masih teu mungkin pikeun ngatur gateway tanpa server Manajemén.
Saha anu tiasa nganggo API ieu prinsipna?
- Administrator sistem anu hoyong nyederhanakeun atanapi ngajadikeun otomatis tugas konfigurasi Check Point rutin;
- Perusahaan anu hoyong ngahijikeun Check Point sareng solusi anu sanés (sistem virtualisasi, sistem tikét, sistem manajemén konfigurasi, jsb.);
- Integrasi sistem anu hoyong ngabakukeun setélan atanapi nyiptakeun produk anu aya hubunganana sareng Check Point.
Skéma has
Janten, hayu urang bayangkeun skéma has sareng Check Point:
Sakumaha biasa urang gaduh gateway (SG), server manajemén (SMS) jeung konsol admin (SmartConsole). Dina hal ieu, prosés konfigurasi gateway biasa sapertos kieu:
Jelema. Mimiti anjeun kedah ngajalankeun dina komputer administrator SmartConsole, dimana urang nyambung ka server Manajemén (SMS). Setelan kaamanan dijieun dina SMS, sarta ngan lajeng dilarapkeun (kawijakan install) ka gateway (SG).
Ngagunakeun API manajemén, urang dasarna bisa skip titik kahiji (peluncuran SmartConsole) jeung pamakéan paréntah API langsung ka server Manajemén (SMS).
Cara ngagunakeun API
Aya opat cara utama pikeun ngédit konfigurasi nganggo API:
1) Ngagunakeun utiliti mgmt_cli
conto - # mgmt_cli nambahkeun ngaran host host1 ip-alamat 192.168.2.100
Paréntah ieu dijalankeun tina garis paréntah Manajemén Server (SMS). Jigana sintaksis paréntah jelas - host1 dijieun kalawan alamat 192.168.2.100.
2) Lebetkeun paréntah API via clish (dina modeu ahli)
Dasarna, sadaya anu anjeun kedah laksanakeun nyaéta log in kana garis paréntah (login mgmt) handapeun akun nu dipaké nalika nyambungkeun via SmartConsole (atawa akun root). Teras anjeun tiasa lebet paréntah API (dina hal ieu teu kedah nganggo utiliti sateuacan unggal paréntah mgmt_cli). Anjeun tiasa nyieun full-fledged skrip BASH. Conto naskah anu didamel ku host:
Aksara Bash
#!/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
Upami anjeun resep, anjeun tiasa nonton pidéo anu cocog:
3) Via SmartConsole ku muka jandela CLI
Sadaya anu anjeun kedah laksanakeun nyaéta muka jandela CLI langsung ti SmartConsole, sakumaha ditémbongkeun dina gambar di handap ieu.
Dina jandela ieu, anjeun tiasa langsung ngamimitian nuliskeun paréntah API.
4) Layanan wéb. Anggo pamundut HTTPS Post (REST API)
Dina pamadegan urang, ieu téh salah sahiji metodeu paling ngajangjikeun, sabab ngidinan Anjeun pikeun "ngawangun" sakabéh aplikasi dumasar kana manajemén manajemén server (punten pikeun tautologi). Handap urang bakal kasampak di metoda ieu dina leuwih jéntré saeutik.
Pikeun nyimpulkeun:
- API + cli leuwih cocog pikeun jalma anu dipaké pikeun Cisco;
- API + cangkang pikeun nerapkeun naskah sareng ngalaksanakeun tugas rutin;
- sesa API pikeun automation.
Aktipkeun API
Sacara standar, API diaktipkeun dina server manajemén kalayan langkung ti 4GB RAM sareng konfigurasi mandiri sareng langkung ti 8GB RAM. Anjeun tiasa pariksa statusna nganggo paréntah: status api
Upami tétéla yén api ditumpurkeun, maka cukup gampang pikeun ngaktifkeunana via SmartConsole: Atur & Setélan> Wilah> API Manajemén> Setélan Lanjut
Lajeng nyebarkeun (nyebarkeun) robah sarta ngajalankeun paréntah api balikan deui.
Paménta wéb + Python
Pikeun ngaéksekusi paréntah API, anjeun tiasa nganggo pamundut wéb nganggo Python jeung perpustakaan requests, json. Sacara umum, struktur pamundut wéb diwangun ku tilu bagian:
1) Alamat
(https://<managemenet server>:<port>/web_api/<command>)
2) Lulugu HTTP
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Nyuhunkeun payload
Téks dina format JSON ngandung parameter béda
Conto pikeun nelepon sababaraha paréntah:
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
Ieu sababaraha pancén umum anu sering anjeun tepang nalika ngokolakeun Check Point.
1) Conto fungsi otorisasi sareng logout:
naskah
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) Ngahurungkeun wilah sareng nyetél jaringan:
naskah
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) Ngarobih aturan firewall:
naskah
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) Nambahkeun lapisan Aplikasi:
naskah
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) Nyebarkeun sareng nyetél kawijakan, pariksa palaksanaan paréntah (task-id):
naskah
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) Tambahkeun host:
naskah
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) Tambahkeun widang Pencegahan Ancaman:
naskah
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) Tingali daptar sési
naskah
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) Jieun profil anyar:
naskah
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) Robah tindakan pikeun tanda tangan IPS:
naskah
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) Tambahkeun jasa anjeun:
naskah
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) Tambahkeun kategori, situs atanapi grup:
naskah
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))
Sajaba ti éta, kalayan bantuan API Wéb anjeun tiasa nambihan sareng mupus jaringan, host, peran aksés, jsb. Agul bisa ngaropéa Antipirus, Antibot, IPS, VPN. Malah mungkin pikeun masang lisensi nganggo paréntah ngajalankeun-skrip. Sadaya paréntah API Check Point tiasa dipendakan di dieu
Pariksa Point API + Tukang pos
Ogé merenah ngagunakeun Pariksa Point Web API bareng jeung
Ngagunakeun utilitas ieu, urang bakal bisa ngahasilkeun requests Web ka Check Point API. Pikeun henteu émut sadaya paréntah API, anjeun tiasa ngimpor anu disebut kumpulan (témplat), anu parantos ngandung sadaya paréntah anu diperyogikeun:
Dina pamanggih kuring, ieu pisan merenah. Anjeun tiasa gancang ngamimitian ngembangkeun aplikasi nganggo Check Point API.
Pariksa Point + Ansible
Abdi ogé hoyong dicatet yén aya Ansible
kacindekan
Ieu dimana urang sigana bakal ngabéréskeun ulasan pondok ngeunaan Check Point API. Dina pamanggih kuring, fitur ieu pisan lila-tunggu sarta diperlukeun. Mecenghulna API ngabuka kasempetan anu lega pisan pikeun pangurus sistem sareng integrator sistem anu damel sareng produk Check Point. Orkestrasi, otomatisasi, eupan balik SIEM ... éta sadayana mungkin ayeuna.
PS More artikel ngeunaan
PSS Kanggo patarosan téknis anu aya hubunganana sareng nyetél Check Point, anjeun tiasa
Ngan pamaké nu kadaptar bisa ilubiung dina survey.
Naha anjeun badé nganggo API?
-
70,6%Leres12
-
23,5%No4
-
5,9%Geus ngagunakeun1
17 pamaké milih. 3 pamaké abstained.
sumber: www.habr.com