Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Olen kindel, et kõik, kes on kunagi koos töötanud Check Point, esitati kaebus konfiguratsiooni redigeerimise võimatus käsurealt. See on eriti kummaline neile, kes on varem töötanud Cisco ASA-ga, kus CLI-s saab seadistada absoluutselt kõike. Check Pointiga on asi vastupidi – kõik turvaseaded tehti eranditult graafilisest liidesest. Mõningaid asju on aga GUI kaudu täiesti ebamugav teha (isegi nii mugavat kui Check Pointi oma). Näiteks 100 uue hosti või võrgu lisamine muutub pikaks ja tüütuks protseduuriks. Iga objekti jaoks peate mitu korda hiirt klõpsama ja sisestama IP-aadressi. Sama kehtib ka saitide rühma loomise või IPS-allkirjade massilise lubamise/keelamise kohta. Sel juhul on eksimise tõenäosus suur.

Suhteliselt hiljuti juhtus "ime". Uue versiooni ilmumisega Gaia R80 teatati võimalusest API kasutamine, mis avab laialdased võimalused seadistuste, halduse, jälgimise jms automatiseerimiseks. Nüüd sa saad:

  • luua objekte;
  • lisada või muuta juurdepääsuloendeid;
  • lubada/keelata labad;
  • konfigureerida võrguliideseid;
  • installipoliitikad;
  • jpm.

Ausalt öeldes ei saa ma aru, kuidas see uudis Habrilt möödus. Selles artiklis kirjeldame lühidalt API kasutamist ja anname mitmeid praktilisi näiteid. CheckPointi seaded skriptide abil.

Soovin kohe teha broneeringu, et API-d kasutatakse ainult haldusserveri jaoks. Need. Lüüside haldamine ilma haldusserverita on endiselt võimatu.

Kes saab seda API-t põhimõtteliselt kasutada?

  1. Süsteemiadministraatorid, kes soovivad lihtsustada või automatiseerida rutiinseid Check Pointi konfigureerimisülesandeid;
  2. Ettevõtted, kes soovivad Check Pointi integreerida teiste lahendustega (virtualiseerimissüsteemid, piletisüsteemid, konfiguratsioonihaldussüsteemid jne);
  3. Süsteemiintegraatorid, kes soovivad sätteid standardida või luua täiendavaid Check Pointiga seotud tooteid.

Tüüpiline skeem

Niisiis, kujutame ette tüüpilist skeemi Check Pointiga:

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Nagu tavaliselt, on meil värav (SG), haldusserver (SMS) ja administraatorikonsool (SmartConsole). Sel juhul näeb tavaline lüüsi konfiguratsiooniprotsess välja järgmine:

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Need. Kõigepealt peate käivitama administraatori arvutis SmartConsole, millega ühendame haldusserveriga (SMS). Turvaseaded tehakse SMS-is ja alles siis rakendatakse (installipoliitika) lüüsi (SG).

Kui kasutate Haldamise API, saame põhimõtteliselt esimese punkti vahele jätta (käivitada SmartConsole) ja kasutada API käsud otse haldusserverisse (SMS).

API kasutamise viisid

Konfiguratsiooni muutmiseks API abil on neli peamist võimalust:

1) Utiliidi mgmt_cli kasutamine

Näide - # mgmt_cli lisage hostinimi host1 ip-aadress 192.168.2.100
Seda käsku käivitatakse haldusserveri (SMS) käsurealt. Arvan, et käsu süntaks on selge – host1 luuakse aadressiga 192.168.2.100.

2) Sisestage API-käsud clishi kaudu (eksperdirežiimis)

Põhimõtteliselt pole vaja teha muud, kui sisse logida käsureale (mgmt sisselogimine) selle konto all, mida kasutatakse SmartConsole'i ​​(või juurkonto) kaudu ühenduse loomisel. Siis saate siseneda API käsud (sel juhul pole utiliiti vaja enne iga käsku kasutada mgmt_cli). Saate luua täisväärtusliku BASH-skriptid. Näide skriptist, mille host loob:

bash skript

#!/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

Huvi korral saate vaadata vastavat videot:

3) SmartConsole'i ​​kaudu, avades CLI akna

Kõik, mida pead tegema, on avada aken CLI otse SmartConsole, nagu on näidatud alloleval pildil.

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Selles aknas saate kohe alustada API käskude sisestamist.

4) Veebiteenused. Kasutage HTTPS-i postitustaotlust (REST API)

Meie arvates on see üks paljutõotavamaid meetodeid, sest võimaldab teil "ehitada" terveid rakendusi haldusserveri haldus (vabandan tautoloogia pärast). Allpool vaatleme seda meetodit veidi üksikasjalikumalt.

Kokku võtma:

  1. API + Cli sobib paremini inimestele, kes on Ciscoga harjunud;
  2. API + kest skriptide rakendamiseks ja rutiinsete ülesannete täitmiseks;
  3. REST API automatiseerimiseks.

API lubamine

Vaikimisi on API lubatud haldusserverites, millel on rohkem kui 4 GB muutmälu, ja eraldiseisvates konfiguratsioonides, kus on rohkem kui 8 GB muutmälu. Olekut saate kontrollida käsuga: api olek

Kui selgub, et api on keelatud, on selle lubamine SmartConsole'i ​​kaudu üsna lihtne: Haldamine ja sätted > Blades > Haldamise API > Täpsemad sätted

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Seejärel avaldage (Avalda) muudab ja käivitage käsk api taaskäivitamine.

Veebipäringud + Python

API käskude täitmiseks saate kasutada veebipäringuid kasutades Python ja raamatukogud Taotlusi, Json. Üldiselt koosneb veebipäringu struktuur kolmest osast:

1) Aadress

(https://<managemenet server>:<port>/web_api/<command>) 


2) HTTP päised

content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>


3) Taotle kasulikku koormust

JSON-vormingus tekst, mis sisaldab erinevaid parameetreid

Näide erinevate käskude kutsumiseks:


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

Siin on mõned tüüpilised toimingud, millega Check Pointi haldamisel kõige sagedamini kokku puutute.

1) Autoriseerimise ja väljalogimise funktsioonide näide:

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) Terade sisselülitamine ja võrgu seadistamine:

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) Tulemüüri reeglite muutmine:

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) Rakenduskihi lisamine:

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) Avaldage ja määrake poliitika, kontrollige käsu täitmist (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) Lisa host:

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) Lisage ohuennetuse väli:

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) Vaadake seansside loendit

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) Looge uus profiil:

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) Muutke IPS-allkirja toimingut:

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) Lisage oma teenus:

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) Lisage kategooria, sait või rühm:

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

Lisaks abiga Veebi API saate lisada ja eemaldada võrke, hoste, juurdepääsurolle jne. Terasid saab kohandada Viirusetõrje, Antibot, IPS, VPN. Litsentse on võimalik isegi käsu abil installida run-script. Kõik Check Point API käsud leiate siit siin.

Check Point API + Postimees

Samuti mugav kasutada Check Point Web API seoses Kirjakandja. Postmanil on Windowsi, Linuxi ja MacOS-i jaoks töölauaversioonid. Lisaks on Google Chrome'i pistikprogramm. Seda me kasutamegi. Kõigepealt peate Google Chrome'i poest leidma Postmani ja installima:

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Selle utiliidi abil saame genereerida veebipäringuid Check Point API-le. Et mitte kõiki API käske meelde jätta, on võimalik importida nn kogusid (malle), mis juba sisaldavad kõiki vajalikke käske:

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

see on leiad kogumine eest R80.10. Pärast importimist muutuvad meile kättesaadavaks API käsumallid:

Check Point R80.10 API. Haldamine CLI, skriptide ja muu kaudu

Minu arvates on see väga mugav. Saate kiiresti alustada rakenduste arendamist Check Point API abil.

Check Point + Ansible

Tahaksin ka märkida, et on olemas Võimalik moodul CheckPointi API jaoks. Moodul võimaldab konfiguratsioone hallata, kuid eksootiliste probleemide lahendamiseks pole see nii mugav. Skriptide kirjutamine mis tahes programmeerimiskeeles pakub paindlikumaid ja mugavamaid lahendusi.

Väljund

Siin me tõenäoliselt lõpetame oma lühikese ülevaate Check Point API kohta. Minu arvates oli see funktsioon väga kaua oodatud ja vajalik. API tekkimine avab väga laialdased võimalused nii süsteemiadministraatoritele kui ka süsteemiintegraatoritele, kes töötavad Check Pointi toodetega. Orkestreerimine, automatiseerimine, SIEM-i tagasiside... see kõik on nüüd võimalik.

PS Rohkem artikleid teemal Check Point nagu alati, leiate selle meie blogist Habr või blogis aadressil veebisait.

PSS Check Pointi seadistamisega seotud tehniliste küsimuste korral saate seda teha siin

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas kavatsete API-d kasutada?

  • 70,6%jah 12

  • 23,5%Ei 4

  • 5,9%Kasutan juba 1

17 kasutajat hääletas. 3 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar