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

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster