Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Kuring yakin yén saha waé anu kantos damel sareng Pariksa Point, aya keluhan ngeunaan impossibility ngédit konfigurasi tina garis paréntah. Ieu hususna aneh pikeun maranéhanana anu saméméhna geus gawé bareng Cisco ASA, dimana pancen sagalana bisa ngonpigurasi dina CLI. Kalayan Check Point éta sabalikna - sadaya setélan kaamanan dilakukeun sacara éksklusif tina antarmuka grafis. Sanajan kitu, sababaraha hal anu sagemblengna pikaresepeun pikeun ngalakukeun ngaliwatan GUI (malah hiji sakumaha merenah sakumaha Check Point urang). Contona, tugas nambahkeun 100 host anyar atawa jaringan robah jadi prosedur panjang tur tedious. Pikeun unggal obyék anjeun kedah ngaklik beurit sababaraha kali sareng lebetkeun alamat IP. Sami lumaku pikeun nyieun grup loka atawa massa sangkan / nganonaktipkeun tanda tangan IPS. Dina hal ieu, aya kamungkinan luhur nyieun kasalahan.

A "kaajaiban" lumangsung rélatif anyar. Jeung sékrési versi anyar Gaia R80 kasempetan diumumkeun pamakéan API, nu muka up kasempetan lega pikeun automating setelan, administrasi, monitoring, jsb. Ayeuna anjeun tiasa:

  • nyieun objék;
  • nambahkeun atawa ngédit daptar aksés;
  • ngaktipkeun / nganonaktipkeun wilah;
  • ngonpigurasikeun interfaces jaringan;
  • kawijakan install;
  • jeung leuwih.

Sajujurna, kuring teu ngarti kumaha warta ieu diliwatan ku Habr. Dina artikel ieu kami bakal ngajelaskeun sakeudeung kumaha ngagunakeun API tur nyadiakeun sababaraha conto praktis. Setélan CheckPoint ngagunakeun skrip.

Abdi hoyong ngadamel reservasi langsung yén API dianggo ngan pikeun server Manajemén. Jelema. Masih teu mungkin pikeun ngatur gateway tanpa server Manajemén.

Saha anu tiasa nganggo API ieu prinsipna?

  1. Administrator sistem anu hoyong nyederhanakeun atanapi ngajadikeun otomatis tugas konfigurasi Check Point rutin;
  2. Perusahaan anu hoyong ngahijikeun Check Point sareng solusi anu sanés (sistem virtualisasi, sistem tikét, sistem manajemén konfigurasi, jsb.);
  3. Integrasi sistem anu hoyong ngabakukeun setélan atanapi nyiptakeun produk anu aya hubunganana sareng Check Point.

Skéma has

Janten, hayu urang bayangkeun skéma has sareng Check Point:

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Sakumaha biasa urang gaduh gateway (SG), server manajemén (SMS) jeung konsol admin (SmartConsole). Dina hal ieu, prosés konfigurasi gateway biasa sapertos kieu:

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Jelema. Mimiti anjeun kedah ngajalankeun dina komputer administrator SmartConsole, dimana urang nyambung ka server Manajemén (SMS). Setelan kaamanan dijieun dina SMS, sarta ngan lajeng dilarapkeun (kawijakan install) ka gateway (SG).

Ngagunakeun API manajemén, urang dasarna bisa skip titik kahiji (peluncuran SmartConsole) jeung pamakéan paréntah API langsung ka server Manajemén (SMS).

Cara ngagunakeun API

Aya opat cara utama pikeun ngédit konfigurasi nganggo API:

1) Ngagunakeun utiliti mgmt_cli

conto - # mgmt_cli nambahkeun ngaran host host1 ip-alamat 192.168.2.100
Paréntah ieu dijalankeun tina garis paréntah Manajemén Server (SMS). Jigana sintaksis paréntah jelas - host1 dijieun kalawan alamat 192.168.2.100.

2) Lebetkeun paréntah API via clish (dina modeu ahli)

Dasarna, sadaya anu anjeun kedah laksanakeun nyaéta log in kana garis paréntah (login mgmt) handapeun akun nu dipaké nalika nyambungkeun via SmartConsole (atawa akun root). Teras anjeun tiasa lebet paréntah API (dina hal ieu teu kedah nganggo utiliti sateuacan unggal paréntah mgmt_cli). Anjeun tiasa nyieun full-fledged skrip BASH. Conto naskah anu didamel ku host:

Aksara 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

Upami anjeun resep, anjeun tiasa nonton pidéo anu cocog:

3) Via SmartConsole ku muka jandela CLI

Sadaya anu anjeun kedah laksanakeun nyaéta muka jandela CLI langsung ti SmartConsole, sakumaha ditémbongkeun dina gambar di handap ieu.

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Dina jandela ieu, anjeun tiasa langsung ngamimitian nuliskeun paréntah API.

4) Layanan wéb. Anggo pamundut HTTPS Post (REST API)

Dina pamadegan urang, ieu téh salah sahiji metodeu paling ngajangjikeun, sabab ngidinan Anjeun pikeun "ngawangun" sakabéh aplikasi dumasar kana manajemén manajemén server (punten pikeun tautologi). Handap urang bakal kasampak di metoda ieu dina leuwih jéntré saeutik.

Pikeun nyimpulkeun:

  1. API + cli leuwih cocog pikeun jalma anu dipaké pikeun Cisco;
  2. API + cangkang pikeun nerapkeun naskah sareng ngalaksanakeun tugas rutin;
  3. sesa API pikeun automation.

Aktipkeun API

Sacara standar, API diaktipkeun dina server manajemén kalayan langkung ti 4GB RAM sareng konfigurasi mandiri sareng langkung ti 8GB RAM. Anjeun tiasa pariksa statusna nganggo paréntah: status api

Upami tétéla yén api ditumpurkeun, maka cukup gampang pikeun ngaktifkeunana via SmartConsole: Atur & Setélan> Wilah> API Manajemén> Setélan Lanjut

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Lajeng nyebarkeun (nyebarkeun) robah sarta ngajalankeun paréntah api balikan deui.

Paménta wéb + Python

Pikeun ngaéksekusi paréntah API, anjeun tiasa nganggo pamundut wéb nganggo Python jeung perpustakaan requests, json. Sacara umum, struktur pamundut wéb diwangun ku tilu bagian:

1) Alamat

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


2) Lulugu HTTP

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


3) Nyuhunkeun payload

Téks dina format JSON ngandung parameter béda

Conto pikeun nelepon sababaraha paréntah:


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

Ieu sababaraha pancén umum anu sering anjeun tepang nalika ngokolakeun Check Point.

1) Conto fungsi otorisasi sareng logout:

naskah


    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) Ngahurungkeun wilah sareng nyetél jaringan:

naskah


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) Ngarobih aturan firewall:

naskah


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) Nambahkeun lapisan Aplikasi:

naskah


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) Nyebarkeun sareng nyetél kawijakan, pariksa palaksanaan paréntah (task-id):

naskah


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) Tambahkeun host:

naskah


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) Tambahkeun widang Pencegahan Ancaman:

naskah


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) Tingali daptar sési

naskah


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) Jieun profil anyar:

naskah


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) Robah tindakan pikeun tanda tangan IPS:

naskah


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) Tambahkeun jasa anjeun:

naskah


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) Tambahkeun kategori, situs atanapi grup:

naskah


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

Sajaba ti éta, kalayan bantuan API Wéb anjeun tiasa nambihan sareng mupus jaringan, host, peran aksés, jsb. Agul bisa ngaropéa Antipirus, Antibot, IPS, VPN. Malah mungkin pikeun masang lisensi nganggo paréntah ngajalankeun-skrip. Sadaya paréntah API Check Point tiasa dipendakan di dieu di dieu.

Pariksa Point API + Tukang pos

Ogé merenah ngagunakeun Pariksa Point Web API bareng jeung Tukang pos. Tukang pos gaduh versi desktop pikeun Windows, Linux sareng MacOS. Salaku tambahan, aya plugin pikeun Google Chrome. Ieu anu bakal kami anggo. Mimiti anjeun kedah milarian tukang pos di Toko Google Chrome sareng pasang:

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Ngagunakeun utilitas ieu, urang bakal bisa ngahasilkeun requests Web ka Check Point API. Pikeun henteu émut sadaya paréntah API, anjeun tiasa ngimpor anu disebut kumpulan (témplat), anu parantos ngandung sadaya paréntah anu diperyogikeun:

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Ieu téh anjeun bakal mendakan kumpulan keur R80.10. Saatos ngimpor, témplat paréntah API bakal sayogi pikeun kami:

Pariksa Point R80.10 API. Manajemén via CLI, naskah sareng seueur deui

Dina pamanggih kuring, ieu pisan merenah. Anjeun tiasa gancang ngamimitian ngembangkeun aplikasi nganggo Check Point API.

Pariksa Point + Ansible

Abdi ogé hoyong dicatet yén aya Ansible modul pikeun CheckPoint API. modul nu ngidinan Anjeun pikeun ngatur konfigurasi, tapi teu jadi merenah pikeun ngarengsekeun masalah aheng. Nulis skrip dina basa program naon waé nyayogikeun solusi anu langkung fleksibel sareng merenah.

kacindekan

Ieu dimana urang sigana bakal ngabéréskeun ulasan pondok ngeunaan Check Point API. Dina pamanggih kuring, fitur ieu pisan lila-tunggu sarta diperlukeun. Mecenghulna API ngabuka kasempetan anu lega pisan pikeun pangurus sistem sareng integrator sistem anu damel sareng produk Check Point. Orkestrasi, otomatisasi, eupan balik SIEM ... éta sadayana mungkin ayeuna.

PS More artikel ngeunaan Pariksa Point sakumaha salawasna anjeun tiasa manggihan eta dina blog urang Habr atawa dina blog di website.

PSS Kanggo patarosan téknis anu aya hubunganana sareng nyetél Check Point, anjeun tiasa di dieu

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Naha anjeun badé nganggo API?

  • 70,6%Leres12

  • 23,5%No4

  • 5,9%Geus ngagunakeun1

17 pamaké milih. 3 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar