Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Olen varma, että jokainen, joka on koskaan työskennellyt Check Point, asiasta tehtiin valitus mahdottomuus muokata kokoonpanoa komentoriviltä. Tämä on erityisen outoa niille, jotka ovat aiemmin työskennelleet Cisco ASA:n kanssa, jossa kaikki voidaan määrittää CLI:ssä. Check Pointin kanssa asia on päinvastoin - kaikki suojausasetukset tehtiin yksinomaan graafisesta käyttöliittymästä. Jotkut asiat ovat kuitenkin täysin epämukavia tehdä graafisen käyttöliittymän kautta (jopa yhtä kätevä kuin Check Pointin). Esimerkiksi 100 uuden isännän tai verkon lisääminen muuttuu pitkäksi ja ikäväksi toimenpiteeksi. Jokaisen kohteen kohdalla sinun on napsautettava hiirtä useita kertoja ja syötettävä IP-osoite. Sama pätee sivustoryhmän luomiseen tai IPS-allekirjoitusten massakäyttöön/poistamiseen. Tässä tapauksessa on suuri todennäköisyys tehdä virhe.

"Ihme" tapahtui suhteellisen hiljattain. Uuden version julkaisun myötä Gaia R80 tilaisuudesta ilmoitettiin API käyttö, joka avaa laajat mahdollisuudet automatisoida asetuksia, hallintoa, valvontaa jne. Nyt voit:

  • luoda esineitä;
  • lisätä tai muokata pääsyluetteloita;
  • ota terät käyttöön/poista käytöstä;
  • määrittää verkkoliitännät;
  • asennuskäytännöt;
  • ja paljon muuta.

Ollakseni rehellinen, en ymmärrä, kuinka nämä uutiset välittivät Habrin. Tässä artikkelissa kuvataan lyhyesti API:n käyttöä ja annetaan useita käytännön esimerkkejä. CheckPoint-asetukset skriptien avulla.

Haluaisin tehdä varauksen heti, että API:a käytetään vain hallintapalvelimelle. Nuo. Yhdyskäytävien hallinta on edelleen mahdotonta ilman hallintapalvelinta.

Kuka voi periaatteessa käyttää tätä API:ta?

  1. Järjestelmänvalvojat, jotka haluavat yksinkertaistaa tai automatisoida rutiininomaisia ​​Check Point -määritystehtäviä;
  2. Yritykset, jotka haluavat integroida Check Pointin muihin ratkaisuihin (virtualisointijärjestelmät, lippujärjestelmät, konfiguroinnin hallintajärjestelmät jne.);
  3. Järjestelmäintegraattorit, jotka haluavat standardoida asetuksia tai luoda Check Pointiin liittyviä lisätuotteita.

Tyypillinen kaava

Joten, kuvitellaan tyypillinen järjestelmä Check Pointin kanssa:

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Kuten tavallista, meillä on portti (SG), hallintapalvelin (SMS) ja hallintakonsoli (SmartConsole). Tässä tapauksessa tavallinen yhdyskäytävän määritysprosessi näyttää tältä:

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Nuo. Ensin sinun on suoritettava järjestelmänvalvojan tietokoneella SmartConsole, jolla muodostamme yhteyden hallintapalvelimeen (SMS). Suojausasetukset tehdään tekstiviestissä ja otetaan käyttöön vasta sitten (asennuskäytäntö) yhdyskäytävään (SG).

Käytettäessä Management API, voimme periaatteessa ohittaa ensimmäisen kohdan (käynnistä SmartConsole) ja käyttää API-komennot suoraan hallintapalvelimelle (SMS).

API:n käyttötavat

On neljä päätapaa muokata määritystä API:n avulla:

1) mgmt_cli-apuohjelman käyttäminen

Esimerkki - # mgmt_cli lisää isäntänimi host1 ip-osoite 192.168.2.100
Tämä komento suoritetaan Management Server (SMS) -komentoriviltä. Mielestäni komennon syntaksi on selkeä - host1 luodaan osoitteella 192.168.2.100.

2) Anna API-komennot clishin kautta (asiantuntijatilassa)

Periaatteessa sinun tarvitsee vain kirjautua sisään komentoriville (mgmt kirjautuminen) sen tilin alla, jota käytetään muodostettaessa yhteyttä SmartConsolen (tai päätilin) ​​kautta. Sitten pääset sisään API-komennot (tässä tapauksessa apuohjelmaa ei tarvitse käyttää ennen jokaista komentoa mgmt_cli). Voit luoda täysimittaisen BASH-skriptit. Esimerkki komentosarjasta, jonka isäntä luo:

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

Jos olet kiinnostunut, voit katsoa vastaavan videon:

3) SmartConsolen kautta avaamalla CLI-ikkuna

Sinun tarvitsee vain avata ikkuna CLI suoraan alkaen SmartConsole, kuten alla olevassa kuvassa näkyy.

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Tässä ikkunassa voit aloittaa heti API-komentojen syöttämisen.

4) Verkkopalvelut. Käytä HTTPS Post -pyyntöä (REST API)

Mielestämme tämä on yksi lupaavimmista menetelmistä, koska voit "rakentaa" kokonaisia ​​sovelluksia perustuen hallintapalvelimen hallinta (anteeksi tautologia). Alla tarkastelemme tätä menetelmää hieman yksityiskohtaisemmin.

Yhteenvetona:

  1. API + cli sopii paremmin ihmisille, jotka ovat tottuneet Ciscoon;
  2. API + kuori skriptien soveltamiseen ja rutiinitehtävien suorittamiseen;
  3. REST API automaatiota varten.

Sovellusliittymän käyttöönotto

Oletusarvoisesti API on käytössä hallintapalvelimissa, joissa on yli 4 Gt RAM-muistia, ja erillisissä kokoonpanoissa, joissa on yli 8 Gt RAM-muistia. Voit tarkistaa tilan komennolla: api-tila

Jos käy ilmi, että api on poistettu käytöstä, se on melko helppoa ottaa käyttöön SmartConsolen kautta: Hallinta ja asetukset > Blades > Hallintasovellusliittymä > Lisäasetukset

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Julkaise sitten (julkaista) muutokset ja suorita komento api uudelleenkäynnistys.

Verkkopyynnöt + Python

API-komentojen suorittamiseen voit käyttää verkkopyyntöjä käyttämällä Python ja kirjastot pyynnöt, json. Yleensä verkkopyynnön rakenne koostuu kolmesta osasta:

1) Osoite

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


2) HTTP-otsikot

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


3) Pyydä hyötykuormaa

JSON-muotoinen teksti, joka sisältää eri parametrit

Esimerkki erilaisten komentojen kutsumisesta:


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

Tässä on muutamia tyypillisiä tehtäviä, joita kohtaat useimmiten Check Pointin hallinnassa.

1) Esimerkki valtuutus- ja uloskirjautumistoiminnoista:

Käsikirjoitus


    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) Terien käynnistäminen ja verkon määrittäminen:

Käsikirjoitus


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) Palomuurisääntöjen muuttaminen:

Käsikirjoitus


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) Sovelluskerroksen lisääminen:

Käsikirjoitus


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) Julkaise ja aseta käytäntö, tarkista komennon suoritus (task-id):

Käsikirjoitus


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) Lisää isäntä:

Käsikirjoitus


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) Lisää Uhkien ehkäisykenttä:

Käsikirjoitus


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) Näytä istuntojen luettelo

Käsikirjoitus


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) Luo uusi profiili:

Käsikirjoitus


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) Muuta IPS-allekirjoituksen toimintoa:

Käsikirjoitus


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) Lisää palvelusi:

Käsikirjoitus


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) Lisää luokka, sivusto tai ryhmä:

Käsikirjoitus


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

Lisäksi avustuksella Web-sovellusliittymä voit lisätä ja poistaa verkkoja, isäntiä, käyttörooleja jne. Terät voidaan räätälöidä Virustorjunta, Antibot, IPS, VPN. On jopa mahdollista asentaa lisenssejä komennolla run-script. Kaikki Check Point API -komennot löytyvät täältä täällä.

Check Point API + Postman

Myös kätevä käyttää Check Point Web API kanssa Postinkantaja. Postmanilla on työpöytäversiot Windowsille, Linuxille ja MacOS:lle. Lisäksi Google Chromelle on lisäosa. Tätä aiomme käyttää. Ensin sinun on löydettävä Postman Google Chrome Storesta ja asennettava:

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Tämän apuohjelman avulla voimme luoda Web-pyyntöjä Check Point API:lle. Jotta ei muistaisi kaikkia API-komentoja, on mahdollista tuoda niin sanottuja kokoelmia (malleja), jotka sisältävät jo kaikki tarvittavat komennot:

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Täällä löydät kokoelma varten R80.10. Tuonnin jälkeen API-komentomallit tulevat saatavillemme:

Check Point R80.10 API. Hallinta CLI:n, komentosarjojen ja muiden kautta

Mielestäni tämä on erittäin kätevää. Voit nopeasti aloittaa sovellusten kehittämisen Check Point API:n avulla.

Check Point + Ansible

Haluaisin myös huomauttaa, että on Ansible moduuli CheckPoint API:lle. Moduulin avulla voit hallita kokoonpanoja, mutta se ei ole niin kätevä eksoottisten ongelmien ratkaisemiseen. Skriptien kirjoittaminen millä tahansa ohjelmointikielellä tarjoaa joustavampia ja kätevämpiä ratkaisuja.

johtopäätös

Tähän saamme luultavasti päättää lyhyen Check Point API -katsauksen. Mielestäni tämä ominaisuus oli erittäin odotettu ja tarpeellinen. API:n ilmestyminen avaa erittäin laajat mahdollisuudet sekä järjestelmänvalvojille että järjestelmäintegraattoreille, jotka työskentelevät Check Pointin tuotteiden parissa. Orkestrointi, automaatio, SIEM-palaute... kaikki on nyt mahdollista.

PS Lisää artikkeleita aiheesta Check Point kuten aina, löydät sen blogistamme Habr tai blogissa osoitteessa Online.

PSS Check Pointin määrittämiseen liittyvissä teknisissä kysymyksissä voit täällä

Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.

Aiotteko käyttää API:ta?

  • 70,6%Kyllä 12

  • 23,5%Nro 4

  • 5,9%Käytössä jo 1

17 käyttäjää äänesti. 3 käyttäjää pidättyi äänestämästä.

Lähde: will.com

Lisää kommentti