Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Համոզված եմ, որ բոլոր նրանց հետ, ովքեր երբևէ աշխատել են Check Point, բողոք է եղել հրամանի տողից կոնֆիգուրացիան խմբագրելու անհնարինությունը. Սա հատկապես տարօրինակ է նրանց համար, ովքեր նախկինում աշխատել են Cisco ASA-ի հետ, որտեղ բացարձակապես ամեն ինչ կարելի է կարգավորել CLI-ում: Check Point-ի դեպքում դա հակառակն է՝ անվտանգության բոլոր կարգավորումները կատարվել են բացառապես գրաֆիկական ինտերֆեյսից: Այնուամենայնիվ, որոշ բաներ բոլորովին անհարմար է անել GUI-ի միջոցով (նույնիսկ մեկը այնքան հարմար է, որքան Check Point-ը): Օրինակ, 100 նոր հոսթ կամ ցանց ավելացնելու խնդիրը վերածվում է երկար և հոգնեցուցիչ ընթացակարգի։ Յուրաքանչյուր օբյեկտի համար դուք պետք է մի քանի անգամ սեղմեք մկնիկի վրա և մուտքագրեք IP հասցեն: Նույնը վերաբերում է կայքերի խմբի ստեղծմանը կամ IPS ստորագրությունների զանգվածային ակտիվացմանը/անջատմանը: Այս դեպքում սխալվելու մեծ հավանականություն կա։

Համեմատաբար վերջերս տեղի ունեցավ «հրաշք». Նոր տարբերակի թողարկումով Gaia R80 հնարավորության մասին հայտարարվեց API-ի օգտագործումը, որը լայն հնարավորություններ է բացում կարգավորումների ավտոմատացման, վարչարարության, մոնիտորինգի և այլնի համար: Այժմ դուք կարող եք.

  • ստեղծել օբյեկտներ;
  • ավելացնել կամ խմբագրել մուտքի ցուցակները;
  • միացնել/անջատել սայրերը;
  • կարգավորել ցանցային միջերեսները;
  • տեղադրել քաղաքականություն;
  • եւ շատ ավելին:

Անկեղծ ասած, ես չեմ հասկանում, թե ինչպես անցավ այս լուրը Հաբրի կողմից: Այս հոդվածում մենք հակիրճ նկարագրելու ենք, թե ինչպես օգտագործել API-ն և կներկայացնենք մի քանի գործնական օրինակներ: CheckPoint-ի կարգավորումներ՝ օգտագործելով սցենարներ.

Ես կցանկանայի անմիջապես վերապահում անել, որ API-ն օգտագործվում է միայն կառավարման սերվերի համար: Նրանք. Դեռևս անհնար է կառավարել դարպասները առանց կառավարման սերվերի:

Ո՞վ կարող է սկզբունքորեն օգտագործել այս API-ն:

  1. Համակարգի ադմինիստրատորներ, ովքեր ցանկանում են պարզեցնել կամ ավտոմատացնել Check Point-ի կազմաձևման ընթացիկ առաջադրանքները.
  2. Ընկերություններ, որոնք ցանկանում են ինտեգրել Check Point-ը այլ լուծումների հետ (վիրտուալացման համակարգեր, տոմսերի համակարգեր, կոնֆիգուրացիայի կառավարման համակարգեր և այլն);
  3. Համակարգի ինտեգրատորներ, ովքեր ցանկանում են ստանդարտացնել կարգավորումները կամ ստեղծել լրացուցիչ Check Point-ի հետ կապված ապրանքներ:

Տիպիկ սխեմա

Այսպիսով, եկեք պատկերացնենք մի բնորոշ սխեմա Check Point-ով.

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Ինչպես միշտ, մենք ունենք դարպաս (SG), կառավարման սերվեր (SMS) և ադմինիստրատորի վահանակ (SmartConsole) Այս դեպքում, սովորական դարպասի կազմաձևման գործընթացը հետևյալն է.

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Նրանք. Նախ պետք է գործարկել ադմինիստրատորի համակարգչում SmartConsole, որով մենք միանում ենք կառավարման սերվերին (SMS) Անվտանգության կարգավորումները կատարվում են SMS-ում և միայն այնուհետև կիրառվում են (տեղադրման քաղաքականություն) դեպի դարպաս (SG).

Օգտագործելիս Կառավարման API, մենք հիմնականում կարող ենք բաց թողնել առաջին կետը (գործարկել SmartConsole) և օգտագործել API հրամաններ անմիջապես կառավարման սերվերին (SMS):

API-ի օգտագործման ուղիները

API-ի միջոցով կազմաձևումը խմբագրելու չորս հիմնական եղանակ կա.

1) Օգտագործելով mgmt_cli կոմունալը

Օրինակ - # mgmt_cli ավելացնել հոսթի անունը host1 ip-հասցե 192.168.2.100
Այս հրամանը գործարկվում է կառավարման սերվերի (SMS) հրամանի տողից: Կարծում եմ հրամանի շարահյուսությունը պարզ է՝ host1-ը ստեղծվում է 192.168.2.100 հասցեով։

2) Մուտքագրեք API հրամանները clish-ի միջոցով (փորձագիտական ​​ռեժիմում)

Հիմնականում ձեզ հարկավոր է ընդամենը մուտք գործել հրամանի տող (mgmt մուտք) հաշվի տակ, որն օգտագործվում է SmartConsole-ի (կամ արմատային հաշվի) միջոցով միանալու ժամանակ: Հետո կարող ես մտնել API հրամաններ (այս դեպքում կարիք չկա օգտագործել կոմունալը յուրաքանչյուր հրամանից առաջ mgmt_cli) Դուք կարող եք ստեղծել լիարժեք BASH սցենարներ. Հոսթավարի ստեղծած սցենարի օրինակ.

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

Եթե ​​հետաքրքրեց, կարող եք դիտել համապատասխան տեսանյութը.

3) SmartConsole-ի միջոցով՝ բացելով CLI պատուհանը

Ձեզ անհրաժեշտ է միայն բացել պատուհանը CLI ուղիղ -ից SmartConsole, ինչպես ցույց է տրված ստորև նկարում։

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Այս պատուհանում կարող եք անմիջապես սկսել մուտքագրել API հրամանները:

4) Վեբ ծառայություններ. Օգտագործեք HTTPS Post հարցումը (REST API)

Մեր կարծիքով, սա ամենախոստումնալից մեթոդներից մեկն է, քանի որ թույլ է տալիս «կառուցել» ամբողջական հավելվածներ՝ հիմնվելով կառավարման սերվերի կառավարում (ներողություն տավտոլոգիայի համար): Ստորև մենք կանդրադառնանք այս մեթոդին մի փոքր ավելի մանրամասն:

Ամփոփել:

  1. API + cli ավելի հարմար է այն մարդկանց համար, ովքեր սովոր են Cisco-ին;
  2. API + shell սցենարներ կիրառելու և սովորական առաջադրանքներ կատարելու համար.
  3. REST API ավտոմատացման համար։

API-ի ակտիվացում

Լռելյայնորեն, API-ն միացված է 4 ԳԲ-ից ավելի օպերատիվ հիշողություն ունեցող կառավարման սերվերներում և 8 ԳԲ-ից ավելի օպերատիվ հիշողությամբ ինքնուրույն կոնֆիգուրացիաներով: Դուք կարող եք ստուգել կարգավիճակը՝ օգտագործելով հրամանը. api կարգավիճակը

Եթե ​​պարզվի, որ api-ն անջատված է, ապա SmartConsole-ի միջոցով այն միացնելը բավականին հեշտ է. Կառավարեք և կարգավորումներ > Շեղբեր > Կառավարման API > Ընդլայնված կարգավորումներ

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Այնուհետև հրապարակեք (Հրատարակել) փոխում է և գործարկում հրամանը api-ի վերագործարկում.

Վեբ հարցումներ + Python

API հրամանները կատարելու համար կարող եք օգտագործել վեբ հարցումները՝ օգտագործելով Python և գրադարաններ հարցումներ, json. Ընդհանուր առմամբ, վեբ հարցման կառուցվածքը բաղկացած է երեք մասից.

1) Հասցե

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


2) HTTP վերնագրեր

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


3) պահանջել օգտակար բեռ

Տեքստ JSON ձևաչափով, որը պարունակում է տարբեր պարամետրեր

Տարբեր հրամաններ կանչելու օրինակ.


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

Ահա մի քանի տիպիկ առաջադրանքներ, որոնց առավել հաճախ հանդիպում եք Check Point-ը կառավարելիս:

1) Թույլտվության և դուրս գալու գործառույթների օրինակ.

Սցենար


    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) Շեղբերների միացում և ցանցի կարգավորում.

Սցենար


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) firewall կանոնների փոփոխություն.

Սցենար


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) Հավելվածի շերտի ավելացում.

Սցենար


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) Հրապարակեք և սահմանեք քաղաքականությունը, ստուգեք հրամանի կատարումը (task-id).

Սցենար


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) Ավելացնել հյուրընկալող.

Սցենար


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) Ավելացնել սպառնալիքների կանխարգելման դաշտ.

Սցենար


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) Դիտեք նիստերի ցանկը

Սցենար


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) Ստեղծեք նոր պրոֆիլ.

Սցենար


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) Փոփոխել գործողությունը IPS ստորագրության համար.

Սցենար


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) Ավելացրեք ձեր ծառայությունը.

Սցենար


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) Ավելացնել կատեգորիա, կայք կամ խումբ.

Սցենար


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

Բացի այդ, օգնությամբ Վեբ API կարող եք ավելացնել և հեռացնել ցանցեր, հոսթեր, մուտքի դերեր և այլն: Շեղբերները կարող են հարմարեցվել Հակավիրուս, հակաբոտ, IPS, VPN. Նույնիսկ հնարավոր է լիցենզիաներ տեղադրել հրամանի միջոցով run-script. Check Point API-ի բոլոր հրամանները կարելի է գտնել այստեղ այստեղ.

Check Point API + Postman

Նաև հարմար է օգտագործման համար Ստուգեք Point Web API-ն հետ համատեղ Փոստատար. Postman-ն ունի աշխատասեղանի տարբերակներ Windows-ի, Linux-ի և MacOS-ի համար: Բացի այդ, կա Google Chrome-ի համար նախատեսված հավելված: Սա այն է, ինչ մենք կօգտագործենք: Նախ պետք է գտնել Փոստմենը Google Chrome Store-ում և տեղադրել.

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Օգտագործելով այս օգտակար ծրագիրը, մենք կկարողանանք վեբ հարցումներ ստեղծել Check Point API-ին: API-ի բոլոր հրամանները չհիշելու համար կարելի է ներմուծել այսպես կոչված հավաքածուներ (կաղապարներ), որոնք արդեն պարունակում են բոլոր անհրաժեշտ հրամանները.

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Այստեղ Դուք կարող եք գտնել հավաքածու համար R80.10. Ներմուծելուց հետո API հրամանի ձևանմուշները հասանելի կդառնան մեզ՝

Check Point R80.10 API: Կառավարում CLI-ի, սցենարների և այլնի միջոցով

Իմ կարծիքով սա շատ հարմար է։ Դուք կարող եք արագ սկսել հավելվածներ մշակել՝ օգտագործելով Check Point API-ը:

Check Point + Ansible

Նշեմ նաև, որ կա Հղիություն մոդուլը CheckPoint API-ի համար: Մոդուլը թույլ է տալիս կառավարել կոնֆիգուրացիաները, սակայն այն այնքան էլ հարմար չէ էկզոտիկ խնդիրների լուծման համար։ Ծրագրավորման ցանկացած լեզվով սցենարներ գրելն ավելի ճկուն և հարմար լուծումներ է տալիս:

Արտադրողականություն

Այստեղ մենք հավանաբար կավարտենք Check Point API-ի մեր կարճ ակնարկը: Իմ կարծիքով այս հատկանիշը շատ սպասված ու անհրաժեշտ էր։ API-ի առաջացումը շատ լայն հնարավորություններ է բացում ինչպես համակարգի ադմինիստրատորների, այնպես էլ համակարգային ինտեգրատորների համար, ովքեր աշխատում են Check Point արտադրանքների հետ: Նվագախումբ, ավտոմատացում, SIEM հետադարձ կապ... ամեն ինչ այժմ հնարավոր է:

P.S. Լրացուցիչ հոդվածներ մասին Check Point ինչպես միշտ այն կարող եք գտնել մեր բլոգում Հաբր կամ բլոգում ժամը Առցանց.

P.S.S. Check Point-ի ստեղծման հետ կապված տեխնիկական հարցերի համար կարող եք այստեղ

Հարցմանը կարող են մասնակցել միայն գրանցված օգտվողները։ Մուտք գործել, խնդրում եմ:

Նախատեսու՞մ եք օգտագործել API-ը:

  • 70,6%Այո 12

  • 23,5%No4

  • 5,9%Արդեն օգտագործում է 1

Քվեարկել է 17 օգտատեր։ 3 օգտատեր ձեռնպահ է մնացել։

Source: www.habr.com

Добавить комментарий