Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Jam i sigurt qĂ« çdo kush qĂ« ka punuar ndonjĂ«herĂ« me Check Point, ka pasur njĂ« ankesĂ« lidhur me pamundĂ«sinĂ« e redaktimit tĂ« konfiguracionit nga komandat e linjĂ«s. Kjo Ă«shtĂ« veçanĂ«risht çuditshme pĂ«r ata qĂ« kanĂ« punuar mĂ« parĂ« me Cisco ASA, ku gjithçka mund tĂ« konfigurohet nĂ« CLI. Me Check Point Ă«shtĂ« krejt e kundĂ«rta — tĂ« gjitha konfigurimet e sigurisĂ« kryhen ekskluzivisht nga ndĂ«rfaqja grafike. MegjithatĂ«, disa gjĂ«ra janĂ« krejtĂ«sisht tĂ« padobishme pĂ«r t'u bĂ«rĂ« pĂ«rmes GUI (edhe aq komod sa Ă«shtĂ« ai i Check Point). PĂ«r shembull, detyra pĂ«r tĂ« shtuar 100 hosta ose rrjete tĂ« reja shndĂ«rrohet nĂ« njĂ« procedurĂ« tĂ« gjatĂ« dhe tĂ« mundimshme. PĂ«r çdo objekt do tĂ« duhet tĂ« klikoni disa herĂ« me miun dhe tĂ« shkruani adresĂ«n IP. E njĂ«jta gjĂ« vlen pĂ«r krijimin e grupeve tĂ« faqeve ose aktivizimin/fshirjen masive tĂ« nĂ«nshkrimeve IPS. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, ekziston njĂ« probabilitet i lartĂ« pĂ«r tĂ« bĂ«rĂ« gabime.

PĂ«r herĂ« tĂ« fundit ndodhi njĂ« “mrekulli”. Me daljen e versionit tĂ« ri Gaia R80 , u njoftua mundĂ«sia e pĂ«rdorimit tĂ« API, e cila hap mundĂ«si tĂ« gjera pĂ«r automatizimin e konfigurimeve, administrimin, monitorimin etj. Tani mund tĂ«:

  • krijoni objekte;
  • shtoni ose redaktoni listat e aksesit;
  • aktivizoni/çaktivizoni bletĂ«t;
  • konfiguroni ndĂ«rfaqet rrjetĂ«;
  • instaloni politikat;
  • dhe shumĂ« tĂ« tjera.

Nëse jam i sinqertë, nuk e kuptoj si kaloi kjo lajm pa u vënë re nga Habr. Në këtë artikull ne do të përshkruajmë në shkurt se si të përdorim API dhe do të japim disa shembuj praktikë të konfigurimeve të CheckPoint me ndihmën e skripteve.

Menjëherë do të doja të sqaroj, API përdoret vetëm për serverin e Menaxhimit. Pra, menaxhimi i portave pa serverin e Menaxhimit mbetet i pamundur.

Kujt i nevojitet ky API në përgjithësi?

  1. Administratoret e sistemeve, të cilët dëshirojnë të thjeshtojnë ose automatizojnë detyrat rutinore për konfigurimin e Check Point;
  2. Kompani që dëshirojnë të integrojnë Check Point me zgjidhje të tjera (sistemet e virtualizimit, sistemet e biletave, sistemet e menaxhimit të konfigurimeve etj.);
  3. Integruesit e sistemeve, të cilët dëshirojnë të standardizojnë konfigurimet ose të krijojnë produkte shtesë që lidhen me Check Point.

Skema tipike

Dhe kështu, le të paraqesim një skemë tipike me Check Point:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Si zakonisht, kemi një portë (SG), serverin e menaxhimit (SMS) dhe konsolën e administratorit (SmartConsole). Në të njëjtën kohë, procesi i zakonshëm i konfigurimit të portës duket si vijon:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Pra të filloni, duhet të nisni SmartConsoleme ndihmën e së cilës ne lidhemi me serverin e menaxhimit (SMS). Në SMS, konfigurohen parametrat e sigurisë dhe pastaj aplikohen (politika e instalimit) në portë (SG).

Kur përdoret Management API, në të vërtetë mund ta kalojmë pikën e parë (nisja e SmartConsole) dhe të aplikojmë komandat e API drejtpërdrejt në serverin e menaxhimit (SMS).

Mënyrat e përdorimit të API

Për të redaktuar konfigurimin me anë të API, ka katër mënyra kryesore:

1) Me ndihmën e utilitarit mgmt_cli

Shembull — # mgmt_cli add host name host1 ip-address 192.168.2.100
Kjo komandĂ« ekzekutohet nga linja e komandĂ«s sĂ« serverit tĂ« menaxhimit (SMS). Mendoj se sintaksa e komandĂ«s Ă«shtĂ« e qartĂ« — krijohet host1 me adresĂ«n 192.168.2.100.

2) Të hysh komandat e API përmes clish (në modin expert)

Në thelb, gjithçka që duhet të bëni është të identifikoheni në linjën e komandës (mgmt login) me llogarinë që përdoret për lidhjen përmes SmartConsole (ose llogarinë root). Pastaj, mund të hyni komandat e API (në këtë rast nuk është e nevojshme të përdorni para çdo komande utilitarin mgmt_cli). Mund të krijoni skript të plota BASH.Shembull skenari që krijon një host:

Skripti 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

Nëse jeni të interesuar, mund ta shihni videon përkatëse:

Luaj videon

3) Përmes SmartConsole, duke hapur dritaren CLI

Gjithçka që duhet të bëni është të aktivizoni dritaren CLI direkt nga SmartConsole, siç tregohet në imazhin më poshtë.

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Në këtë dritare, mund të filloni menjëherë të hyni komandat e API.

4) Shërbimet në Internet. Përdorni kërkesën HTTPS Post (REST API)

Sipas mendimit tonë, kjo është një nga mënyrat më premtuese, pasi lejon "ndërtimin" e aplikacioneve të plota për menaxhimin e serverit të menaxhimit (më falni për tautologjinë). Më poshtë do të shqyrtojmë këtë metodë pak më në detaje.

Nëse e përmbledhim:

  1. API + cli është më i përshtatshëm për ata që janë mësuar me Cisco;
  2. API + shell për përdorimin e skripteve dhe kryerjen e detyrave rutinore;
  3. REST API për automatizimin.

Aktivizimi i API

Në mënyrë të parazgjedhur, API është i aktivizuar në serverat e menaxhimit me një kapacitet RAM më të madh se 4GB dhe në konfigurimet autonome me RAM më të madhe se 8GB. Statusin mund ta kontrolloni me komandën: api status

Nëse rezulton se API është i çaktivizuar, mund ta aktivizoni lehtësisht përmes SmartConsole: Menaxho & Cilësimet > Blades > Management API > Cilësimet e Avancuara

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Pastaj publikoni (Publiko) ndryshimet dhe ekzekutoni komandën api restart.

Kërkesat në internet + Python

Për të ekzekutuar komandat e API mund të përdorni kërkesa në internet me ndihmën e Python dhe bibliotekave requests, json.Në formën e përgjithshme, struktura e kërkesës në internet përbëhet nga tri pjesë:

1) Adresa

(https://:/web_api/) 


2) HTTP Headers

content-Type: application/json
x-chkp-sid:


3) Request payload

Text in JSON format containing the different parameters

Shembuj për thirrjen e komandave të ndryshme:


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' -> Adresa IP GAIA

Do të japim disa detyra tipike me të cilat shpesh përballen administratoret e Check Point.

1) Shembuj të funksioneve për autorizim dhe logout:

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) Aktivizimi i blaydave dhe konfigurimi i rrjetit:

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) Ndryshimi i rregullave të firewall-it:

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) Shtimi i 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) Publikimi dhe instalimi i politikës, kontrolli i ekzekutimit të komandës (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) Shtimi i një hosti:

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) Shtimi i fushës Threat Prevention:

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) Shihni listën e seancave

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) Krijoni një profil të ri:

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) Ndryshoni veprimin për IPS sigaturën:

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) Shtoni shërbimin tuaj:

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) Shtoni kategori, sit ose grup:

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))

Për më tepër, me anë të Web API mund të shtoni dhe fshini rrjete, hoste, role qasje etj. Ka mundësinë e konfigurimit të blade-ve Antivirus, Antibot, IPS, VPN. Mund të bëhet edhe instalimi i licencave me anë të komandës run-script. Me të gjitha komandat e API të Check Point mund të njiheni këtu.

Check Point API + Postman

Gjithashtu është e përshtatshme të përdoret Check Point Web API në lidhje me PostmanPostman ka versionet desktop për Windows, Linux dhe MacOS. Përveç kësaj, ekziston një plugin për Google Chrome. Ne do ta përdorim këtë. Së pari, duhet të gjeni Postman në Google Chrome Store dhe ta instaloni:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Me këtë mjet do të jemi në gjendje të formojmë kërkesa Web për API Check Point. Për të mos e mbajtur mend të gjitha komandat e API, ka mundësinë të importoni të ashtuquajtura collection-a (shabllone), të cilat përmbajnë të gjitha komandat e nevojshme:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Këtu do të gjeni collection për R80.10. Pas importit, shabllonet e komandave API do të jenë të disponueshme për ne:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Sipas mendimit tim, kjo është shumë e përshtatshme. Mund të filloni mjaft shpejt zhvillimin e aplikacioneve duke përdorur API-në e Check Point.

Check Point + Ansible

Gjithashtu, doja të theksoja se ekziston Ansible moduli për API-në e CheckPoint. Moduli lejon menaxhimin e konfigurimeve, por nuk është aq i përshtatshëm për zgjidhje eksotike. Shkrimi i skripteve në çdo gjuhë programimi ofron zgjidhje më të mira dhe më fleksibile.

Përfundimi

Mendoj se këtu përfundojmë shqyrtimin tonë të vogël të API-së së Check Point. Sipas mendimit tim, kjo funksionalitet ishte shumë i pritur dhe i nevojshëm. Shfaqja e API-së hap mundësi të gjera për administratorët e sistemeve dhe integruesit e sistemeve që punojnë me produktet Check Point. Orkestrimi, automatizimi, përgjigjja për SIEM... tani gjithçka është e mundur.

P.S. Mund të gjeni më shumë artikuj mbi Check Point si gjithmonë në blogun tonë Habr ose në blogun në website.

P.S.S. Pyetje teknike lidhur me konfigurimin e Check Point mund të bëhen këtu

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, ju lutem.

A planifikoni të përdorni API?

  • 70,6%Po12

  • 23,5%Jo4

  • 5,9%Po e pĂ«rdor1

Have voted 17 users. 3 users abstained.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster