Əminəm ki, indiyə qədər işləmiş hər kəs
“Möcüzə” nisbətən yaxınlarda baş verdi. Yeni versiyanın buraxılması ilə Gaia R80 fürsət elan edildi API istifadəsi, bu, parametrlərin avtomatlaşdırılması, idarəetmə, monitorinq və s. üçün geniş imkanlar açır. İndi edə bilərsiniz:
- obyektlər yaratmaq;
- giriş siyahılarını əlavə etmək və ya redaktə etmək;
- bıçaqları işə salmaq/deaktiv etmək;
- şəbəkə interfeyslərini konfiqurasiya etmək;
- siyasətləri quraşdırmaq;
- və daha çox.
Düzünü desəm, bu xəbərin Habrdan necə keçdiyini başa düşə bilmirəm. Bu yazıda biz API-dən necə istifadə edəcəyimizi qısaca təsvir edəcəyik və bir neçə praktik nümunə təqdim edəcəyik. Skriptlərdən istifadə edərək CheckPoint parametrləri.
Dərhal qeyd etmək istərdim ki, API yalnız İdarəetmə serveri üçün istifadə olunur. Bunlar. İdarəetmə serveri olmadan şlüzləri idarə etmək hələ də mümkün deyil.
Bu API-dən prinsipcə kim istifadə edə bilər?
- Rutin Check Point konfiqurasiya tapşırıqlarını sadələşdirmək və ya avtomatlaşdırmaq istəyən sistem administratorları;
- Check Point-i digər həllər (virtuallaşdırma sistemləri, bilet sistemləri, konfiqurasiya idarəetmə sistemləri və s.) ilə inteqrasiya etmək istəyən şirkətlər;
- Parametrləri standartlaşdırmaq və ya Check Point ilə əlaqəli əlavə məhsullar yaratmaq istəyən sistem inteqratorları.
Tipik sxem
Beləliklə, Check Point ilə tipik bir sxem təsəvvür edək:
Həmişə olduğu kimi bizim bir qapımız var (SG), idarəetmə serveri (SMS) və admin konsolu (SmartConsole). Bu halda, adi şlüz konfiqurasiya prosesi belə görünür:
Bunlar. Əvvəlcə administratorun kompüterində işləməlisiniz SmartConsoleİdarəetmə serverinə qoşulduğumuz (SMS). Təhlükəsizlik parametrləri SMS-də edilir və yalnız bundan sonra tətbiq olunur (quraşdırma siyasəti) qapıya (SG).
Istifadə edərkən İdarəetmə API, biz əsasən birinci nöqtəni atlaya bilərik (SmartConsole-u işə salın) və istifadə edə bilərik API əmrləri birbaşa İdarəetmə serverinə (SMS).
API-dən istifadə yolları
API istifadə edərək konfiqurasiyanı redaktə etməyin dörd əsas yolu var:
1) mgmt_cli yardım proqramından istifadə etməklə
Misal - # mgmt_cli host adını əlavə et host1 ip-ünvanı 192.168.2.100
Bu əmr İdarəetmə Serveri (SMS) əmr satırından icra edilir. Məncə, komandanın sintaksisi aydındır - host1 192.168.2.100 ünvanı ilə yaradılmışdır.
2) API əmrlərini clish vasitəsilə daxil edin (ekspert rejimində)
Əsasən, sizə lazım olan tək şey əmr satırına daxil olmaqdır (mgmt daxil olun) SmartConsole (və ya kök hesabı) vasitəsilə qoşulduqda istifadə edilən hesabın altında. Sonra daxil ola bilərsiniz API əmrləri (bu halda hər bir əmrdən əvvəl yardım proqramından istifadə etməyə ehtiyac yoxdur mgmt_cli). Siz tam hüquqlu yarada bilərsiniz BASH skriptləri. Ev sahibinin yaratdığı skript nümunəsi:
Bash skripti
#!/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
Əgər maraqlanırsınızsa, müvafiq videoya baxa bilərsiniz:
3) CLI pəncərəsini açaraq SmartConsole vasitəsilə
Sizə lazım olan tək şey pəncərəni açmaqdır CLI düz-dən SmartConsole, aşağıdakı şəkildə göstərildiyi kimi.
Bu pəncərədə siz dərhal API əmrlərini daxil etməyə başlaya bilərsiniz.
4) Veb Xidmətləri. HTTPS Post sorğusundan istifadə edin (REST API)
Fikrimizcə, bu, ən perspektivli üsullardan biridir, çünki əsasında bütün proqramları "yaratmağa" imkan verir idarəetmə serverinin idarə edilməsi (tavtologiyaya görə üzr istəyirəm). Aşağıda bu üsula bir az daha ətraflı baxacağıq.
Xülasə etmək üçün:
- API + cli Cisco-ya alışmış insanlar üçün daha uyğundur;
- API + qabıq skriptləri tətbiq etmək və gündəlik tapşırıqları yerinə yetirmək üçün;
- REST API avtomatlaşdırma üçün.
API-nin işə salınması
Varsayılan olaraq, API 4 GB-dan çox RAM və 8 GB-dan çox RAM ilə müstəqil konfiqurasiyaları olan idarəetmə serverlərində aktivləşdirilir. Vəziyyəti əmrdən istifadə edərək yoxlaya bilərsiniz: api statusu
API-nin söndürüldüyü ortaya çıxarsa, onu SmartConsole vasitəsilə aktivləşdirmək olduqca asandır: İdarə və Parametrlər > Bleydlər > İdarəetmə API > Qabaqcıl Parametrlər
Sonra dərc et (Dərc etmək) dəyişdirin və əmri işə salın api yenidən başladın.
Veb sorğuları + Python
API əmrlərini yerinə yetirmək üçün istifadə edərək Veb sorğularından istifadə edə bilərsiniz Python və kitabxanalar sorğu, json. Ümumiyyətlə, veb sorğunun strukturu üç hissədən ibarətdir:
1) Ünvan
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP başlıqları
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Faydalı yük tələb edin
Müxtəlif parametrləri ehtiva edən JSON formatında mətn
Müxtəlif əmrləri çağırmaq üçün nümunə:
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
Check Point-i idarə edərkən ən çox rastlaşdığınız bir neçə tipik tapşırıq var.
1) Avtorizasiya və çıxış funksiyalarının nümunəsi:
Skript
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) Bıçaqların yandırılması və şəbəkənin qurulması:
Skript
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) Firewall qaydalarının dəyişdirilməsi:
Skript
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) Tətbiq qatının əlavə edilməsi:
Skript
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) Siyasəti dərc edin və təyin edin, əmrin icrasını yoxlayın (task-id):
Skript
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) Host əlavə edin:
Skript
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) Təhlükənin qarşısının alınması sahəsi əlavə edin:
Skript
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) Sessiyaların siyahısına baxın
Skript
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) Yeni profil yaradın:
Skript
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) IPS imzası üçün hərəkəti dəyişdirin:
Skript
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) Xidmətinizi əlavə edin:
Skript
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) Kateqoriya, sayt və ya qrup əlavə edin:
Skript
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))
Bundan əlavə, köməyi ilə Veb API şəbəkələri, hostları, giriş rollarını və s. əlavə edib silə bilərsiniz. Bıçaqlar fərdiləşdirilə bilər Antivirus, Antibot, IPS, VPN. Hətta əmrdən istifadə edərək lisenziyaları quraşdırmaq da mümkündür run-skript. Bütün Check Point API əmrlərini burada tapa bilərsiniz
Check Point API + Poçtalyon
İstifadəsi də rahatdır Check Point Web API ilə birlikdə
Bu yardım proqramından istifadə edərək, Check Point API-yə Veb sorğuları yarada biləcəyik. Bütün API əmrlərini xatırlamamaq üçün artıq bütün lazımi əmrləri ehtiva edən sözdə kolleksiyaları (şablonları) idxal etmək mümkündür:
Məncə, bu, çox əlverişlidir. Check Point API-dən istifadə edərək tez bir zamanda proqramlar hazırlamağa başlaya bilərsiniz.
Check Point + Ansible
Onu da qeyd edim ki, var Yoxdur
Buraxılış
Yəqin ki, Check Point API-yə qısa baxışımızı burada bitirəcəyik. Məncə, bu xüsusiyyət çox gözlənilən və lazımlı idi. API-nin yaranması həm sistem administratorları, həm də Check Point məhsulları ilə işləyən sistem inteqratorları üçün çox geniş imkanlar açır. Orkestrləşdirmə, avtomatlaşdırma, SIEM rəyi... indi hər şey mümkündür.
PS Haqqında daha çox məqalə
PSS Check Point-in qurulması ilə bağlı texniki suallarınız üçün edə bilərsiniz
Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər.
API-dən istifadə etməyi planlaşdırırsınız?
-
70,6%Bəli 12
-
23,5%№4
-
5,9%Artıq istifadə olunur1
17 istifadəçi səs verib. 3 istifadəçi bitərəf qalıb.
Mənbə: www.habr.com