Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Ég er viss um að allir sem hafa unnið með Check Point, það var kvartað yfir ómögulegt að breyta stillingunum frá skipanalínunni. Þetta er sérstaklega skrítið fyrir þá sem hafa áður unnið með Cisco ASA, þar sem nákvæmlega allt er hægt að stilla í CLI. Með Check Point er þetta öfugt - allar öryggisstillingar voru eingöngu gerðar úr grafíska viðmótinu. Sumt er hins vegar algjörlega óþægilegt að gera í gegnum GUI (jafnvel einn eins þægilegur og Check Point). Til dæmis breytist það verkefni að bæta við 100 nýjum vélum eða netkerfum í langa og leiðinlega aðferð. Fyrir hvern hlut verður þú að smella nokkrum sinnum með músinni og slá inn IP töluna. Sama gildir um að búa til hóp af síðum eða fjöldavirkja/slökkva á IPS undirskriftum. Í þessu tilviki eru miklar líkur á að mistök verði gerð.

„kraftaverk“ gerðist tiltölulega nýlega. Með útgáfu nýju útgáfunnar Gaia 80 kr tækifærið var tilkynnt API notkun, sem opnar víðtæka möguleika til að gera sjálfvirkar stillingar, stjórnun, eftirlit o.s.frv. Nú geturðu:

  • búa til hluti;
  • bæta við eða breyta aðgangslistum;
  • virkja/slökkva á blöðum;
  • stilla netviðmót;
  • setja upp stefnur;
  • og margt fleira.

Satt að segja skil ég ekki hvernig þessar fréttir fóru fram hjá Habr. Í þessari grein munum við lýsa í stuttu máli hvernig á að nota API og gefa nokkur hagnýt dæmi. CheckPoint stillingar með forskriftum.

Mig langar strax að gera fyrirvara um að API sé aðeins notað fyrir stjórnunarþjóninn. Þeir. Það er samt ómögulegt að stjórna gáttum án stjórnunarþjóns.

Hver getur notað þetta API í grundvallaratriðum?

  1. Kerfisstjórar sem vilja einfalda eða gera sjálfvirkan reglubundna stillingu Check Point;
  2. Fyrirtæki sem vilja samþætta Check Point við aðrar lausnir (sýndarkerfi, miðakerfi, stillingarstjórnunarkerfi osfrv.);
  3. Kerfissamþættingar sem vilja staðla stillingar eða búa til viðbótar vörur tengdar Check Point.

Dæmigert kerfi

Svo, við skulum ímynda okkur dæmigert kerfi með Check Point:

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Eins og venjulega höfum við hlið (SG), stjórnunarþjónn (SMS) og stjórnborði (SmartConsole). Í þessu tilviki lítur venjulega gáttarstillingarferlið svona út:

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Þeir. Fyrst þarftu að keyra á tölvu stjórnanda SmartConsole, sem við tengjumst við stjórnunarþjóninn (SMS). Öryggisstillingar eru gerðar á SMS, og aðeins þá notaðar (setja upp stefnu) að gátt (SG).

Þegar á Stjórnunarforritaskil, við getum í grundvallaratriðum sleppt fyrsta punktinum (ræst SmartConsole) og notað API skipanir beint á stjórnunarþjóninn (SMS).

Leiðir til að nota API

Það eru fjórar helstu leiðir til að breyta stillingunum með því að nota API:

1) Notaðu mgmt_cli tólið

Dæmi - # mgmt_cli bæta við hýsilsnafni host1 IP-tölu 192.168.2.100
Þessi skipun er keyrð frá stjórnunarþjóninum (SMS) skipanalínunni. Ég held að setningafræði skipunarinnar sé skýr - host1 er búin til með heimilisfanginu 192.168.2.100.

2) Sláðu inn API skipanir í gegnum clish (í sérfræðingaham)

Í grundvallaratriðum, allt sem þú þarft að gera er að skrá þig inn á skipanalínuna (mgmt innskráningu) undir reikningnum sem er notaður þegar tengst er í gegnum SmartConsole (eða rótarreikning). Þá er hægt að slá inn API skipanir (í þessu tilfelli er engin þörf á að nota tólið fyrir hverja skipun mgmt_cli). Þú getur búið til fullgild BASH handrit. Dæmi um skriftu sem gestgjafinn býr til:

Bash handrit

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

Ef þú hefur áhuga geturðu horft á samsvarandi myndband:

3) Í gegnum SmartConsole með því að opna CLI gluggann

Allt sem þú þarft að gera er að opna gluggann CLI beint frá SmartConsole, eins og sést á myndinni hér að neðan.

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Í þessum glugga geturðu strax byrjað að slá inn API skipanir.

4) Vefþjónusta. Notaðu HTTPS Post beiðni (REST API)

Að okkar mati er þetta ein vænlegasta aðferðin, því gerir þér kleift að „smíða“ heil forrit byggð á stjórnun miðlara stjórnun (afsakið tautology). Hér að neðan munum við skoða þessa aðferð aðeins nánar.

Til að draga saman:

  1. API + cli hentugra fyrir fólk sem er vant Cisco;
  2. API + skel til að beita handritum og framkvæma venjubundin verkefni;
  3. REST API fyrir sjálfvirkni.

Virkja API

Sjálfgefið er að API er virkt á stjórnunarþjónum með meira en 4GB af vinnsluminni og sjálfstæðum stillingum með meira en 8GB af vinnsluminni. Þú getur athugað stöðuna með því að nota skipunina: API stöðu

Ef það kemur í ljós að api er óvirkt, þá er frekar auðvelt að virkja það í gegnum SmartConsole: Stjórna og stillingum > Blað > Stjórnunarforritaskil > Ítarlegar stillingar

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Birtu síðan (Birta) breytist og keyrðu skipunina api endurræsa.

Vefbeiðnir + Python

Til að framkvæma API skipanir geturðu notað vefbeiðnir með því að nota Python og bókasöfn beiðnir, json. Almennt séð samanstendur uppbygging vefbeiðni úr þremur hlutum:

1) Heimilisfang

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


2) HTTP hausar

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


3) Biðja um farm

Texti á JSON sniði sem inniheldur mismunandi færibreytur

Dæmi um að kalla á ýmsar skipanir:


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

Hér eru nokkur dæmigerð verkefni sem þú lendir oftast í þegar þú stjórnar Check Point.

1) Dæmi um heimildar- og útskráningaraðgerðir:

Handrit


    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) Kveikja á blöðunum og setja upp netið:

Handrit


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) Breyting á eldveggsreglum:

Handrit


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) Bæta við umsóknarlagi:

Handrit


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) Birtu og stilltu stefnuna, athugaðu framkvæmd skipunarinnar (verkefni-id):

Handrit


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) Bæta við gestgjafa:

Handrit


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) Bættu við reit til að koma í veg fyrir ógn:

Handrit


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) Skoðaðu lista yfir fundi

Handrit


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) Búðu til nýjan prófíl:

Handrit


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) Breyttu aðgerðinni fyrir IPS undirskriftina:

Handrit


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) Bættu við þjónustunni þinni:

Handrit


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) Bættu við flokki, síðu eða hópi:

Handrit


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ð auki, með hjálp Vef-API þú getur bætt við og fjarlægt netkerfi, vélar, aðgangshlutverk o.s.frv. Hægt er að aðlaga blöð Antivirus, Antibot, IPS, VPN. Það er jafnvel hægt að setja upp leyfi með skipuninni run-script. Allar Check Point API skipanir má finna hér hér.

Check Point API + Postman

Einnig þægilegt í notkun Check Point Web API í tengslum við Póstþjónn. Postman er með skrifborðsútgáfur fyrir Windows, Linux og MacOS. Að auki er viðbót fyrir Google Chrome. Þetta er það sem við munum nota. Fyrst þarftu að finna Postman í Google Chrome Store og setja upp:

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Með því að nota þetta tól munum við geta búið til vefbeiðnir í Check Point API. Til að muna ekki allar API skipanir er hægt að flytja inn svokölluð söfn (sniðmát), sem innihalda nú þegar allar nauðsynlegar skipanir:

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Hér þú munt finna safn í R80.10. Eftir innflutning verða API skipanasniðmát aðgengileg okkur:

Check Point R80.10 API. Stjórnun í gegnum CLI, forskriftir og fleira

Að mínu mati er þetta mjög þægilegt. Þú getur fljótt byrjað að þróa forrit með því að nota Check Point API.

Check Point + Ansible

Ég vil líka taka það fram að það er till Ansible mát fyrir CheckPoint API. Einingin gerir þér kleift að stjórna stillingum, en hún er ekki svo þægileg til að leysa framandi vandamál. Að skrifa forskriftir á hvaða forritunarmáli sem er veitir sveigjanlegri og þægilegri lausnir.

Output

Þetta er þar sem við munum líklega ljúka stuttri endurskoðun okkar á Check Point API. Að mínu mati var þessi eiginleiki mjög langþráður og nauðsynlegur. Tilkoma API opnar mjög víðtæk tækifæri fyrir bæði kerfisstjóra og kerfissamþættara sem vinna með Check Point vörur. Hljómsveit, sjálfvirkni, SIEM endurgjöf... það er allt mögulegt núna.

PS Fleiri greinar um Check Point eins og alltaf er hægt að finna það á blogginu okkar Habr eða á blogginu kl Online.

PSS Fyrir tæknilegar spurningar sem tengjast uppsetningu Check Point geturðu hér

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Ætlarðu að nota API?

  • 70,6%Já12

  • 23,5%No4

  • 5,9%Notar nú þegar 1

17 notendur greiddu atkvæði. 3 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd