Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Jiena ċert li kull min qatt ħadem miegħu Iċċekkja Punt, kien hemm ilment dwar impossibbiltà li teditja l-konfigurazzjoni mil-linja tal-kmand. Dan huwa speċjalment stramba għal dawk li qabel ħadmu ma 'Cisco ASA, fejn assolutament kollox jista' jiġi kkonfigurat fis-CLI. Bi Check Point huwa l-maqlub - is-settings tas-sigurtà kollha saru esklussivament mill-interface grafika. Madankollu, xi affarijiet huma kompletament inkonvenjenti li jagħmlu permezz tal-GUI (anke waħda konvenjenti daqs Check Point's). Pereżempju, il-kompitu li żżid 100 host jew netwerk ġdid jinbidel fi proċedura twila u tedjanti. Għal kull oġġett ser ikollok tikklikkja l-maws diversi drabi u daħħal l-indirizz IP. L-istess jgħodd għall-ħolqien ta' grupp ta' siti jew firem IPS ta' abilitazzjoni/diżattivazzjoni tal-massa. F'dan il-każ, hemm probabbiltà għolja li jsir żball.

"Miraklu" ġara relattivament reċentement. Bir-rilaxx tal-verżjoni l-ġdida Gaia R80 tħabbret l-opportunità Użu tal-API, li tiftaħ opportunitajiet wiesgħa għall-awtomatizzazzjoni tas-settings, l-amministrazzjoni, il-monitoraġġ, eċċ. Issa tista':

  • toħloq oġġetti;
  • żid jew editja listi ta' aċċess;
  • jawtorizzaw/jiddiżattivaw xfafar;
  • kkonfigurat interfaces tan-netwerk;
  • jinstallaw policies;
  • u ħafna aktar.

Biex inkun onest, ma nifhimx kif din l-aħbar għaddiet minn Habr. F'dan l-artikolu ser niddeskrivu fil-qosor kif tuża l-API u nipprovdu diversi eżempji prattiċi. Issettjar ta' CheckPoint bl-użu ta' skripts.

Nixtieq nagħmel riserva minnufih li l-API tintuża biss għas-server tal-Ġestjoni. Dawk. Għadu impossibbli li timmaniġġja l-gateways mingħajr server ta' Ġestjoni.

Min jista' juża din l-API fil-prinċipju?

  1. Amministraturi tas-sistema li jridu jissimplifikaw jew awtomatizzati kompiti ta' rutina ta' konfigurazzjoni ta' Check Point;
  2. Kumpaniji li jridu jintegraw Check Point ma’ soluzzjonijiet oħra (sistemi ta’ virtwalizzazzjoni, sistemi ta’ biljetti, sistemi ta’ ġestjoni tal-konfigurazzjoni, eċċ.);
  3. Integraturi tas-sistema li jridu jistandardizzaw is-settings jew joħolqu prodotti addizzjonali relatati ma' Check Point.

Skema tipika

Allura, ejja nimmaġinaw skema tipika bi Check Point:

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Bħas-soltu għandna gateway (SG), server ta' ġestjoni (SMS) u l-admin console (SmartConsole). F'dan il-każ, il-proċess tas-soltu tal-konfigurazzjoni tal-gateway jidher bħal dan:

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Dawk. L-ewwel trid taħdem fuq il-kompjuter tal-amministratur SmartConsole, li biha nikkonnettjaw mas-server tal-Ġestjoni (SMS). Is-settings tas-sigurtà jsiru fuq l-SMS, u mbagħad jiġu applikati biss (installa politika) to gateway (SG).

Meta jintuża l- Ġestjoni API, Bażikament nistgħu naqbżu l-ewwel punt (tnedija SmartConsole) u nużaw Kmandi tal-API direttament lis-server tal-Ġestjoni (SMS).

Modi kif tuża l-API

Hemm erba' modi ewlenin kif teditja l-konfigurazzjoni billi tuża l-API:

1) Bl-użu tal-utilità mgmt_cli

Eżempju - # mgmt_cli żid l-isem tal-host host1 indirizz ip 192.168.2.100
Dan il-kmand jitmexxa mil-linja ta' kmand ta' Management Server (SMS). Naħseb li s-sintassi tal-kmand hija ċara - host1 hija maħluqa bl-indirizz 192.168.2.100.

2) Daħħal il-kmandi tal-API permezz tal-clish (f'mod espert)

Bażikament, kull ma trid tagħmel hu li tidħol fil-linja tal-kmand (login mgmt) taħt il-kont li jintuża meta tikkonnettja permezz ta' SmartConsole (jew kont tal-għeruq). Imbagħad tista 'tidħol Kmandi tal-API (f'dan il-każ m'hemmx bżonn li tuża l-utilità qabel kull kmand mgmt_cli). Tista 'toħloq sħiħ skripts BASH. Eżempju ta' skript li l-host joħloq:

skript 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

Jekk inti interessat, tista 'tara l-video korrispondenti:

3) Via SmartConsole billi tiftaħ it-tieqa CLI

Kull ma trid tagħmel hu li tiftaħ it-tieqa CLI dritta minn SmartConsole, kif muri fl-istampa hawn taħt.

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

F'din it-tieqa, tista' immedjatament tibda ddaħħal il-kmandi tal-API.

4) Servizzi tal-Web. Uża talba HTTPS Post (REST API)

Fl-opinjoni tagħna, dan huwa wieħed mill-aktar metodi promettenti, għaliex jippermettilek li "tibni" applikazzjonijiet sħaħ ibbażati fuq ġestjoni ta' servers ta' ġestjoni (jiddispjacini għat-tawtoloġija). Hawn taħt se nħarsu lejn dan il-metodu fi ftit aktar dettall.

Biex tqassar:

  1. API + cli aktar adattat għal nies li huma użati għal Cisco;
  2. API + qoxra għall-applikazzjoni ta' skripts u t-twettiq ta' kompiti ta' rutina;
  3. SERĦAN API għall-awtomazzjoni.

Jippermettu l-API

B'mod awtomatiku, l-API hija attivata fuq servers ta 'ġestjoni b'aktar minn 4GB ta' RAM u konfigurazzjonijiet awtonomi b'aktar minn 8GB ta 'RAM. Tista 'tiċċekkja l-istatus billi tuża l-kmand: status tal-api

Jekk jirriżulta li l-api hija diżattivata, allura huwa pjuttost faċli li tkun attivata permezz ta 'SmartConsole: Immaniġġja & Settings > Xfafar > Ġestjoni API > Settings Avvanzati

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Imbagħad ippubblika (Publish) tibdel u mexxi l-kmand restart api.

Talbiet tal-web + Python

Biex tesegwixxi kmandi tal-API, tista 'tuża talbiet tal-Web bl-użu Python u libreriji jitlob, JSON. B'mod ġenerali, l-istruttura ta' talba web tikkonsisti fi tliet partijiet:

1) Indirizz

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


2) Intestaturi HTTP

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


3) Itlob it-tagħbija

Test fil-format JSON li fih il-parametri differenti

Eżempju biex issejjaħ diversi kmandi:


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

Hawn huma ftit ħidmiet tipiċi li ħafna drabi tiltaqa' magħhom meta tamministra Check Point.

1) Eżempju ta' awtorizzazzjoni u funzjonijiet ta' logout:

Iskript


    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) Ixgħel ix-xfafar u twaqqaf in-netwerk:

Iskript


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) Nibdlu r-regoli tal-firewall:

Iskript


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) Żieda ta 'saff ta' Applikazzjoni:

Iskript


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) Ippubblika u ssettja l-politika, iċċekkja l-eżekuzzjoni tal-kmand (id-kompitu):

Iskript


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) Żid l-ospitant:

Iskript


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) Żid qasam ta' Prevenzjoni ta' Theddida:

Iskript


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) Ara l-lista tas-sessjonijiet

Iskript


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) Oħloq profil ġdid:

Iskript


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) Ibdel l-azzjoni għall-firma IPS:

Iskript


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) Żid is-servizz tiegħek:

Iskript


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) Żid kategorija, sit jew grupp:

Iskript


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

Barra minn hekk, bl-għajnuna WebAPI tista 'żżid u tneħħi netwerks, hosts, rwoli ta' aċċess, eċċ. Xfafar jistgħu jiġu personalizzati Antivirus, Antibot, IPS, VPN. Huwa saħansitra possibbli li jiġu installati liċenzji bl-użu tal-kmand run-script. Il-kmandi kollha tal-API Check Point jistgħu jinstabu hawn hawn.

Check Point API + Puttinier

Ukoll konvenjenti għall-użu Check Point Web API flimkien ma' Postier. Postman għandu verżjonijiet tad-desktop għall-Windows, Linux u MacOS. Barra minn hekk, hemm plugin għal Google Chrome. Dan huwa dak li se nużaw. L-ewwel trid issib Postman fil-Google Chrome Store u tinstalla:

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Billi tuża din l-utilità, inkunu nistgħu niġġeneraw talbiet tal-Web lill-API Check Point. Sabiex ma tiftakarx il-kmandi kollha tal-API, huwa possibbli li timporta l-hekk imsejħa kollezzjonijiet (mudelli), li diġà fihom il-kmandi kollha meħtieġa:

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Hawnhekk issib ġbir għall- R80.10. Wara l-importazzjoni, il-mudelli tal-kmand tal-API se jsiru disponibbli għalina:

Check Point R80.10 API. Ġestjoni permezz ta 'CLI, skripts u aktar

Fl-opinjoni tiegħi, dan huwa konvenjenti ħafna. Tista 'malajr tibda tiżviluppa applikazzjonijiet billi tuża l-API Check Point.

Check Point + Ansible

Nixtieq ukoll ninnota li hemm Ansible modulu għal CheckPoint API. Il-modulu jippermettilek timmaniġġja konfigurazzjonijiet, iżda mhuwiex daqshekk konvenjenti biex issolvi problemi eżotiċi. Il-kitba ta' skripts fi kwalunkwe lingwa ta' programmar tipprovdi soluzzjonijiet aktar flessibbli u konvenjenti.

Output

Dan huwa fejn probabbilment se nispiċċaw ir-reviżjoni qasira tagħna tal-API Check Point. Fl-opinjoni tiegħi, din il-karatteristika kienet tant mistennija u meħtieġa. L-emerġenza tal-API tiftaħ opportunitajiet wesgħin ħafna kemm għall-amministraturi tas-sistema kif ukoll għall-integraturi tas-sistema li jaħdmu mal-prodotti Check Point. Orkestrazzjoni, awtomazzjoni, feedback SIEM... kollox huwa possibbli issa.

PS Aktar artikli dwar Iċċekkja Punt bħal dejjem tista’ ssibha fuq il-blog tagħna Habr jew fuq il-blog fuq Online.

PSS Għal mistoqsijiet tekniċi relatati mat-twaqqif ta' Check Point, tista' hawn

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

Qed tippjana li tuża l-API?

  • 70,6%Iva12

  • 23,5%Nru4

  • 5,9%Diġà qed tuża1

Ivvutaw 17 utent. 3 utent astjenew.

Sors: www.habr.com

Żid kumment