Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

Əminəm ki, indiyə qədər işləmiş hər kəs Point yoxlayın, haqqında şikayət var idi komanda xəttindən konfiqurasiyanı redaktə etməyin mümkünsüzlüyü. Bu, əvvəllər Cisco ASA ilə işləyənlər üçün xüsusilə qəribədir, burada tamamilə hər şey CLI-də konfiqurasiya edilə bilər. Check Point ilə hər şey əksinədir - bütün təhlükəsizlik parametrləri yalnız qrafik interfeysdən həyata keçirilirdi. Bununla belə, bəzi şeyləri GUI vasitəsilə etmək tamamilə əlverişsizdir (hətta Check Point kimi rahatdır). Məsələn, 100 yeni host və ya şəbəkə əlavə etmək işi uzun və yorucu bir prosedura çevrilir. Hər bir obyekt üçün siçanı bir neçə dəfə vurmalı və IP ünvanını daxil etməli olacaqsınız. Eyni şey bir qrup sayt yaratmaq və ya IPS imzalarını aktivləşdirmək/deaktiv etmək üçün də gedir. Bu vəziyyətdə səhv etmək ehtimalı yüksəkdir.

“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?

  1. Rutin Check Point konfiqurasiya tapşırıqlarını sadələşdirmək və ya avtomatlaşdırmaq istəyən sistem administratorları;
  2. 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;
  3. 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:

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

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:

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

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.

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

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:

  1. API + cli Cisco-ya alışmış insanlar üçün daha uyğundur;
  2. API + qabıq skriptləri tətbiq etmək və gündəlik tapşırıqları yerinə yetirmək üçün;
  3. 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

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

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 burada.

Check Point API + Poçtalyon

İstifadəsi də rahatdır Check Point Web API ilə birlikdə Poçtalyon. Postman Windows, Linux və MacOS üçün masa üstü versiyalarına malikdir. Bundan əlavə, Google Chrome üçün bir plagin var. İstifadə edəcəyimiz budur. Əvvəlcə Google Chrome Mağazasında Postman tapmalı və quraşdırmalısınız:

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

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:

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

Burada tapa bilərsiniz kolleksiya uğrunda R80.10. İdxal etdikdən sonra API əmr şablonları bizim üçün əlçatan olacaq:

Check Point R80.10 API. CLI, skriptlər və s. vasitəsilə nəzarət

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 modul CheckPoint API üçün. Modul konfiqurasiyaları idarə etməyə imkan verir, lakin ekzotik problemlərin həlli üçün o qədər də əlverişli deyil. İstənilən proqramlaşdırma dilində skriptlərin yazılması daha çevik və rahat həllər təmin edir.

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ə Point yoxlayın həmişə olduğu kimi onu bloqumuzda tapa bilərsiniz Habr və ya bloqda Online.

PSS Check Point-in qurulması ilə bağlı texniki suallarınız üçün edə bilərsiniz burada

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

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

Добавить комментарий