Check Point R80.10 API. Halduse CLI, skriptid ja muud

Check Point R80.10 API. Halduse CLI, skriptid ja muud

Olen kindel, et igaĂŒhel, kes on kunagi töötanud Check Point, on tekkinud kaebus konfiguratsiooni muutmise vĂ”imatuse ĂŒle kĂ€surealt. See on eriti kummaline neile, kes on töötanud Cisco ASA-ga, kus kĂ”ik on tĂ€iesti seadistatav CLI kaudu. Check Point'is on kĂ”ik vastupidi — kĂ”ik turvaseaded tehti ainult graafilise liidese kaudu. Kuid mĂ”ned asjad ei ole GUI kaudu (isegi nii mugav kui Check Point) lihtsalt mugavad. NĂ€iteks 100 uue hosti vĂ”i vĂ”rgu lisamine muutub pika ja tĂŒĂŒtu protsessiks. Iga objekti jaoks peab mitu korda hiireklikkima ja IP-aadressi sisestama. Sama kehtib ka saidigruppide loomise vĂ”i IPS-signatuuride massilise lubamise/keeldumise kohta. Samal ajal on suur tĂ”enĂ€osus eksida.

Hiljuti toimus "ime". Uue versiooni ilmumisega Gaia R80 kanti sisse vĂ”imalus kasutada API-d, mis avab laiad vĂ”imalused seadistuste automatiseerimiseks, haldamiseks, jĂ€lgimiseks jne. NĂŒĂŒd on vĂ”imalik:

  • luua objekte;
  • lisada vĂ”i muuta pÀÀsuliste nimekirju;
  • lubada/keelata blade'e;
  • konfigureerida vĂ”rgu liideseid;
  • installida poliitikaid;
  • ja palju muud.

Austuselt, ma ei saa aru, kuidas see uudis mööda Habrast lipsas. KĂ€esolevas artiklis kĂ€sitleme lĂŒhidalt, kuidas API-d kasutada ja toome vĂ€lja mĂ”ned praktilised nĂ€ited CheckPointi seadistamisest skriptide abil.

Ma tahan kohe öelda, et API-d kasutatakse ainult Management serveri jaoks. See tÀhendab, et pÀÀsude haldamine ilma Management serverita ei ole endiselt vÔimalik.

Kellele vÔib see API tegelikult kasuks tulla?

  1. SĂŒsteemiadministraatorid, kes soovivad lihtsustada vĂ”i automatiseerida rutiinseid Check Pointi seadistamise ĂŒlesandeid;
  2. EttevĂ”tted, kes soovivad integreerida Check Pointi teiste lahendustega (virtualiseerimissĂŒsteemid, piletisĂŒsteemid, konfigureerimissĂŒsteemid jne);
  3. SĂŒsteemiintegraatorid, kes soovivad standardiseerida seadistusi vĂ”i luua tĂ€iendavaid tooteid, mis on seotud Check Pointiga.

TĂŒĂŒpiline skeem

Nii et kujutame ette tĂŒĂŒpilist skeemi Check Pointiga:

Check Point R80.10 API. Halduse CLI, skriptid ja muud

Kuidas tavaliselt on meil hĂŒbriid (SG), haldusseerver (SMS) ja administraatori konsool (SmartConsole). Tavaline protsess hĂŒbriidi seadistamiseks nĂ€eb vĂ€lja jĂ€rgmine:

Check Point R80.10 API. Halduse CLI, skriptid ja muud

See tĂ€hendab, et kĂ”igepealt tuleb administraatori arvutis kĂ€ivitada SmartConsole, millega me ĂŒhendume Management-serveriga (SMS). SMS-is kehtestatakse turvaseaded, ja seejĂ€rel rakendatakse (install policy) lĂŒĂŒsis (SG).

Kasutades Management API, pÔhimÔtteliselt saame esimese sammu (SmartConsole'i kÀivitamine) vahele jÀtta ja rakendada API-kÀsklusi otseselt Management-serverile (SMS).

API kasutamise viisid

Konfiguratsiooni muutmiseks API abil on neli peamist viisi:

1) Kasutades utiliidi mgmt_cli

NĂ€ide — # mgmt_cli add host name host1 ip-address 192.168.2.100
See kĂ€sk kĂ€ivitatakse Management-serveri (SMS) kĂ€surealt. Arvan, et kĂ€susĂŒntaks on selge — luuakse host1 aadressiga 192.168.2.100.

2) Sisestades API kĂ€ske lĂ€bi clish (eksperti reĆŸiimis)

Sisuliselt on kĂ”ik, mis on vajalik, sisse logida kĂ€sureale (mgmt login) kasutajakonto alla, mida kasutatakse SmartConsole'i kaudu ĂŒhendamiseks (vĂ”i root-konto). Siis saate sisestada API-kĂ€sklusi (selles juhul ei ole vaja iga kĂ€su ette kasutada utiliiti mgmt_cli). Saate luua tĂ€isfunktsionaalseid BASH-skripte. NĂ€ide skriptist, mis loob hosti:

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

Kui huvitab, siis saate vaadata vastavat videot:

MĂ€ngi videot

3) LĂ€bi SmartConsole, avades CLI akna

KÔik, mida on vaja teha, on kÀivitada aken cli-runtime'is ja kubectl'is otse SmartConsole, nagu on alloleval pildil nÀidatud.

Check Point R80.10 API. Halduse CLI, skriptid ja muud

Selles aknas saate kohe alustada API-kÀskluste sisestamist.

4) Veebiteenused. Kasutada HTTPS Post-pÀringut (REST API)

Meie arvates on see ĂŒks perspektiivsemaid viise, kuna see vĂ”imaldab „ehitada“ terveid rakendusi haldamise serveri (vabandust, et see nĂ€eb vĂ€lja nagu tautoloogia). Allpool kĂ€sitleme seda meetodit lĂ€hemalt.

KokkuvÔtteks:

  1. API + cli sobib rohkem inimestele, kes on harjunud Cisco'ga;
  2. API + shell skripti rakendamiseks ja rutiinsete ĂŒlesannete tĂ€itmiseks;
  3. REST API automaatika jaoks.

API lubamine

Suvandina on API vaikimisi lubatud juhtimisseerverites, kus RAM mahutavus on suurem kui 4 GB, ja iseseisvates konfiguratsioonides, kus RAM mahutavus on suurem kui 8 GB. Oleku kontrollimiseks saab kasutada kÀsku: api status

Kui selgub, et API on vĂ€lja lĂŒlitatud, saab selle SmartConsole'i kaudu lihtsalt sisse lĂŒlitada: Manage & Settings > Blades > Management API > TĂ€iendavad seaded

Check Point R80.10 API. Halduse CLI, skriptid ja muud

SeejÀrel avaldada (vÀlises teenuses) muudatused ja kÀivitada kÀsk api restart.

VeebipÀringud + Python

API-kĂ€skluste tĂ€itmiseks saab kasutada veebipĂ€ringuid koos Python ja raamatukogudega taotlused, json. Üldiselt koosneb veebipĂ€ringu struktuur kolmest osast:

1) Aadress

(https://:/web_api/) 


2) HTTP pÀised

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


3) PĂ€ringu koormus

JSON formaadis tekst, mis sisaldab erinevaid parameetreid

KÀskude erinevate funktsioonide nÀide:


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-aadress GAIA

Vaatame mĂ”ningaid tĂŒĂŒpilisi ĂŒlesandeid, millega sageli kohtatakse Check Pointi haldamisel.

1) Autoriseerimise ja vÀljaregistreerimise 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) Blade-de aktiveerimine 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) Rakenduse taseme 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) Politika avaldamine ja seadistamine, kÀsu tÀitmise kontroll (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) Uue hosti lisamine:

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) Threat Prevention vÀli lisamine:

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

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) Loo 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) Muuta IPS signatuuri 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) Lisa 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) Lisa kategooria, sait vÔi grupp:

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 saab abil Veebi API saate lisada ja eemaldada vÔrke, hoste, ligipÀÀsurole, jne. On vÔimalik seadistada blade-e Antiviirus, Antibot, IPS, VPN. On vÔimalik isegi litsentse installida kÀsu abil run-script. KÔiki Check Pointi API kÀske saab tutvuda siin.

Check Point API + Postman

Samuti on mugav kasutada Check Point Web API koos Postman. Postmanil on töölauaversioonid Windowsile, Linuxile ja MacOS-ile. Lisaks on olemas punkti lisand Google Chrome'ile. Seda me kasutame. Esiteks peate leidma Postmani Google Chrome'i poest ja paigaldama:

Check Point R80.10 API. Halduse CLI, skriptid ja muud

Selle utiliidi abil saame vormindada veebikÀske Check Point API-le. Et mitte kÔik API kÀsud meelde jÀtta, on vÔimalik importida nn kogusid (mallid), mis sisaldavad juba kÔiki vajalikke kÀske:

Check Point R80.10 API. Halduse CLI, skriptid ja muud

Siin leiate kogus jaoks R80.10. PÀrast importi on meil saadaval API kÀskude malli:

Check Point R80.10 API. Halduse CLI, skriptid ja muud

Minu arvates on see vÀga mugav. Saame kiiresti alustada rakenduste arendamist, kasutades Check Point API-t.

Check Point + Ansible

Samuti sooviksin mĂ€rkida, et eksisteerib Ansible moodul CheckPoint API jaoks. Moodul vĂ”imaldab hallata konfiguratsioone, kuid see pole nii mugav eksootiliste ĂŒlesannete lahendamiseks. Skriptide kirjutamine mistahes programmeerimiskeeles pakub paindlikumaid ja mugavamaid lahendusi.

KokkuvÔte

Selleks lĂ”petame meie vĂ€ikese ĂŒlevaate Check Point API-st. Minu arvates oli see funktsioon kauaoodatud ja vajalik. API kasutuselevĂ”tt avab vĂ€ga laiad vĂ”imalused nii sĂŒsteemiadministraatoritele kui ka sĂŒsteemiintegraatoritele, kes töötavad Check Pointi toodetega. Orkestreerimine, automatiseerimine, tagasiside SIEM-ile... kĂ”ik see on nĂŒĂŒd vĂ”imalik.

P.S. Rohkem artikleid Check Point leiate nagu alati meie blogist Habr vÔi blogist aadressil veebisaidil.

P.S.S. Tehnilisi kĂŒsimusi seoses Check Pointi seadistamisega saab esitada siin

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Kas plaanite kasutada API-d?

  • 70,6%Jah12

  • 23,5%Ei4

  • 5,9%Kasutame juba1

Olen hÀÀltega 17 kasutajat. 3 kasutajad on hoidunud.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster