Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Ман боварӣ дорам, ки ҳар касе, ки ягон бор бо он кор кардааст Нуқтаи санҷиш, шикоят ба миён омад имконнопазирии таҳрир кардани конфигуратсия аз сатри фармон. Ин махсусан барои онҳое, ки қаблан бо Cisco ASA кор кардаанд, аҷиб аст, ки дар он комилан ҳама чизро дар CLI танзим кардан мумкин аст. Бо Check Point ин баръакс аст - ҳама танзимоти амниятӣ танҳо аз интерфейси графикӣ иҷро карда шуданд. Бо вуҷуди ин, баъзе корҳоро тавассути GUI иҷро кардан комилан номувофиқ аст (ҳатто як чизи қулай ба мисли Check Point). Масалан, вазифаи илова кардани 100 ҳост ё шабакаҳои нав ба як раванди тӯлонӣ ва дилгиркунанда табдил меёбад. Барои ҳар як объект шумо бояд мушро якчанд маротиба пахш кунед ва суроғаи IP-ро ворид кунед. Айнан ҳамин чиз барои эҷоди як гурӯҳи сайтҳо ё ба таври оммавӣ фаъол/фаъол кардани имзоҳои IPS дахл дорад. Дар ин ҳолат, эҳтимолияти хатогӣ зиёд аст.

«Муъчиза» нисбатан ба наздикй руй дод. Бо нашри версияи нав Gaia R80 имконият эълон карда шуд Истифодаи API, ки барои автоматикунонии танзимот, маъмурият, назорат ва ғайра имкониятҳои васеъ мекушояд. Акнун шумо метавонед:

  • сохтани объектҳо;
  • илова ё таҳрир рӯйхати дастрасӣ;
  • фаъол / ғайрифаъол blades;
  • танзим кардани интерфейсҳои шабака;
  • насб кардани сиёсат;
  • ва бештар.

Ростӣ, ман намефаҳмам, ки ин хабар аз ҷониби Ҳабр чӣ гуна гузашт. Дар ин мақола мо ба таври мухтасар шарҳ медиҳем, ки чӣ тавр истифода бурдани API ва якчанд мисолҳои амалӣ пешкаш мекунем. Танзимоти CheckPoint бо истифода аз скриптҳо.

Ман мехоҳам фавран қайд кунам, ки API танҳо барои сервери идоракунӣ истифода мешавад. Онхое. Бе сервери идоракунӣ идора кардани шлюзҳо ҳоло ҳам ғайриимкон аст.

Принсипи кӣ метавонад ин API-ро истифода барад?

  1. Маъмурони система, ки мехоҳанд вазифаҳои конфигуратсияи муқаррарии Check Point-ро содда ё автоматӣ кунанд;
  2. Ширкатҳое, ки мехоҳанд Check Point-ро бо ҳалли дигар муттаҳид кунанд (системаҳои виртуализатсия, системаҳои чиптаҳо, системаҳои идоракунии конфигуратсия ва ғайра);
  3. Интеграторҳои система, ки мехоҳанд танзимотро стандартизатсия кунанд ё маҳсулоти иловагии марбут ба Check Point эҷод кунанд.

Схемаи маъмулӣ

Пас, биёед нақшаи маъмулиро бо Check Point тасаввур кунем:

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Чун маъмулӣ мо як дарвоза дорем (SG), сервери идоракунӣ (СМС) ва консоли администратор (SmartConsole). Дар ин ҳолат, раванди муқаррарии конфигуратсияи шлюз чунин менамояд:

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Онхое. Аввал шумо бояд дар компютери администратор кор кунед SmartConsole, ки бо он мо ба сервери идоракунӣ пайваст мешавем (СМС). Танзимоти амниятӣ дар 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, чунон ки дар расми зер нишон дода шудааст.

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Дар ин равзана шумо метавонед фавран ворид кардани фармонҳои APIро оғоз кунед.

4) Хизматрасониҳои веб. Истифодаи дархости Post HTTPS (REST API)

Ба фикри мо, ин яке аз усулхои перспективанок аст, зеро ба шумо имкон медиҳад, ки тамоми барномаҳоро дар асоси "сохта кунед" идоракунии сервери идоракунии (барои тавтология бубахшед). Дар зер мо ин усулро каме муфассалтар дида мебароем.

Барои ҷамъбаст кардан:

  1. API + cli бештар мувофиқ барои одамоне, ки ба Cisco одат кардаанд;
  2. API + shell барои татбиқи скриптҳо ва иҷрои вазифаҳои муқаррарӣ;
  3. оромии API барои автоматика.

Фаъолсозии API

Бо нобаёнӣ, API дар серверҳои идоракунӣ бо зиёда аз 4 ГБ хотираи оперативӣ ва конфигуратсияҳои мустақил бо зиёда аз 8 ГБ RAM фаъол аст. Шумо метавонед вазъиятро бо истифода аз фармон санҷед: ҳолати api

Агар маълум шавад, ки api ғайрифаъол аст, пас онро тавассути SmartConsole фаъол кардан хеле осон аст: Идора ва Танзимотҳо > Blades > API Management > Танзимоти пешрафта

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Пас нашр кунед (Publish) тағир дода, фармонро иҷро кунед api аз нав оғоз кунед.

Дархостҳои веб + Python

Барои иҷрои фармонҳои API, шумо метавонед дархостҳои вебро истифода баред Python ва китобхонахо дархостҳо, Ҷон. Умуман, сохтори дархости веб аз се қисм иборат аст:

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) Интишор ва муқаррар кардани сиёсат, иҷрои фармонро тафтиш кунед (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))

Илова бар ин, бо ёрии WebAPI шумо метавонед шабакаҳо, ҳостҳо, нақшҳои дастрасӣ ва ғайраҳоро илова ва хориҷ кунед. Пиёзҳо метавонанд фармоишӣ шаванд Антивирус, Антибот, IPS, VPN. Ҳатто бо истифода аз фармон литсензияҳоро насб кардан мумкин аст иҷро-скрипт. Ҳама фармонҳои Check Point API-ро дар ин ҷо пайдо кардан мумкин аст дар ин ҷо.

API Check Point + Postman

Инчунин барои истифода қулай Check Point Web API дар якҷоягӣ бо хаткашон. Postman дорои версияҳои мизи корӣ барои Windows, Linux ва MacOS. Илова бар ин, плагин барои Google Chrome мавҷуд аст. Ин аст он чизе ки мо истифода хоҳем кард. Аввал шумо бояд Postman-ро дар Дӯкони Google Chrome пайдо кунед ва насб кунед:

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Бо истифода аз ин утилита, мо метавонем дархостҳои вебро ба Check Point API тавлид кунем. Барои он ки ҳамаи фармонҳои API-ро дар хотир надоред, воридоти ба ном коллексияҳо (шаблонҳо) имконпазир аст, ки аллакай ҳама фармонҳои заруриро дар бар мегиранд:

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Ин аст, шумо хоҳед ёфт коллексия барои R80.10. Пас аз воридот, қолибҳои фармони API барои мо дастрас хоҳанд шуд:

Санҷиши нуқтаи R80.10 API. Идоракунӣ тавассути CLI, скриптҳо ва ғайра

Ба фикри ман, ин хеле қулай аст. Шумо метавонед бо истифода аз API Check Point зуд таҳияи барномаҳоро оғоз кунед.

Нуктаи санҷиш + Ансиб

Хаминро кайд кардан мехостам, ки вучуд дорад Фаҳмост модул барои API CheckPoint. Модул ба шумо имкон медиҳад, ки конфигуратсияҳоро идора кунед, аммо он барои ҳалли мушкилоти экзотикӣ он қадар қулай нест. Навиштани скриптҳо дар ҳама гуна забони барномасозӣ ҳалли фасеҳтар ва қулайро фароҳам меорад.

хулоса

Ин аст, ки мо эҳтимолан баррасии кӯтоҳи API Check Point-ро ба анҷом расонем. Ба назари ман, ин хусусият хеле дер интизор ва зарур буд. Пайдоиши API барои ҳам маъмурони система ва ҳам интеграторҳои система, ки бо маҳсулоти Check Point кор мекунанд, имкониятҳои васеъ мекушояд. Оркестратсия, автоматизатсия, фикру мулоҳизаҳои SIEM... ҳамааш ҳоло имконпазир аст.

PS Мақолаҳои бештар дар бораи Нуқтаи санҷиш мисли ҳамеша шумо метавонед онро дар блоги мо пайдо кунед Хабр ё дар блог дар сомона.

PSS Барои саволҳои техникии вобаста ба танзими Check Point, шумо метавонед дар ин ҷо

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Оё шумо нақшаи истифодаи API-ро доред?

  • 70,6%Ҳа 12

  • 23,5%№4

  • 5,9%Аллакай истифода 1

17 корбар овоз доданд. 3 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ