چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

مون کي پڪ آهي ته هر ڪنهن سان گڏ ڪم ڪيو آهي چيڪ واري پوائنٽ، بابت شڪايت هئي невозможности правки конфигурации из командной строки. اهو خاص طور تي انهن لاءِ عجيب آهي جيڪي اڳ ۾ سسڪو اي ايس اي سان ڪم ڪري چڪا آهن، جتي بلڪل هر شي CLI ۾ ترتيب ڏئي سگهجي ٿي. چيڪ پوائنٽ سان اهو ٻيو رستو آهي چوڌاري - سڀئي سيڪيورٽي سيٽنگون خاص طور تي گرافڪ انٽرفيس مان ڪيون ويون آهن. بهرحال، ڪجهه شيون مڪمل طور تي GUI ذريعي ڪرڻ ۾ مشڪل آهن (جيتوڻيڪ هڪ جيتري آسان چيڪ پوائنٽ جي). مثال طور، 100 نون ميزبانن يا نيٽ ورڪن کي شامل ڪرڻ جو ڪم ھڪ ڊگھي ۽ مشڪل عمل ۾ بدلجي ٿو. هر شئي لاءِ توهان کي مائوس کي ڪيترائي ڀيرا ڪلڪ ڪرڻو پوندو ۽ IP پتو داخل ڪرڻو پوندو. ساڳيو ئي سائيٽن جو هڪ گروپ ٺاهڻ يا IPS جي دستخط کي چالو ڪرڻ / غير فعال ڪرڻ لاءِ آهي. انهي حالت ۾، غلطي ڪرڻ جو هڪ اعلي امڪان آهي.

Относительно недавно случилось “чудо”. С выходом новой версии گيا R80 موقعي جو اعلان ڪيو ويو API استعمال، جيڪو کولي ٿو وسيع موقعن لاءِ خودڪار سيٽنگون، انتظاميه، نگراني، وغيره. هاڻي توهان ڪري سگهو ٿا:

  • شيون ٺاهيو؛
  • добавлять или править access-list-ы;
  • включать/отключать блейды;
  • نيٽ ورڪ انٽرفيس ترتيب ڏيڻ؛
  • پاليسين کي انسٽال ڪرڻ؛
  • ۽ گهڻو ڪجهه.

Если честно, не понимаю как эта новость прошла мимо Хабра. В данной статье мы вкратце опишем как пользоваться API и приведем несколько практических примеров اسڪرپٽ استعمال ڪندي پوائنٽ سيٽنگون چيڪ ڪريو.

Сразу хотел бы оговориться, API используется только для Management сервера. Т.е. управлять шлюзами без Management сервера по прежнему невозможно.

ڪير هن API کي اصول ۾ استعمال ڪري سگهي ٿو؟

  1. Системные администраторы, которые хотят упростить или автоматизировать рутинные задачи по настройке Check Point;
  2. ڪمپنيون جيڪي ٻين حلن سان چيڪ پوائنٽ کي ضم ڪرڻ چاهيندا آهن (ورچوئلائيزيشن سسٽم، ٽڪيٽ سسٽم، ترتيب واري انتظاماتي نظام، وغيره)؛
  3. سسٽم انٽيگريٽر جيڪي سيٽنگون معياري ڪرڻ يا اضافي چيڪ پوائنٽ سان لاڳاپيل مصنوعات ٺاهڻ چاهيندا آهن.

عام اسڪيم

تنهن ڪري، اچو ته تصور ڪريون هڪ عام اسڪيم سان چيڪ پوائنٽ:

چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

هميشه وانگر اسان وٽ هڪ گيٽ وي (SG)، انتظام سرور (ايس ايم ايس) ۽ ايڊمن ڪنسول (SmartConsole). При этом обычный процесс настройки шлюза выглядит следующим образом:

چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

اهي. پهرين توهان کي منتظم جي ڪمپيوٽر تي هلائڻ جي ضرورت آهي SmartConsole، جنهن سان اسان مينيجمينٽ سرور سان ڳنڍيون ٿا (ايس ايم ايس). سيڪيورٽي سيٽنگون ايس ايم ايس تي ڪيون وينديون آهن، ۽ صرف پوء لاڳو ٿينديون آهن (install policyگيٽ وي ڏانهن (SG).

استعمال ڪندي انتظام API, мы в принципе можем пропустить первый пункт (запуск SmartConsole) и применять API حڪم سڌو سنئون مئنيجمينٽ سرور (SMS) ڏانهن.

API استعمال ڪرڻ جا طريقا

Для правки конфигурации с помощью API есть четыре основных способа:

1) استعمال ڪندي mgmt_cli افاديت

مثال - # mgmt_cli شامل ڪريو ميزبان جو نالو host1 ip-address 192.168.2.100
هي حڪم مئنيجمينٽ سرور (SMS) ڪمانڊ لائن مان هلندو آهي. منهنجو خيال آهي ته حڪم جو نحو واضح آهي - host1 ايڊريس 192.168.2.100 سان ٺهيل آهي.

2) ڪلش ذريعي API حڪم داخل ڪريو (ماهر موڊ ۾)

بنيادي طور تي، توهان سڀني کي ڪرڻ جي ضرورت آهي لاگ ان ۾ ڪمانڊ لائن (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) ويب خدمتون. استعمال ڪريو HTTPS پوسٽ جي درخواست (REST API)

На наш взгляд это один из самых перспективных способов, т.к. позволяет “строить” целые приложения по انتظام سرور جو انتظام (معاف ڪجو ٽوٽولوجي لاءِ). هيٺ اسين هن طريقي کي ٿورو وڌيڪ تفصيل سان ڏسندا.

اختصار ڪرڻ:

  1. API + ڪلائي больше подходит для людей, кто привык к Cisco;
  2. API + شيل لکت لاڳو ڪرڻ ۽ معمولي ڪمن کي انجام ڏيڻ لاءِ؛
  3. REST API خودڪار لاء.

API کي فعال ڪرڻ

ڊفالٽ طور، API 4GB کان وڌيڪ ريم سان ۽ 8GB ريم کان وڌيڪ اسٽينڊالون ترتيبن سان مينيجمينٽ سرورز تي فعال ٿيل آھي. توھان حڪم استعمال ڪندي حالت چيڪ ڪري سگھو ٿا: api اسٽيٽس

جيڪڏهن اهو ظاهر ٿئي ٿو ته api غير فعال آهي، پوء ان کي SmartConsole ذريعي فعال ڪرڻ بلڪل آسان آهي: انتظام ۽ سيٽنگون> بليڊ> انتظام API> اعليٰ سيٽنگون

چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

پوء شايع ڪريو (شايع ڪرڻ) تبديل ڪريو ۽ حڪم هلائي api restart.

ويب درخواستون + پٿون

Для выполнения API-команд можно использовать Web-запросы с применением Python ۽ لائبريريون درخواستون, جسن. В общем виде структура web-запроса состоит из трех частей:

1)Адрес

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


2) HTTP Headers

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

ان کان علاوه، مدد سان ويب API توھان شامل ڪري سگھو ٿا نيٽ ورڪ، ميزبان، رسائي ڪردار، وغيره. Blades ترتيب ڏئي سگهجي ٿو اينٽي وائرس، اينٽي بوٽ، آئي پي ايس، وي پي اين. اهو حڪم استعمال ڪندي لائسنس کي نصب ڪرڻ ممڪن آهي رن-اسڪرپٽ. سڀ چيڪ پوائنٽ API حڪم ملي سگھن ٿا هتي هتي.

Check Point API + Postman

پڻ استعمال ڪرڻ آسان Check Point Web API سان گڏ پوسٽ. پوسٽمن وٽ ونڊوز، لينڪس ۽ MacOS لاءِ ڊيسڪ ٽاپ ورزن آهن. ان کان سواء، گوگل ڪروم لاء هڪ پلگ ان آهي. اھو اھو آھي جيڪو اسان استعمال ڪنداسين. پهرين توهان کي گوگل ڪروم اسٽور ۾ پوسٽ مين ڳولڻ جي ضرورت آهي ۽ انسٽال ڪريو:

چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

هن افاديت کي استعمال ڪندي، اسان چيڪ پوائنٽ API ڏانهن ويب درخواستون ٺاهي سگهنداسين. سڀني API حڪمن کي ياد نه ڪرڻ لاء، اهو ممڪن آهي ته نام نهاد مجموعا (ٽيمپليٽس) درآمد ڪرڻ، جيڪي اڳ ۾ ئي سڀني ضروري حڪمن تي مشتمل آهن:

چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

اهو آهي توهان ڳوليندا جمع لاء R80.10. درآمد ڪرڻ کان پوء، API حڪم ٽيمپليٽس اسان لاء دستياب ٿي ويندا.

چيڪ پوائنٽ R80.10 API. CLI ذريعي ڪنٽرول، اسڪرپٽ ۽ وڌيڪ

منهنجي خيال ۾، اهو تمام آسان آهي. توھان جلدي شروع ڪري سگھوٿا ڊولپمينٽ ايپليڪيشن استعمال ڪندي چيڪ پوائنٽ API.

چيڪ پوائنٽ + جوابي

مان پڻ نوٽ ڪرڻ چاهيان ٿو ته اتي آهي ناھي ماڊل для CheckPoint API. Модуль позволяет управлять конфигурациями, но он не так удобен для решения экзотических задач. Написание скриптов на любом языке программирования дает более гибкие и удобные решения.

ٿڪل

هي اهو آهي جتي اسان شايد اسان جو مختصر جائزو مڪمل ڪنداسين چيڪ پوائنٽ API. منهنجي خيال ۾، هي مضمون تمام ڊگهو انتظار ۽ ضروري هو. API جو اڀرڻ ٻنهي سسٽم ايڊمنسٽريٽرن ۽ سسٽم انٽيگريٽرز لاءِ تمام وسيع موقعا کولي ٿو جيڪي چيڪ پوائنٽ پروڊڪٽس سان ڪم ڪن ٿا. آرڪيسٽريشن، آٽوميشن، SIEM موٽ... اهو سڀ ڪجهه هاڻي ممڪن آهي.

پي ايس بابت وڌيڪ مضمون چيڪ واري پوائنٽ هميشه وانگر توهان ان کي اسان جي بلاگ تي ڳولي سگهو ٿا حبر или в блоге на сайте.

PSS چيڪ پوائنٽ قائم ڪرڻ سان لاڳاپيل ٽيڪنيڪل سوالن لاءِ، توهان ڪري سگهو ٿا هتي

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

Планируете ли вы использовать API?

  • 70,6٪ها 12

  • 23,5٪نمبر 4

  • 5,9٪اڳ ۾ ئي استعمال ڪري رهيو آهي 1

17 صارفين ووٽ ڪيو. 3 استعمال ڪندڙن کي روڪيو ويو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو