Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Ziur nago inoiz lan egin duten guztiekin Check Point, salaketa bat zegoen konfigurazioa komando lerrotik editatzeko ezintasuna. Hau bereziki bitxia da aurretik Cisco ASArekin lan egin dutenentzat, non erabat konfigura daitekeen CLI-n. Check Point-ekin alderantziz da - segurtasun ezarpen guztiak interfaze grafikotik soilik egin ziren. Hala ere, gauza batzuk guztiz deserosoak dira GUI bidez egiteko (nahiz eta Check Point-ena bezain erosoa). Adibidez, 100 ostalari edo sare berri gehitzeko zeregina prozedura luze eta neketsu bihurtzen da. Objektu bakoitzeko sagua hainbat aldiz klikatu eta IP helbidea sartu beharko duzu. Gauza bera gertatzen da gune talde bat sortzeko edo IPS sinadurak gaitzeko/desgaitzeko masiboarekin. Kasu honetan, akats bat egiteko probabilitate handia dago.

"Mirari" bat gertatu da duela gutxi. Bertsio berriaren kaleratzearekin batera Gaia R80 aukera iragarri zen API erabilera, ezarpenak, administrazioa, monitorizazioa eta abar automatizatzeko aukera zabalak zabaltzen dituena. Orain egin dezakezu:

  • objektuak sortu;
  • sarbide-zerrendak gehitu edo editatu;
  • palak gaitu/desgaitu;
  • sareko interfazeak konfiguratu;
  • politikak instalatu;
  • eta askoz gehiago.

Egiari zor, ez dut ulertzen nola pasa zen berri hau Habr-ek. Artikulu honetan APIa nola erabili laburki deskribatuko dugu eta hainbat adibide praktiko emango ditugu. CheckPoint ezarpenak scriptak erabiliz.

Erreserba bat egin nahiko nuke berehala APIa Kudeaketa zerbitzarirako soilik erabiltzen dela. Horiek. Oraindik ezinezkoa da atebideak kudeatzea Kudeaketa zerbitzaririk gabe.

Nork erabil dezake API hau printzipioz?

  1. Check Pointeko ohiko konfigurazio-zereginak erraztu edo automatizatu nahi dituzten sistema-administratzaileak;
  2. Check Point beste irtenbide batzuekin (birtualizazio sistemak, txartel-sistemak, konfigurazioa kudeatzeko sistemak, etab.) integratu nahi duten enpresak;
  3. Ezarpenak estandarizatu edo Check Point-ekin lotutako produktu gehigarriak sortu nahi dituzten sistema integratzaileak.

Eskema tipikoa

Beraz, imajina dezagun Check Point-ekin eskema tipiko bat:

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Ohi bezala atari bat dugu (SG), kudeaketa zerbitzaria (SMS) eta administrazio kontsola (SmartConsole). Kasu honetan, ohiko atebidearen konfigurazio-prozesua honelakoa da:

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Horiek. Lehenik eta behin administratzailearen ordenagailuan exekutatu behar duzu SmartConsole, zeinekin konektatzen gara Kudeaketa zerbitzariarekin (SMS). Segurtasun-ezarpenak SMSan egiten dira, eta orduan bakarrik aplikatzen dira (instalatu politika) atarira (SG).

Noiz erabiliz Kudeaketa APIa, funtsean, lehen puntua saltatu dezakegu (abiarazi SmartConsole) eta erabili API komandoak Zuzenean Kudeaketa zerbitzarira (SMS).

APIa erabiltzeko moduak

APIa erabiliz konfigurazioa editatzeko lau modu nagusi daude:

1) mgmt_cli utilitatea erabiliz

Adibidea - # mgmt_cli gehitu ostalariaren izena host1 ip-helbidea 192.168.2.100
Komando hau Management Server (SMS) komando-lerrotik exekutatzen da. Uste dut komandoaren sintaxia argia dela - host1 192.168.2.100 helbidearekin sortzen da.

2) Sartu API komandoak clish bidez (aditu moduan)

Funtsean, egin behar duzun guztia komando lerroan saioa hasi da (kudeatu saioa) SmartConsole (edo root kontua) bidez konektatzean erabiltzen den kontuaren azpian. Orduan sar zaitezke API komandoak (kasu honetan ez dago erabilgarritasuna komando bakoitzaren aurretik erabili beharrik mgmt_cli). Osorik sortu dezakezu BASH gidoiak. Ostalariak sortzen duen script baten adibidea:

bash gidoia

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

Interesa baduzu, dagokion bideoa ikus dezakezu:

3) SmartConsole bidez CLI leihoa irekiz

Egin behar duzun guztia leihoa irekitzea da CLI zuzenean SmartConsole, beheko irudian ikusten den bezala.

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Leiho honetan, berehala has zaitezke API komandoak sartzen.

4) Web Zerbitzuak. Erabili HTTPS Post eskaera (REST APIa)

Gure ustez, hau da metodorik itxaropentsuenetako bat, zeren oinarritutako aplikazio osoak "eraikitzeko" aukera ematen du kudeaketa zerbitzariaren kudeaketa (barkatu tautologiagatik). Jarraian metodo hau xehetasun apur bat gehiago aztertuko dugu.

Laburtzeko:

  1. API + cli Cisco-ra ohituta dauden pertsonentzat egokiagoa;
  2. API + shell gidoiak aplikatzeagatik eta ohiko zereginak egiteko;
  3. REST API automatizaziorako.

APIa gaitzea

Lehenespenez, APIa gaituta dago 4 GB RAM baino gehiago dituzten kudeaketa zerbitzarietan eta 8 GB RAM baino gehiago dituzten konfigurazio autonomoetan. Egoera egiaztatu dezakezu komandoa erabiliz: api egoera

APIa desgaituta dagoela ikusten bada, nahiko erraza da SmartConsole bidez gaitzea: Kudeatu eta ezarpenak > Blades > Kudeaketa APIa > Ezarpen aurreratuak

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Gero argitaratu (Argitaratu) aldatzen du eta exekutatu komandoa api berrabiarazi.

Web eskaerak + Python

API komandoak exekutatzeko, web eskaerak erabil ditzakezu Python eta liburutegiak eskaerak, json. Oro har, web eskaera baten egiturak hiru zati ditu:

1) Helbidea

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


2) HTTP goiburuak

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


3) Karga erabilgarria eskatzea

Testua JSON formatuan parametro desberdinak dituena

Hainbat komando deitzeko adibidea:


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

Hona hemen Check Point administratzean gehien topatzen dituzun zeregin tipiko batzuk.

1) Baimen eta saioa amaitzeko funtzioen adibidea:

Gidoia


    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) Bladeak piztea eta sarea konfiguratzea:

Gidoia


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) Suebakiaren arauak aldatzea:

Gidoia


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) Aplikazio geruza gehitzea:

Gidoia


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) Argitaratu eta ezarri politika, egiaztatu komandoaren exekuzioa (zeregin-id):

Gidoia


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) Gehitu ostalaria:

Gidoia


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) Gehitu mehatxuen prebentzio eremu bat:

Gidoia


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) Ikusi saioen zerrenda

Gidoia


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) Sortu profil berri bat:

Gidoia


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) Aldatu IPS sinaduraren ekintza:

Gidoia


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) Gehitu zure zerbitzua:

Gidoia


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) Gehitu kategoria, gune edo talde bat:

Gidoia


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

Horrez gain, laguntzarekin Web APIa sareak, ostalariak, sarbide-rolak eta abar gehitu eta kendu ditzakezu. Palak pertsonalizatu daitezke Antibirusa, Antibot, IPS, VPN. Komandoa erabiliz lizentziak instalatzea ere posible da exekutatu-gidoia. Check Point API komando guztiak hemen aurki daitezke Hemen.

Check Point API + Postman

Erabiltzeko erosoa ere Check Point Web APIa ekin batera Postaria. Postman-ek mahaigaineko bertsioak ditu Windows, Linux eta MacOSerako. Horrez gain, Google Chromerako plugin bat dago. Hauxe da erabiliko duguna. Lehenik eta behin Postman aurkitu behar duzu Google Chrome dendan eta instalatu:

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Utilitate hau erabiliz, Web eskaerak sortu ahal izango ditugu Check Point APIra. API komando guztiak ez gogoratzeko, posible da bilduma (txantiloi) deiturikoak inportatzea, zeinak dagoeneko beharrezko komando guztiak dituzten:

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Hemen aurkituko duzu bilduma egiteko R80.10. Inportatu ondoren, API komandoen txantiloiak eskuragarri egongo dira:

Check Point R80.10 APIa. Kudeaketa CLI, script eta gehiagoren bidez

Nire ustez, hau oso erosoa da. Azkar has zaitezke aplikazioak garatzen Check Point APIa erabiliz.

Check Point + Ansible

Badagoela ere adierazi nahiko nuke Ansible modulua CheckPoint APIrako. Moduluak konfigurazioak kudeatzeko aukera ematen du, baina ez da hain erosoa arazo exotikoak konpontzeko. Scriptak edozein programazio-lengoaian idazteak irtenbide malguagoak eta erosoagoak eskaintzen ditu.

Irteera

Hementxe amaituko dugu ziurrenik Check Point APIaren berrikuspen laburra. Nire ustez, ezaugarri hau oso itxaroten eta beharrezkoa zen. APIaren sorrerak aukera oso zabalak zabaltzen ditu Check Point produktuekin lan egiten duten sistema-administratzaileentzat eta sistema-integratzaileentzat. Orkestrazioa, automatizazioa, SIEM feedbacka... dena posible da orain.

P.S. Artikulu gehiago Check Point beti bezala gure blogean aurki dezakezu Habr edo blogean helbidean Online.

P.S.S. Check Point konfiguratzearekin lotutako galdera teknikoetarako, egin dezakezu Hemen

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

APIa erabiltzeko asmoa al duzu?

  • 70,6%Bai12

  • 23,5%4. zenbakia

  • 5,9%Dagoeneko erabiltzen 1

17 erabiltzailek eman dute botoa. 3 erabiltzaile abstenitu ziren.

Iturria: www.habr.com

Gehitu iruzkin berria