Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Biztos vagyok benne, hogy mindenkinek, aki valaha dolgozott a Check Point, voltak panaszai azzal kapcsolatban, hogy milyen lehetetlen a konfiguráció módosítása parancssorból. Ez különösen szokatlan azok számára, akik korábban Cisco ASA-val dolgoztak, ahol szinte mindent be lehet állítani CLI-n. A Check Pointnál viszont minden fordítva van — az összes biztonsági beállítást kizárólag a grafikus felületen végezték. Viszont néhány dolgot egyáltalán nem kényelmes GUI-n keresztül csinálni (még ha olyan kényelmes is, mint a Check Pointé). Például egy új 100 hosztnak vagy hálózatnak a hozzáadása hosszú és fárasztó procedúrává válik. Minden objektumnál többször kell kattintani az egérrel és beírni az IP-címet. Ugyanez vonatkozik egy webhelycsoport létrehozására vagy IPS aláírások tömeges engedélyezésére/letiltására. Ezenkívül nagy a valószínűsége a hibák elkövetésének.

Nemrégiben csoda történt. Az új verzió kiadásával Gaia R80 bejelentették az API használatának lehetőségét , ami széles lehetőségeket nyit meg a beállítások automatizálásában, az adminisztrálásban, a megfigyelésben stb. Most már lehet:objektumokat létrehozni;

  • hozzáadni vagy módosítani az access-listákat;
  • bekapcsolni/ kikapcsolni a blade-eket;
  • beállítani a hálózati interfészeket;
  • telepíteni a politikákat;
  • és még sok mást.
  • Őszintén szólva, nem értem, hogyan került el ez a hír a Habr elől. Ebben a cikkben röviden leírjuk, hogyan használhatjuk az API-t, és bemutatunk néhány gyakorlati példát

a Check Point beállítására szkriptek segítségével Azonnal meg szeretném jegyezni, hogy az API csak a Management szerverhez használható. Tehát a gatewayek kezelése a Management szerver nélkül továbbra is lehetetlen..

Kinek hasznos ez az API?

Rendszergazdák, akik szeretnék egyszerűsíteni vagy automatizálni a Check Point beállításainak rutinfeladatait;

  1. Vállalatok, amelyek szeretnék integrálni a Check Pointot más megoldásokkal (virtualizálási rendszerek, jegyrendszerek, konfigurációkezelő rendszerek stb.);
  2. Rendszerintegrátorok, akik szeretnék standardizálni a beállításokat, vagy további termékeket létrehozni, amelyek kapcsolódnak a Check Pointhoz.
  3. Tipikus séma

Tehát képzeljünk el egy tipikus sémát a Check Pointtal:

Mint mindig, nálunk van egy gateway (

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

SG), egy kezelő szerver (SMS), és egy adminisztrátor konzol (SmartConsole). Eközben a gateway beállításának szokásos folyamata a következőképpen néz ki:). Az átlagos gateway beállítása pedig a következőképpen zajlik:

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Tehát először a rendszergazda számítógépén el kell indítani ). Eközben a gateway beállításának szokásos folyamata a következőképpen néz ki:, amellyel csatlakozunk a Management szerverhez (), és egy adminisztrátor konzol (). Az SMS-en végrehajtják a biztonsági beállításokat, majd ezután alkalmazzák (install policy) a gateway-re (), egy kezelő szerver ().

Használat közben Management API, alapvetően átugorhatjuk az első lépést (SmartConsole elindítása), és alkalmazhatjuk API-parancsokat közvetlenül a Management szerverre (SMS).

Az API használati módjai

Az API-n keresztüli konfigurációs módosításhoz négy alapvető módszer létezik:

1) A mgmt_cli segédprogram segítségével

Példa — # mgmt_cli add host name host1 ip-address 192.168.2.100
Ez a parancs a Management szerver (SMS) parancssorából indítható. Gondolom, a parancs szintaxisa érthető — létrejön a host1 az 192.168.2.100 címmel.

2) API-parancsok megadása a clish-en (expert módban)

Tulajdonképpen csak annyira van szükség, hogy bejelentkezz a parancssorba (mgmt login) az adott felhasználói fiókkal, amelyet a SmartConsole-on való csatlakozáshoz használsz (vagy egy root fiókkal). Ezután már beírhatod API-parancsokat (ebben az esetben nem szükséges a parancs előtt használnod a mgmt_cli). Teljes értékű BASH-scriptekethozhatsz létre. Példa egy scriptre, amely létrehoz egy hostot:

Bash-script

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

Ha érdekel, akkor megnézheted a megfelelő videót:

Videó lejátszása

3) A SmartConsole-on keresztül, megnyitva a CLI ablakot

Azt kell tenned, hogy elindítod a CLI ablakot közvetlenül a ). Eközben a gateway beállításának szokásos folyamata a következőképpen néz ki:, ahogy az az alábbi képen látható.

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Ebben az ablakban azonnal elkezdheted beírni az API-parancsokat.

4) Web Services. HTTPS Post request (REST API) használata

Véleményünk szerint ez az egyik legígéretesebb módszer, mivel lehetővé teszi, hogy "alkalmazásokat építsünk" a menedzsment szerver kezelésére (elnézést a tautológiáért). Az alábbiakban részletesebben megvizsgáljuk ezt a módszert.

Összefoglalva:

  1. API + cli jobban megfelel az olyan embereknek, akik a Cisco-hoz szoktak;
  2. API + shell a scriptek alkalmazásához és a rutinszerű feladatok végrehajtásához;
  3. REST API az automatizáláshoz.

API aktiválása

Alapértelmezés szerint az API aktív a 4 GB-nál nagyobb RAM-mal rendelkező menedzsment szervereken és a 8 GB-nál nagyobb RAM-mal rendelkező standalone konfigurációkon. Az állapot ellenőrizhető a következő parancs segítségével: api status

Ha kiderül, hogy az API ki van kapcsolva, akkor azt elég egyszerűen aktiválhatod a SmartConsole segítségével: Manage & Settings > Blades > Management API > Advanced Settings

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Ezután publikálni kell (Publish) a módosításokat, és futtatni a parancsot api restart.

Web requests + Python

API-parancsok végrehajtásához használhatsz web-kéréseket az Python és a requests library-k segítségével. Általános formában a web-kérdések szerkezete három részből áll:, json1) Cím

1)Cím

(https://:/web_api/) 


2) HTTP Fejlécek

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


3) Kérelem terhelés

JSON formátumban lévő szöveg, amely a különböző paramétereket tartalmazza

Példa különböző parancsok hívására:


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 cím GAIA

Íme néhány tipikus feladat, amelyekkel gyakran találkozunk a Check Point adminisztrálása során.

1) Példa a bejelentkezési és kijelentkezési függvényekre:

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) Blade-ek aktiválása és hálózat konfigurálása:

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) Tűzfal szabályok módosítása:

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) Alkalmazási réteg hozzáadása:

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) Politika közzététele és telepítése, a parancs végrehajtásának ellenőrzése (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) Új host hozzáadása:

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) Threat Prevention mező hozzáadása:

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) Nézd meg a munkamenetek listáját

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) Hozz létre új profilt:

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) Változtasd meg az IPS aláírás cselekvését:

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) Add meg a saját szolgáltatásodat:

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) Adj hozzá egy kategóriát, weboldalt vagy csoportot:

Script


add_application_site_category={  "name" : "Valve","description" : "Valve Játékok"}
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" : "Játékok","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))

Ezen kívül, a Web API segítségével hálózatokat, hosztokat, hozzáférési szerepeket és egyebeket adhatsz hozzá vagy távolíthatsz el. Van lehetőség a blade-ek konfigurálására: Antivirus, Antibot, IPS, VPN. Licencet is telepíthetsz a run-script. A Check Point összes API parancsát megismerheted a itt.

Check Point API + Postman

Használata kényelmes lehet a Check Point Web API kapcsolatban a Postman. A Postman asztali verziói elérhetőek Windows, Linux és MacOS rendszerre. Ezen kívül van egy bővítmény a Google Chrome-hoz is. Mi ezt fogjuk használni. Először is, meg kell találni a Postman-t a Google Chrome boltjában és telepíteni:

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Ezzel az eszközzel Web-kéréseket tudunk létrehozni a Check Point API-hoz. Anélkül, hogy meg kellene jegyezni minden API-parancsot, lehetőség van az úgynevezett gyűjtemények (sablonok) importálására, amelyek már tartalmazzák az összes szükséges parancsot:

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Itt megtalálja gyűjtemény a R80.10. Az importálás után elérhetővé válnak az API-parancsok sablonjai:

Check Point R80.10 API. Kezelés CLI-n, szkripteken és még sok máson keresztül

Szerintem ez nagyon kényelmes. Viszonylag gyorsan nekiláthatsz az alkalmazások fejlesztésének a Check Point API használatával.

Check Point + Ansible

Azt is szeretném megjegyezni, hogy létezik Ansible modul a Check Point API-hoz. A modul lehetővé teszi a konfigurációk kezelését, de nem annyira kényelmes egzotikus feladatok megoldására. Bármely programozási nyelven írt szkriptek rugalmasabb és kényelmesebb megoldásokat adnak.

Következtetés

Ezzel valószínűleg befejezzük a Check Point API-ról szóló rövid áttekintésünket. Véleményem szerint ez a funkció nagyon várt és szükséges volt. Az API megjelenése széles lehetőségeket nyit meg mind a rendszeradminisztrátorok, mind a rendszerintegrátorok számára, akik a Check Point termékeivel foglalkoznak. Orkesztrálás, automatizálás, visszajelzés a SIEM-nek… mindez most már lehetséges.

P.S. További cikkeket a Check Point mindig megtalálhatják a blogunkban Habr vagy a weboldalon.

blogunkban itt

Csak a regisztrált felhasználók vehetnek részt a szavazáson. Kérem, jelentkezzen be., kérem.

P.S.S. Technikai kérdéseket a Check Point beállításával kapcsolatban lehet feltenni

  • 70,6%Tervezi az API használatát?

  • 23,5%Igen12

  • 5,9%Nem4

Már használom1

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster