Check Point R80.10 API. CLI, сценарийлер және т.б. арқылы басқару

Check Point R80.10 API. CLI, сценарийлер және т.б. арқылы басқару

Мен бұрыннан бірге жұмыс істегендердің барлығына сенімдімін Check Pointтуралы шағым түсті пәрмен жолынан конфигурацияны өңдеу мүмкін еместігі. Бұл әсіресе CLI-де барлығын конфигурациялауға болатын Cisco ASA-мен бұрын жұмыс істегендер үшін таңқаларлық. Тексеру нүктесінде бәрі керісінше - барлық қауіпсіздік параметрлері тек графикалық интерфейстен орындалды. Дегенмен, кейбір нәрселерді 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), басқару сервері (қысқаша хабар қызметі) және әкімші консолі (SmartConsole). Бұл жағдайда әдеттегі шлюзді конфигурациялау процесі келесідей болады:

Check Point R80.10 API. CLI, сценарийлер және т.б. арқылы басқару

Анау. Алдымен әкімшінің компьютерінде іске қосу керек SmartConsole, онымен біз басқару серверіне қосыламыз (қысқаша хабар қызметі). Қауіпсіздік параметрлері SMS-те жасалады, содан кейін ғана қолданылады (орнату саясатын) шлюзге (SG).

Пайдаланған кезде Басқару API, біз негізінен бірінші нүктені өткізіп жібере аламыз (SmartConsole іске қосыңыз) және пайдалана аламыз API пәрмендері тікелей басқару серверіне (SMS).

API қолдану жолдары

API арқылы конфигурацияны өңдеудің төрт негізгі жолы бар:

1) mgmt_cli утилитасын пайдалану

Мысал - # mgmt_cli хост атауын қосу хост1 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) CLI терезесін ашу арқылы SmartConsole арқылы

Сізге тек терезені ашу керек CLI тікелей бастап SmartConsole, төмендегі суретте көрсетілгендей.

Check Point R80.10 API. CLI, сценарийлер және т.б. арқылы басқару

Бұл терезеде API пәрмендерін енгізуді бірден бастауға болады.

4) Web Services. HTTPS Post сұрауын пайдалану (REST API)

Біздің ойымызша, бұл ең перспективалы әдістердің бірі, өйткені негізінде барлық қолданбаларды «құруға» мүмкіндік береді басқару серверін басқару (таутология үшін кешіріңіз). Төменде біз бұл әдісті біршама егжей-тегжейлі қарастырамыз.

Қорытындылай келе:

  1. API + cli Cisco-ға үйренген адамдар үшін қолайлы;
  2. API + қабық сценарийлерді қолдану және күнделікті тапсырмаларды орындау үшін;
  3. REST API автоматтандыруға арналған.

API қосу

Әдепкі бойынша, API 4 ГБ-тан астам жедел жады бар басқару серверлерінде және 8 ГБ-тан астам жедел жады бар оқшау конфигурацияларда қосылады. Күйді пәрмен арқылы тексеруге болады: api күйі

Егер api өшірілген болса, оны SmartConsole арқылы қосу өте оңай: Басқару және параметрлер > Blades > Басқару 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) Брандмауэр ережелерін өзгерту:

Сценарий


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) Саясатты жариялау және орнату, пәрменнің орындалуын тексеру (тапсырма-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))

Сонымен қатар, көмегімен WebAPI желілерді, хосттарды, қатынас рөлдерін және т.б. қосуға және жоюға болады. Пышақтарды теңшеуге болады Антивирус, антибот, IPS, VPN. Тіпті пәрмен арқылы лицензияларды орнатуға болады іске қосу сценарийі. Барлық Check Point API пәрмендерін осы жерден табуға болады осында.

Check Point API + Пошташы

Сондай-ақ пайдалануға ыңғайлы Check Point Web API -мен бірге почташы. Postman Windows, Linux және MacOS үшін жұмыс үстелі нұсқаларына ие. Сонымен қатар, Google Chrome үшін плагин бар. Міне, біз қолданатын боламыз. Алдымен Google Chrome дүкенінен пошташыны тауып, орнату керек:

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. Тексеру нүктесін орнатуға қатысты техникалық сұрақтар бойынша сіз аласыз осында

Сауалнамаға тек тіркелген пайдаланушылар қатыса алады. Кіру, өтінемін.

API пайдалануды жоспарлап отырсыз ба?

  • 70,6%Иә12

  • 23,5%№4

  • 5,9%Қолданылуда1

17 пайдаланушы дауыс берді. 3 пайдаланушы қалыс қалды.

Ақпарат көзі: www.habr.com

пікір қалдыру