Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Sigurado ako nga ang tanan nga nakatrabaho sukad Check Point, adunay reklamo mahitungod sa imposibilidad sa pag-edit sa configuration gikan sa command line. Kini labi ka katingad-an alang sa mga nagtrabaho kaniadto sa Cisco ASA, diin ang tanan mahimong ma-configure sa CLI. Uban sa Check Point sukwahi kini - ang tanan nga mga setting sa seguridad gihimo lamang gikan sa graphical interface. Bisan pa, ang pipila ka mga butang hingpit nga dili kombenyente nga buhaton pinaagi sa GUI (bisan usa nga kombenyente sama sa Check Point's). Pananglitan, ang tahas sa pagdugang sa 100 ka bag-ong mga host o network nahimo nga usa ka taas ug makapakapoy nga pamaagi. Alang sa matag butang kinahanglan nimo nga i-klik ang mouse sa makadaghang higayon ug isulod ang IP address. Ang sama nga moadto alang sa paghimo sa usa ka grupo sa mga site o mass nga makapahimo / dili pagpugong sa mga pirma sa IPS. Sa kini nga kaso, adunay usa ka taas nga posibilidad nga makahimo usa ka sayup.

Usa ka "milagro" nahitabo bag-o lang. Uban sa pagpagawas sa bag-ong bersyon Gaia R80 gipahibalo ang kahigayonan Paggamit sa API, nga nagbukas sa daghang mga oportunidad alang sa pag-automate sa mga setting, pagdumala, pag-monitor, ug uban pa. Karon mahimo nimong:

  • paghimo og mga butang;
  • pagdugang o pag-edit sa mga lista sa pag-access;
  • pag-enable/disable blades;
  • i-configure ang mga interface sa network;
  • instalar nga mga palisiya;
  • ug daghan pa.

Sa tinuud, wala ko kasabot kung giunsa kini nga balita gipasa ni Habr. Niini nga artikulo atong lakbit nga ihulagway kung giunsa paggamit ang API ug maghatag daghang praktikal nga mga pananglitan. Mga setting sa CheckPoint gamit ang mga script.

Gusto ko nga maghimo dayon og reserbasyon nga ang API gigamit lamang alang sa Management server. Mga. Imposible gihapon ang pagdumala sa mga ganghaan nga wala’y server sa Pagdumala.

Kinsa ang makagamit niini nga API sa prinsipyo?

  1. Ang mga tagdumala sa sistema nga gusto nga pasimplehon o i-automate ang naandan nga mga buluhaton sa pagsumpo sa Check Point;
  2. Mga kompanya nga gustong i-integrate ang Check Point sa ubang mga solusyon (virtualization system, ticket system, configuration management systems, ug uban pa);
  3. Mga integrator sa sistema nga gusto nga i-standardize ang mga setting o maghimo dugang nga mga produkto nga may kalabotan sa Check Point.

Tipikal nga laraw

Busa, atong mahanduraw ang usa ka tipikal nga pamaagi sa Check Point:

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Sama sa naandan naa mi gateway (SG), server sa pagdumala (SMS) ug admin console (SmartConsole). Sa kini nga kaso, ang naandan nga proseso sa pag-configure sa gateway ingon niini:

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Mga. Una kinahanglan nimo nga modagan sa kompyuter sa tigdumala SmartConsole, diin kita magkonektar sa Management server (SMS). Ang mga setting sa seguridad gihimo sa SMS, ug unya gipadapat (instalar nga palisiya) ngadto sa ganghaan (SG).

Sa paggamit API sa pagdumala, mahimo natong laktawan ang unang punto (ilunsad ang SmartConsole) ug gamiton Mga sugo sa API direkta sa Management server (SMS).

Mga paagi sa paggamit sa API

Adunay upat ka nag-unang paagi sa pag-edit sa configuration gamit ang API:

1) Gamit ang mgmt_cli utility

Pananglitan - # mgmt_cli idugang ang host name host1 ip-address 192.168.2.100
Kini nga sugo gipadagan gikan sa Management Server (SMS) command line. Sa akong hunahuna ang syntax sa sugo klaro - ang host1 gihimo uban ang adres nga 192.168.2.100.

2) Pagsulod sa mga komand sa API pinaagi sa clish (sa mode nga eksperto)

Sa panguna, ang kinahanglan nimong buhaton mao ang pag-log in sa linya sa mando (mgmt login) ubos sa account nga gigamit sa pagkonektar pinaagi sa SmartConsole (o root account). Unya makasulod ka Mga sugo sa API (sa kini nga kaso dili kinahanglan nga gamiton ang utility sa wala pa ang matag mando mgmt_cli). Makahimo ka og bug-os Mga script sa BASH. Usa ka pananglitan sa usa ka script nga gihimo sa host:

Bash nga 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

Kung interesado ka, mahimo nimong tan-awon ang katugbang nga video:

3) Pinaagi sa SmartConsole pinaagi sa pag-abli sa CLI window

Ang kinahanglan nimong buhaton mao ang pag-abli sa bintana CLI diretso gikan SmartConsole, ingon sa gipakita sa hulagway sa ubos.

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Niini nga bintana, mahimo ka dayon magsugod sa pagsulod sa mga komand sa API.

4) Mga Serbisyo sa Web. Gamita ang HTTPS Post request (REST API)

Sa among opinyon, kini usa sa labing gisaad nga mga pamaagi, tungod kay nagtugot kanimo sa "pagtukod" sa tibuok nga mga aplikasyon base sa pagdumala sa pagdumala sa server (pasensya sa tautolohiya). Sa ubos atong tan-awon ang kini nga pamaagi sa usa ka gamay nga detalye.

Sa pag-summarize:

  1. API + cli mas angay alang sa mga tawo nga naanad sa Cisco;
  2. API + kabhang alang sa pagpadapat sa mga script ug paghimo sa naandan nga mga buluhaton;
  3. PAHULAY API alang sa automation.

Pag-enable sa API

Sa kasagaran, ang API gipalihok sa mga server sa pagdumala nga adunay labaw sa 4GB nga RAM ug mga standalone nga mga pag-configure nga adunay labaw sa 8GB nga RAM. Mahimo nimong susihon ang kahimtang gamit ang mando: kahimtang sa api

Kung nahibal-an nga ang api na-disable, nan dali ra nga mahimo kini pinaagi sa SmartConsole: Pagdumala ug Mga Setting > Blades > Management API > Advanced Settings

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Unya i-publish (imantala) pagbag-o ug pagdagan ang mando api restart.

Mga hangyo sa web + Python

Aron ipatuman ang mga sugo sa API, mahimo nimong gamiton ang mga hangyo sa Web gamit Python ug mga librarya Mga hangyo, json. Sa kinatibuk-an, ang istruktura sa usa ka hangyo sa web naglangkob sa tulo ka bahin:

1) Address

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


2) Mga ulohan sa HTTP

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


3) Pagpangayo payload

Teksto sa format nga JSON nga adunay lainlaing mga parameter

Pananglitan sa pagtawag sa lainlaing mga sugo:


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

Ania ang pipila ka mga tipikal nga buluhaton nga kanunay nimong masugatan kung nagdumala sa Check Point.

1) Pananglitan sa pagtugot ug pag-logout nga mga gimbuhaton:

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) Pag-on sa mga blades ug pag-set up sa network:

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) Pag-usab sa mga lagda sa firewall:

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) Pagdugang Application layer:

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) Imantala ug itakda ang polisiya, susiha ang pagpatuman sa sugo (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) Idugang ang host:

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) Pagdugang usa ka natad sa Paglikay sa Panghulga:

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) Tan-awa ang listahan sa mga sesyon

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) Paghimo og bag-ong profile:

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) Usba ang aksyon para sa IPS signature:

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) Idugang ang imong serbisyo:

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) Pagdugang usa ka kategorya, site o grupo:

Script


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

Dugang pa, uban sa tabang WebAPI mahimo nimong idugang ug tangtangon ang mga network, host, mga tahas sa pag-access, ug uban pa. Ang mga blades mahimong ipasibo Antivirus, Antibot, IPS, VPN. Posible pa nga mag-install og mga lisensya gamit ang command run-script. Tanan nga Check Point API nga mga sugo makita dinhi dinhi.

Check Point API + Postman

Kombenyente usab nga gamiton Check Point Web API inubanan sa Postman. Ang Postman adunay mga bersyon sa desktop para sa Windows, Linux ug MacOS. Dugang pa, adunay usa ka plugin alang sa Google Chrome. Kini ang atong gamiton. Una kinahanglan nimo pangitaon ang Postman sa Google Chrome Store ug i-install:

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Gamit kini nga utility, makahimo kami og mga hangyo sa Web sa Check Point API. Aron dili mahinumduman ang tanan nga mga sugo sa API, posible ang pag-import sa gitawag nga mga koleksyon (mga template), nga adunay na tanan nga kinahanglan nga mga mando:

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

kini mao ang makit-an nimo koleksyon alang sa R80.10. Pagkahuman sa pag-import, ang mga template sa command sa API mahimong magamit kanamo:

Check Point R80.10 API. Pagdumala pinaagi sa CLI, mga script ug uban pa

Sa akong opinyon, kini sayon ​​​​kaayo. Makasugod ka dayon sa paghimo og mga aplikasyon gamit ang Check Point API.

Check Point + Ansible

Gusto ko usab nga timan-an nga adunay Ansible modyul para sa CheckPoint API. Gitugotan ka sa module sa pagdumala sa mga pag-configure, apan dili kaayo kombenyente alang sa pagsulbad sa mga eksotikong problema. Ang pagsulat sa mga script sa bisan unsang programming language naghatag ug mas flexible ug sayon ​​nga mga solusyon.

konklusyon

Dinhi tingali mahuman ang among mubo nga pagrepaso sa Check Point API. Sa akong opinyon, kini nga bahin dugay na nga gipaabut ug gikinahanglan. Ang pagtungha sa API nagbukas sa lapad kaayo nga mga oportunidad alang sa mga tigdumala sa sistema ug mga integrator sa sistema nga nagtrabaho sa mga produkto sa Check Point. Orchestration, automation, feedback sa SIEM... posible na ang tanan.

P.S. Dugang nga mga artikulo bahin sa Check Point sama sa kanunay makit-an nimo kini sa among blog Si Habr o sa blog sa site.

P.S.S. Para sa teknikal nga mga pangutana nga may kalabutan sa pag-set up sa Check Point, mahimo nimo dinhi

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Nagplano ka ba nga gamiton ang API?

  • 70,6%Oo12

  • 23,5%Dili4

  • 5,9%Gigamit na ang1

17 ka tiggamit ang miboto. 3 ka tiggamit ang nag- abstain.

Source: www.habr.com

Idugang sa usa ka comment