API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

Estic segur que tots els que han treballat alguna vegada Check Point, hi va haver una queixa impossibilitat d'editar la configuració des de la línia d'ordres. Això és especialment estrany per a aquells que han treballat anteriorment amb Cisco ASA, on absolutament tot es pot configurar a la CLI. Amb Check Point és al revés: tots els paràmetres de seguretat es van realitzar exclusivament des de la interfície gràfica. Tanmateix, algunes coses són completament incòmodes de fer a través de la GUI (fins i tot una tan convenient com la de Check Point). Per exemple, la tasca d'afegir 100 amfitrions o xarxes nous es converteix en un procediment llarg i tediós. Per a cada objecte hauràs de fer clic amb el ratolí diverses vegades i introduir l'adreça IP. El mateix passa amb la creació d'un grup de llocs o l'habilitació/desactivació massiva de signatures IPS. En aquest cas, hi ha una alta probabilitat de cometre un error.

Fa relativament poc va passar un "miracle". Amb el llançament de la nova versió Gaia R80 es va anunciar l'oportunitat Ús de l'API, que obre àmplies oportunitats per automatitzar la configuració, l'administració, el seguiment, etc. Ara pots:

  • crear objectes;
  • afegir o editar llistes d'accés;
  • activar/desactivar les fulles;
  • configurar interfícies de xarxa;
  • instal·lar polítiques;
  • i molt més.

Per ser sincer, no entenc com va passar aquesta notícia per Habr. En aquest article descriurem breument com utilitzar l'API i oferirem diversos exemples pràctics. Configuració de CheckPoint mitjançant scripts.

M'agradaria fer una reserva immediatament perquè l'API només s'utilitza per al servidor de gestió. Aquells. Encara és impossible gestionar passarel·les sense un servidor de gestió.

Qui pot utilitzar aquesta API en principi?

  1. Administradors del sistema que vulguin simplificar o automatitzar les tasques rutinàries de configuració de Check Point;
  2. Empreses que vulguin integrar Check Point amb altres solucions (sistemes de virtualització, sistemes de tickets, sistemes de gestió de configuració, etc.);
  3. Integradors de sistemes que volen estandarditzar la configuració o crear productes addicionals relacionats amb Check Point.

Esquema típic

Per tant, imaginem un esquema típic amb Check Point:

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

Com de costum tenim una porta d'entrada (SG), servidor de gestió (SMS) i la consola d'administració (SmartConsole). En aquest cas, el procés habitual de configuració de la passarel·la té aquest aspecte:

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

Aquells. Primer heu d'executar-lo a l'ordinador de l'administrador SmartConsole, amb el qual ens connectem al servidor de gestió (SMS). La configuració de seguretat es fa a l'SMS i només després s'aplica (política d'instal·lació) a la passarel·la (SG).

Quan s'utilitza el API de gestió, bàsicament podem saltar el primer punt (llançar SmartConsole) i utilitzar-lo Ordres de l'API directament al servidor de gestió (SMS).

Maneres d'utilitzar l'API

Hi ha quatre maneres principals d'editar la configuració mitjançant l'API:

1) Utilitzant la utilitat mgmt_cli

Exemple - # mgmt_cli afegeix el nom d'amfitrió host1 adreça-ip 192.168.2.100
Aquesta ordre s'executa des de la línia d'ordres del servidor de gestió (SMS). Crec que la sintaxi de l'ordre és clara: host1 es crea amb l'adreça 192.168.2.100.

2) Introduïu les ordres de l'API mitjançant clish (en mode expert)

Bàsicament, tot el que heu de fer és iniciar sessió a la línia d'ordres (inici de sessió de gestió) sota el compte que s'utilitza quan es connecta mitjançant SmartConsole (o compte root). Després pots entrar Ordres de l'API (en aquest cas no cal fer servir la utilitat abans de cada comanda mgmt_cli). Podeu crear de ple dret Scripts BASH. Un exemple d'un script que crea l'amfitrió:

Guió 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

Si esteu interessats, podeu veure el vídeo corresponent:

3) Mitjançant SmartConsole obrint la finestra CLI

Tot el que has de fer és obrir la finestra CLI directament de SmartConsole, tal com es mostra a la imatge següent.

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

En aquesta finestra, podeu començar immediatament a introduir ordres de l'API.

4) Serveis web. Utilitza la sol·licitud de publicació HTTPS (API REST)

Al nostre parer, aquest és un dels mètodes més prometedors, perquè us permet "crear" aplicacions senceres basades en gestió del servidor de gestió (perdó per la tautologia). A continuació veurem aquest mètode amb una mica més de detall.

Resumir:

  1. API + cli més adequat per a persones acostumades a Cisco;
  2. API + shell per aplicar scripts i realitzar tasques rutinàries;
  3. REST API per a l'automatització.

Habilitació de l'API

Per defecte, l'API està habilitada en servidors de gestió amb més de 4 GB de RAM i configuracions autònomes amb més de 8 GB de RAM. Podeu comprovar l'estat mitjançant l'ordre: estat de l'API

Si resulta que l'API està desactivada, és bastant fàcil habilitar-la mitjançant SmartConsole: Gestiona i configuració > Blades > API de gestió > Configuració avançada

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

Després publica (Publicar) canvia i executeu l'ordre reinici de l'API.

Sol·licituds web + Python

Per executar ordres de l'API, podeu utilitzar sol·licituds web Pitó i biblioteques peticions, json. En general, l'estructura d'una sol·licitud web consta de tres parts:

1) Adreça

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


2) Capçaleres HTTP

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


3) Sol·licitar càrrega útil

Text en format JSON que conté els diferents paràmetres

Exemple per cridar diverses ordres:


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

Aquestes són algunes de les tasques típiques amb les que us trobeu més sovint quan administreu Check Point.

1) Exemple de funcions d'autorització i tancament de sessió:

Guió


    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) Encendre les fulles i configurar la xarxa:

Guió


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) Canviar les regles del tallafoc:

Guió


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) Afegeix una capa d'aplicació:

Guió


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) Publiqueu i configureu la política, comproveu l'execució de l'ordre (ID de tasca):

Guió


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) Afegeix amfitrió:

Guió


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) Afegiu un camp de prevenció d'amenaces:

Guió


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) Veure la llista de sessions

Guió


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) Creeu un perfil nou:

Guió


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) Canvieu l'acció per a la signatura IPS:

Guió


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) Afegiu el vostre servei:

Guió


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) Afegeix una categoria, lloc o grup:

Guió


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

A més, amb l'ajuda API web podeu afegir i eliminar xarxes, amfitrions, rols d'accés, etc. Les fulles es poden personalitzar Antivirus, Antibot, IPS, VPN. Fins i tot és possible instal·lar llicències mitjançant l'ordre run-script. Totes les ordres de l'API de Check Point es poden trobar aquí aquí.

Check Point API + Carter

També còmode d'utilitzar API web de Check Point en conjunció amb Carter. Postman té versions d'escriptori per a Windows, Linux i MacOS. A més, hi ha un connector per a Google Chrome. Això és el que farem servir. Primer heu de trobar Postman a Google Chrome Store i instal·lar:

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

Mitjançant aquesta utilitat, podrem generar sol·licituds web a l'API Check Point. Per no recordar totes les ordres de l'API, és possible importar les anomenades col·leccions (plantilles), que ja contenen totes les ordres necessàries:

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

Aquí trobarà col · lecció per R80.10. Després de la importació, les plantilles d'ordres de l'API estaran disponibles per a nosaltres:

API Check Point R80.10. Gestió mitjançant CLI, scripts i molt més

Al meu entendre, això és molt convenient. Podeu començar ràpidament a desenvolupar aplicacions mitjançant l'API Check Point.

Check Point + Ansible

També m'agradaria assenyalar que n'hi ha Ansible mòdul per a l'API CheckPoint. El mòdul permet gestionar configuracions, però no és tan convenient per resoldre problemes exòtics. Escriure scripts en qualsevol llenguatge de programació proporciona solucions més flexibles i convenients.

Sortida

Aquí és on probablement acabarem la nostra breu revisió de l'API Check Point. Al meu entendre, aquesta funció era molt esperada i necessària. L'aparició de l'API obre oportunitats molt àmplies tant per als administradors de sistemes com per als integradors de sistemes que treballen amb productes Check Point. Orquestració, automatització, feedback SIEM... tot és possible ara.

PS Més articles sobre Check Point com sempre el trobareu al nostre blog Habr o al blog a Online.

PSS Per a preguntes tècniques relacionades amb la configuració de Check Point, podeu fer-ho aquí

Només els usuaris registrats poden participar en l'enquesta. Inicia sessiósi us plau.

Teniu previst utilitzar l'API?

  • 70,6%Sí 12

  • 23,5%No4

  • 5,9%Ja s'està fent servir 1

Han votat 17 usuaris. 3 usuaris es van abstenir.

Font: www.habr.com

Afegeix comentari