Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Esmu pārliecināts, ka visi, kas kādreiz ir strādājuÅ”i ar Check Point, bija sÅ«dzÄ«ba par konfigurācijas rediģēŔanas neiespējamÄ«ba no komandrindas. ÄŖpaÅ”i dÄ«vaini tas ir tiem, kas iepriekÅ” strādājuÅ”i ar Cisco ASA, kur pilnÄ«gi visu var konfigurēt CLI. Ar Check Point ir otrādi - visi droŔības iestatÄ«jumi tika veikti tikai no grafiskā interfeisa. Tomēr dažas lietas ir pilnÄ«gi neērti veikt, izmantojot GUI (pat tādu, kas ir tik ērta kā Check Point). Piemēram, uzdevums pievienot 100 jaunus saimniekdatorus vai tÄ«klus pārvērÅ”as par ilgu un nogurdinoÅ”u procedÅ«ru. Katram objektam bÅ«s vairākas reizes jānoklikŔķina ar peli un jāievada IP adrese. Tas pats attiecas uz vietņu grupas izveidi vai IPS parakstu masveida iespējoÅ”anu/atspējoÅ”anu. Å ajā gadÄ«jumā ir liela iespēja kļūdÄ«ties.

"BrÄ«nums" notika salÄ«dzinoÅ”i nesen. LÄ«dz ar jaunās versijas izlaiÅ”anu Gaia R80 iespēja tika paziņota API lietojums, kas paver plaÅ”as iespējas automatizēt iestatÄ«jumus, administrÄ“Å”anu, uzraudzÄ«bu utt. Tagad Tu vari:

  • izveidot objektus;
  • pievienot vai rediģēt piekļuves sarakstus;
  • iespējot/atspējot asmeņus;
  • konfigurēt tÄ«kla saskarnes;
  • instalēt politikas;
  • Šø Š¼Š½Š¾Š³Š¾Šµ Š“руŠ³Š¾Šµ.

GodÄ«gi sakot, es nesaprotu, kā Ŕīs ziņas tika nodotas Habram. Å ajā rakstā mēs Ä«si aprakstÄ«sim, kā lietot API, un sniegsim vairākus praktiskus piemērus. CheckPoint iestatÄ«jumi, izmantojot skriptus.

Es vēlos nekavējoties rezervēt, ka API tiek izmantota tikai pārvaldības serverim. Tie. Joprojām nav iespējams pārvaldīt vārtejas bez pārvaldības servera.

KurŔ principā var izmantot Ŕo API?

  1. Sistēmas administratori, kuri vēlas vienkārÅ”ot vai automatizēt ikdienas Check Point konfigurācijas uzdevumus;
  2. Uzņēmumi, kas vēlas integrēt Check Point ar citiem risinājumiem (virtualizācijas sistēmām, biļeÅ”u sistēmām, konfigurācijas pārvaldÄ«bas sistēmām utt.);
  3. Sistēmas integratori, kuri vēlas standartizēt iestatījumus vai izveidot papildu ar Check Point saistītus produktus.

Tipiska shēma

Tātad, iedomāsimies tipisku shēmu ar Check Point:

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Kā parasti mums ir vārteja (SG), pārvaldības serveris (SMS) un administratora konsole (SmartConsole). Šajā gadījumā parastais vārtejas konfigurācijas process izskatās Ŕādi:

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Tie. Vispirms jums ir jāpalaiž administratora datorā SmartConsole, ar kuru mēs izveidojam savienojumu ar pārvaldÄ«bas serveri (SMS). DroŔības iestatÄ«jumi tiek veikti Ä«sziņā un tikai pēc tam tiek piemēroti (instalÄ“Å”anas politika) uz vārteju (SG).

Lietojot PārvaldÄ«bas API, mēs bÅ«tÄ«bā varam izlaist pirmo punktu (palaist SmartConsole) un izmantot API komandas tieÅ”i uz pārvaldÄ«bas serveri (SMS).

API izmantoŔanas veidi

Ir četri galvenie veidi, kā rediģēt konfigurāciju, izmantojot API:

1) Izmantojot utilītu mgmt_cli

Piemērs - # mgmt_cli pievienot resursdatora nosaukumu host1 ip-adrese 192.168.2.100
Šī komanda tiek palaista no Management Server (SMS) komandrindas. Es domāju, ka komandas sintakse ir skaidra - host1 tiek izveidots ar adresi 192.168.2.100.

2) Ievadiet API komandas, izmantojot clish (eksperta režīmā)

BÅ«tÄ«bā viss, kas jums jādara, ir jāpiesakās komandrindā (mgmt pieteikÅ”anās) zem konta, kas tiek izmantots, veidojot savienojumu, izmantojot SmartConsole (vai saknes kontu). Tad jÅ«s varat iekļūt API komandas (Å”ajā gadÄ«jumā pirms katras komandas nav jāizmanto utilÄ«ta mgmt_cli). JÅ«s varat izveidot pilnvērtÄ«gu BASH skripti. Skripta piemērs, ko izveido saimniekdators:

Bash skripts

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

Ja jÅ«s interesē, varat noskatÄ«ties atbilstoÅ”o video:

3) Izmantojot SmartConsole, atverot CLI logu

Viss, kas jums jādara, ir atvērt logu CLI tieÅ”i no SmartConsole, kā parādÄ«ts zemāk esoÅ”ajā attēlā.

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Šajā logā varat nekavējoties sākt ievadīt API komandas.

4) tÄ«mekļa pakalpojumi. Izmantojiet HTTPS pasta pieprasÄ«jumu (REST API)

MÅ«suprāt, Ŕī ir viena no daudzsoloŔākajām metodēm, jo ļauj ā€œveidotā€ visas lietojumprogrammas, pamatojoties uz pārvaldÄ«bas servera vadÄ«ba (atvainojos par tautoloÄ£iju). Tālāk mēs aplÅ«kosim Å”o metodi nedaudz sÄ«kāk.

Apkopot:

  1. API + klip vairāk piemērots cilvēkiem, kuri ir pieraduÅ”i pie Cisco;
  2. API + apvalks skriptu pielietoŔanai un rutīnas uzdevumu veikŔanai;
  3. REST API automatizācijai.

API iespējoÅ”ana

Pēc noklusējuma API ir iespējota pārvaldÄ«bas serveros ar vairāk nekā 4 GB RAM un savrupām konfigurācijām ar vairāk nekā 8 GB RAM. Statusu var pārbaudÄ«t, izmantojot komandu: api statuss

Ja izrādās, ka api ir atspējota, to ir diezgan viegli iespējot, izmantojot SmartConsole: Pārvaldīt un iestatījumi > Asmeņi > Pārvaldības API > Papildu iestatījumi

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Pēc tam publicējiet (Publicēt) izmaiņas un palaidiet komandu api restart.

Tīmekļa pieprasījumi + Python

Lai izpildītu API komandas, varat izmantot tīmekļa pieprasījumus, izmantojot Pitons un bibliotēkas pieprasījumi, Džons. Kopumā tīmekļa pieprasījuma struktūra sastāv no trim daļām:

1) Adrese

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


2) HTTP galvenes

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


3) Pieprasīt lietderīgo slodzi

Teksts JSON formātā, kas satur dažādus parametrus

Piemērs dažādu komandu izsaukÅ”anai:


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

Šeit ir daži tipiski uzdevumi, ar kuriem jūs visbiežāk saskaraties, administrējot Check Point.

1) Autorizācijas un atteikÅ”anās funkciju piemērs:

Skripts


    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) Asmeņu ieslēgÅ”ana un tÄ«kla iestatÄ«Å”ana:

Skripts


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) Ugunsmūra noteikumu maiņa:

Skripts


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) Lietojumprogrammas slāņa pievienoÅ”ana:

Skripts


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) Publicējiet un iestatiet politiku, pārbaudiet komandas izpildi (task-id):

Skripts


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) Pievienojiet saimniekdatoru:

Skripts


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) Pievienojiet draudu novērÅ”anas lauku:

Skripts


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) Skatiet sesiju sarakstu

Skripts


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) Izveidojiet jaunu profilu:

Skripts


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) Mainiet darbību IPS parakstam:

Skripts


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) Pievienojiet savu pakalpojumu:

Skripts


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) Pievienojiet kategoriju, vietni vai grupu:

Skripts


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

Turklāt ar palÄ«dzÄ«bu TÄ«mekļa API varat pievienot un noņemt tÄ«klus, saimniekdatorus, piekļuves lomas utt. Asmeņus var pielāgot AntivÄ«russ, Antibots, IPS, VPN. Ir pat iespējams instalēt licences, izmantojot komandu palaist-skriptu. Visas Check Point API komandas var atrast Å”eit Å”eit.

Check Point API + pastnieks

Arī ērti lietojams Check Point Web API saistībā ar Pastnieks. Pastniekam ir darbvirsmas versijas operētājsistēmai Windows, Linux un MacOS. Turklāt ir pieejams Google Chrome spraudnis. Tas ir tas, ko mēs izmantosim. Vispirms Google Chrome veikalā jāatrod Postman un jāinstalē:

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Izmantojot Å”o utilÄ«tu, mēs varēsim Ä£enerēt tÄ«mekļa pieprasÄ«jumus Check Point API. Lai neatcerētos visas API komandas, ir iespējams importēt tā sauktās kolekcijas (veidnes), kurās jau ir visas nepiecieÅ”amās komandas:

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Å eit jÅ«s atradÄ«siet vākÅ”ana par R80.10. Pēc importÄ“Å”anas mums bÅ«s pieejamas API komandu veidnes:

Check Point R80.10 API. Pārvaldība, izmantojot CLI, skriptus un daudz ko citu

Manuprāt, tas ir ļoti ērti. Varat ātri sākt izstrādāt lietojumprogrammas, izmantojot Check Point API.

Check Point + Ansible

Es arÄ« vēlos atzÄ«mēt, ka ir Iespējams modulis CheckPoint API. Modulis ļauj pārvaldÄ«t konfigurācijas, taču tas nav tik ērti eksotisku problēmu risināŔanai. Skriptu rakstÄ«Å”ana jebkurā programmÄ“Å”anas valodā nodroÅ”ina elastÄ«gākus un ērtākus risinājumus.

secinājums

Å eit mēs, iespējams, pabeigsim savu Ä«so Check Point API pārskatu. Manuprāt, Ŕī funkcija bija ļoti ilgi gaidÄ«ta un nepiecieÅ”ama. API parādÄ«Å”anās paver ļoti plaÅ”as iespējas gan sistēmu administratoriem, gan sistēmu integratoriem, kas strādā ar Check Point produktiem. OrÄ·estrācija, automatizācija, SIEM atsauksmes... tas viss tagad ir iespējams.

P.S. Vairāk rakstu par Check Point kā vienmēr to var atrast mÅ«su emuārā Habr vai emuārā plkst TieÅ”saistē.

P.S.S. Ja jums ir tehniski jautājumi, kas saistīti ar Check Point iestatīŔanu, varat Ŕeit

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Vai plānojat izmantot API?

  • 70,6%Jā 12

  • 23,5%Nr.4

  • 5,9%Jau izmanto 1

Nobalsoja 17 lietotāji. 3 lietotāji atturējās.

Avots: www.habr.com

Pievieno komentāru