Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Jam i sigurt qĂ« çdo kush qĂ« ka punuar ndonjĂ«herĂ« me Check Point, ka pasur njĂ« ankesĂ« nĂ« lidhje me pamundĂ«sinĂ« e ndryshimit tĂ« konfiguracionit nga linja e komandĂ«s. Kjo Ă«shtĂ« veçanĂ«risht e çuditshme pĂ«r ata qĂ« kanĂ« punuar mĂ« parĂ« me Cisco ASA, ku gjithçka mund tĂ« konfigurohet nĂ« CLI. Me Check Point ndodh e kundĂ«rta — tĂ« gjitha konfigurimet e sigurisĂ« kryhen ekskluzivisht pĂ«rmes ndĂ«rfaqes grafike. MegjithatĂ«, disa gjĂ«ra janĂ« jashtĂ«zakonisht tĂ« papĂ«rshtatshme pĂ«r t'u bĂ«rĂ« pĂ«rmes GUI (edhe njĂ« ndĂ«rfaqe aq e lehtĂ« si ajo e Check Point). PĂ«r shembull, detyra pĂ«r tĂ« shtuar 100 hoste ose rrjete tĂ« reja kthehet nĂ« njĂ« procedurĂ« tĂ« gjatĂ« dhe tĂ« bezdisshme. PĂ«r çdo objekt, do tĂ« duhet tĂ« klikoni disa herĂ« me miun dhe tĂ« shkruani adresat IP. E njĂ«jta gjĂ« vlen pĂ«r krijimin e grupeve tĂ« faqeve ose pĂ«r aktivizimin/mbylljen masive tĂ« nĂ«nshkrimeve tĂ« IPS. NĂ« kĂ«tĂ« rast, ekziston njĂ« mundĂ«si e madhe pĂ«r tĂ« bĂ«rĂ« gabime.

Pak kohë më parë ndodhi një "mrekulli". Me lansimin e versionit të ri Gaia R80 u njoftua mundësia e përdorimit të API, e cila hap mundësi të gjera për automatizimin e konfigurimeve, administrimin, monitorimin etj. Tani është e mundur të:

  • krijoni objekte;
  • shtoni ose redaktoni lista tĂ« aksesit;
  • aktivizoni/deaktivizoni blloqet;
  • konfiguroni ndĂ«rfaqet rrjetike;
  • instaloni i politikave;
  • dhe shumĂ« tĂ« tjera.

E gjithësisht, nuk e kuptoj si kjo lajm ka kaluar pa u vënë re nga Habr. Në këtë artikull do të përshkruajmë shkurtimisht se si të përdorim API-në dhe do të japim disa shembuj praktikë. konfigurimet e CheckPoint me ndihmën e skripteve..

Menjëherë do të doja të sqaroj, API përdoret vetëm për serverin e Menaxhimit. Kështu që, menaxhimi i kalimeve pa serverin e Menaxhimit ende mbetet i pamundur.

Kujt mund t'i nevojitet kjo API në përgjithësi?

  1. Administratorët e sistemeve, të cilët duan të thjeshtojnë ose automatizojnë detyrat e zakonshme të konfigurimit të Check Point;
  2. Kompani që duan të integrojnë Check Point me zgjidhje të tjera (sisteme virtualizimi, sisteme biletash, sisteme menaxhimi të konfigurimeve etj.);
  3. Integruesit e sistemeve, të cilët duan të standardizojnë konfigurimet ose të krijojnë produkte të tjera të lidhura me Check Point.

Skema tipike

Dhe pra, le të imagjinojmë një skemë tipike me Check Point:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Si zakonisht kemi një kalim (SG), një server menaxhimi (SMS) dhe një konsolë administratori (SmartConsole). Në të njëjtën kohë, procesi i zakonshëm i konfigurimit të kalimit duket si më poshtë:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Domethënë, fillimisht është e nevojshme të nisni në kompjuterin e administratorit SmartConsole, me të cilin ne lidhemi me serverin e menaxhimit (SMS). Në SMS, konfigurimet e sigurisë kryhen, dhe pastaj aplikohen (politika e instalimit) në portal (SG).

Kur përdorni Management API, në thelb mund të anashkalojmë pikën e parë (nisja e SmartConsole) dhe të aplikojmë komandat API direkt në serverin e menaxhimit (SMS).

Mënyrat e përdorimit të API

Për modifikimin e konfigurimit me anë të API, ka katër mënyra kryesore:

1) Duke përdorur utilitarin mgmt_cli

Shembuj — # mgmt_cli add host name host1 ip-address 192.168.2.100
Kjo komandĂ« ekzekutohet nga linja e komandĂ«s nĂ« serverin e menaxhimit (SMS). Mendoj se sintaksat e komandĂ«s janĂ« tĂ« qarta — krijohet host1 me adresĂ«n 192.168.2.100.

2) Të dçosh komandat e API përmes clish (në modin ekspert)

Në thelb, gjithçka që duhet, është të logohesh në linjën e komandës (mgmt login) me llogarinë që përdoret gjatë lidhjes përmes SmartConsole (ose llogaria root). Pas kësaj, mund të jesh në gjendje të futësh komandat API (në këtë rast nuk ka nevojë të përdorësh utilitarin mgmt_cli). Mund të krijosh skript të plota BASH.Shembuj i skriptit që krijon një host:

Bash-çkripti

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

Nëse je i interesuar, mund të shikosh videon përkatëse:

Luaj videon

3) Përmes SmartConsole, duke hapur dritaren CLI

Gjithçka që duhet të bësh, është të nisësh dritaren CLI drejt nga SmartConsole, siç tregohet në imazhin më poshtë.

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Në këtë dritare mund të filloni menjëherë të shkruani komandat API.

4) Shërbimet Web. Përdorni kërkesën HTTPS Post (REST API)

Mendimi ynë është se ky është një nga metodat më premtuese, sepse lejon "ndërtimin" e aplikacioneve të tëra për menaxhimin e serverit të menaxhimit (më vjen keq për tautologjinë). Më poshtë do të shqyrtojmë këtë metodë pak më në detaje.

Nëse përmbledhim:

  1. API + cli është më e përshtatshme për njerëzit që janë të zakonshëm me Cisco;
  2. API + shell për aplikimin e skripteve dhe kryerjen e detyrave rutinë;
  3. REST API për automatizim.

Aktivizimi i API

Për default, API është aktiv në serverët e menaxhimit me RAM më shumë se 4GB dhe konfigurimet standalone me RAM më shumë se 8GB. Statusin mund ta kontrolloni me komandën: api status

Nëse rezulton se API është i fikur, është mjaft e lehtë ta aktivizoni përmes SmartConsole: Menaxho & Cilësimet > Blades > Management API > Cilësime të Avancuara

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Pastaj publikoni (Publiko) ndryshimet dhe ekzekutoni komandën api restart.

Kërkesa Web + Python

Për ekzekutimin e komandave API, mund të përdorni kërkesa Web me përdorimin e Python dhe bibliotekave requests, json. Në formën e parë struktura e kërkesës web përbëhet nga tri pjesë:

1) Adresa

(https://<serveri i menaxhimit>:<porta>/web_api/<komanda>) 


2) HTTP Headers

content-Type: application/json
x-chkp-sid: <token ID seancë siç kthehet nga komanda e logimit>


3) Ngarkesa e kërkesës

Tekst në format JSON që përmban parametrat e ndryshëm

Shembuj për thirrjen e komandave të ndryshme:


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' -> Adresa IP GAIA

Do t'i paraqesim disa detyra tipike që hasen shpesh gjatë administrimit të Check Point.

1) Shembuj të funksioneve të autorizimit dhe shkëputjes:

Skripti


    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) Aktivizimi i blade-ve dhe konfigurimi i rrjetit:

Skripti


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) Ndryshimi i rregullave të firewall-it:

Skripti


new_access_data={'name':'Rregulli i pastrimit','layer':'Rrjeti','action':'Prano'}
new_access_result = api_call('xxx.xxx.xxx.xxx', 443,'set-access-rule', new_access_data ,sid)
print(json.dumps(new_access_result))

4) Shtimi i nivelit të Aplikacionit:

Skripti


add_access_layer_application={ 'name' : 'aplikacioni123',"filterimi-i-aplikacioneve-dhe-URL-ve" : 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" : "aplikacioni123","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) Publikimi dhe instalimi i politikës, verifikimi i ekzekutimit të komandës (task-id):

Skripti


publish_result = api_call('xxx.xxx.xxx.xxx', 443,"publish", {},sid)
print("rezulti i publikimit: " + 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) Shtoni host:

Skripti


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) Shtoni fushën e Parandalimit të Kanavacës:

Skripti


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) Shiko listën e sesioneve

Skripti


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) Krijo një profil të ri:

Skripti


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) Ndrysho veprimin për nënshkrimin IPS:

Skripti


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) Shtoni shërbimin tuaj:

Skripti


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) Shtoni kategorinë, faqen ose grupin:

Skripti


add_application_site_category={  "name" : "Valve","description" : "Lojëra Valve"}
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" : "Lojëra","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))

PĂ«r mĂ« tepĂ«r, me ndihmĂ«n e Web API Ju mund tĂ« shtoni dhe hiqni rrjetet, hostet, rolet e aksesit etj. Ekziston mundĂ«sia pĂ«r konfigurimin e blades Antivirus, Antibot, IPS, VPN. ËshtĂ« e mundur madje edhe instalimi i licencave me ndihmĂ«n e komandĂ«s run-script. Me tĂ« gjitha komandat API tĂ« Check Point mund tĂ« njiheni kĂ«tu.

Check Point API + Postman

Gjithashtu është e përshtatshme të përdoret Check Point Web API në lidhje me Postman. Postman ka versione desktop për Windows, Linux dhe MacOS. Për më tepër, ka një shtesë për Google Chrome. Ne do ta përdorim këtë. Së pari, duhet të gjejmë Postman në Google Chrome Store dhe ta instalojmë:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Me këtë mjet, ne do të jemi në gjendje të formojmë kërkesa Web për API Check Point. Për të mos mbajtur mend të gjitha komandat API, ka mundësi të importojmë koleksione (shabllone) që tashmë përmbajnë të gjitha komandat e nevojshme:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Këtu do të gjeni koleksion për R80.10. Pas importimit, shabllonet e komandave API do të jenë të disponueshme për ne:

Check Point R80.10 API. Menaxhimi përmes CLI, skripteve dhe jo vetëm

Sipas mendimit tim, kjo është shumë e dobishme. Mund të fillosh shpejt zhvillimin e aplikacioneve duke përdorur Check Point API.

Check Point + Ansible

Gjithashtu, do të doja të theksoj se ekziston Ansible moduli për CheckPoint API. Moduli lejon menaxhimin e konfigurimeve, por nuk është aq i përshtatshëm për zgjidhje të detyrave ekzekutive. Shkrimi i skripteve në çdo gjuhë programimi ofron zgjidhje më fleksibile dhe më të përshtatshme.

Përfundim

Këtu do ta mbyllim këtë përmbledhje të vogël për Check Point API. Sipas mendimit tim, kjo veçori është pritur shumë dhe është e nevojshme. Shfaqja e API hap mundësi të gjera për administratoret e sistemeve dhe integruesit e sistemeve që punojnë me produktet Check Point. Orkestrimi, automatizimi, dhe feedback-u me SIEM... të gjitha këto tani janë të mundshme.

P.S. Më shumë artikuj mbi Check Point mund ta gjeni si gjithnjë në blogun tonë Habr ose në blogun në të internetit.

P.S.S. Pyetjet teknike që lidhen me konfigurimin e Check Point mund të dërgohen këtu

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, ju lutemi.

A keni ndërmend të përdorni API?

  • 70,6%Po12

  • 23,5%Jo4

  • 5,9%E pĂ«rdor tashmĂ«1

Kreu votimin 17 përdorues. Pjesëmarrës 3 përdorues.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster