تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

أنا متأكد من أن كل من سبق له العمل معه نقطة تفتيش، كان هناك شكوى حول عدم القدرة على تحرير التكوين من سطر الأوامر. يعد هذا أمرًا شرسًا بشكل خاص لأولئك الذين عملوا سابقًا مع Cisco ASA ، حيث يمكن تكوين كل شيء في CLI. في Check Point ، العكس هو الصحيح - تم تنفيذ جميع إعدادات الأمان حصريًا من الواجهة الرسومية. ومع ذلك ، فإن بعض الأشياء غير مريحة تمامًا للقيام بها من خلال واجهة المستخدم الرسومية (حتى لو كانت مريحة مثل Check Point). على سبيل المثال ، تتحول مهمة إضافة 100 مضيف أو شبكة جديدة إلى إجراء طويل ومضجر. لكل كائن ، سيكون عليك النقر بالماوس عدة مرات وإدخال عنوان IP. الأمر نفسه ينطبق على إنشاء مجموعة من المواقع أو تمكين / تعطيل توقيعات IPS. في هذه الحالة ، هناك احتمال كبير لارتكاب خطأ.

في الآونة الأخيرة نسبيا ، حدثت "معجزة". مع إصدار النسخة الجديدة جايا R80 تم الإعلان عن إمكانية استخدام API، مما يفتح فرصًا كبيرة لأتمتة الإعدادات ، والإدارة ، والمراقبة ، وما إلى ذلك. الآن انت تستطيع:

  • خلق الأشياء
  • إضافة أو تحرير قوائم الوصول ؛
  • تمكين / تعطيل الشفرات ؛
  • تكوين واجهات الشبكة ؛
  • تثبيت السياسات
  • وأكثر من ذلك بكثير.

لأكون صادقًا ، لا أفهم كيف مرت هذه الأخبار على هبر. في هذه المقالة ، سوف نصف بإيجاز كيفية استخدام API ونقدم بعض الأمثلة العملية. إعدادات CheckPoint باستخدام البرامج النصية.

أرغب في إجراء حجز على الفور ، يتم استخدام واجهة برمجة التطبيقات لخادم الإدارة فقط. أولئك. لا يزال من المستحيل إدارة البوابات بدون خادم الإدارة.

من يمكنه الاستفادة من واجهة برمجة التطبيقات هذه؟

  1. مسؤولي النظام الذين يرغبون في تبسيط أو أتمتة مهام تكوين Check Point الروتينية ؛
  2. الشركات التي ترغب في دمج Check Point مع حلول أخرى (أنظمة المحاكاة الافتراضية ، وأنظمة التذاكر ، وأنظمة إدارة التكوين ، وما إلى ذلك) ؛
  3. تكامل النظام الذين يرغبون في توحيد الإعدادات أو إنشاء منتجات إضافية ذات صلة بـ Check Point.

مخطط نموذجي

وهكذا ، دعنا نتخيل مخططًا نموذجيًا باستخدام Check Point:

تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

كالعادة لدينا بوابة (SG) ، خادم التحكم (SMS) ووحدة تحكم المشرف (SmartConsole). في هذه الحالة ، تكون عملية تكوين البوابة المعتادة كما يلي:

تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

أولئك. تحتاج أولاً إلى التشغيل على كمبيوتر المسؤول SmartConsole، الذي نتصل به بخادم الإدارة (SMS). يتم تنفيذ إعدادات الأمان على الرسائل القصيرة ، وعندها فقط يتم تطبيقها (تثبيت السياسة) إلى البوابة (SG).

عند استخدام API الإدارة، يمكننا بشكل أساسي تخطي الخطوة الأولى (بدء تشغيل SmartConsole) والتقديم أوامر API مباشرة إلى خادم الإدارة (SMS).

طرق استخدام API

هناك أربع طرق رئيسية لتحرير التكوين باستخدام واجهة برمجة التطبيقات:

1) استخدام الأداة المساعدة mgmt_cli

مثال - # mgmt_cli أضف اسم المضيف host1 ip-address 192.168.2.100
يتم تشغيل هذا الأمر من سطر الأوامر Management Server (SMS). أعتقد أن صيغة الأمر واضحة - يتم إنشاء host1 بالعنوان 192.168.2.100.

2) أدخل أوامر API عبر clish (في وضع الخبير)

في الأساس ، كل ما عليك فعله هو تسجيل الدخول في سطر الأوامر (mgmt تسجيل الدخول) ضمن الحساب المستخدم عند الاتصال عبر SmartConsole (أو حساب الجذر). ثم يمكنك الدخول بالفعل أوامر API (في هذه الحالة ، ليست هناك حاجة لاستخدام الأداة المساعدة قبل كل أمر mgmt_cli). يمكنك إنشاء كاملة البرامج النصية 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 + CLI أكثر ملاءمة للأشخاص الذين اعتادوا على Cisco ؛
  2. API + شل لتطبيق البرامج النصية وأداء المهام الروتينية ؛
  3. REST API للأتمتة.

تمكين API

بشكل افتراضي ، يتم تمكين واجهة برمجة التطبيقات على خوادم الإدارة التي تحتوي على أكثر من 4 جيجابايت من ذاكرة الوصول العشوائي والتكوينات المستقلة مع أكثر من 8 جيجابايت من ذاكرة الوصول العشوائي. يمكنك التحقق من الحالة باستخدام الأمر: وضع API

إذا اتضح أن واجهة برمجة التطبيقات معطلة ، فمن السهل جدًا تمكينها من خلال SmartConsole: إدارة وإعدادات> الشفرات> واجهة برمجة تطبيقات الإدارة> الإعدادات المتقدمة

تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

ثم انشر (نشر) التغييرات وتشغيل الأمر إعادة تشغيل API.

طلبات الويب + بيثون

لتنفيذ أوامر API ، يمكنك استخدام طلبات الويب باستخدام بايثون والمكتبات طلبات, جسون. بشكل عام ، تتكون بنية طلب الويب من ثلاثة أجزاء:

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) قم بنشر السياسة وتثبيتها ، وتحقق من تنفيذ الأمر (معرف المهمة):

سيناريو


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

بالإضافة إلى ذلك ، بمساعدة واجهة برمجة تطبيقات الويب يمكنك إضافة وإزالة الشبكات والمضيفين والوصول إلى الأدوار وما إلى ذلك. يمكن تكوين الشفرات مضاد فيروسات ، Antibot ، IPS ، VPN. من الممكن أيضًا تثبيت التراخيص باستخدام الأمر النصي تشغيل. يمكن العثور على جميع أوامر Check Point API هنا.

واجهة برمجة تطبيقات Check Point + ساعي البريد

كما أنها مريحة للاستخدام تحقق من Point Web API بالتزامن مع ساعي البريد. يحتوي Postman على إصدارات سطح المكتب لأنظمة Windows و Linux و MacOS. بالإضافة إلى ذلك ، هناك مكون إضافي لـ Google Chrome. سوف نستخدمها. تحتاج أولاً إلى العثور على ساعي البريد في متجر Google Chrome وتثبيته:

تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

باستخدام هذه الأداة المساعدة ، سنكون قادرين على إنشاء طلبات الويب إلى Check Point API. من أجل عدم تذكر جميع أوامر API ، من الممكن استيراد ما يسمى المجموعات (القوالب) ، والتي تحتوي بالفعل على جميع الأوامر اللازمة:

تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

ومن سوف تجد مجموعة شتاء XNUMX إلى RX450. بعد الاستيراد ، ستصبح قوالب أوامر API متاحة لنا:

تحقق من نقطة R80.10 API. تحكم عبر CLI والنصوص والمزيد

في رأيي ، إنه مريح للغاية. يمكنك البدء في تطوير التطبيقات باستخدام Check Point API بسرعة كبيرة.

نقطة فحص + أنسبل

أود أيضًا أن أشير إلى أن هناك Ansible وحدة لـ CheckPoint API. تسمح لك الوحدة بإدارة التكوينات ، ولكنها ليست ملائمة جدًا لحل المشكلات الغريبة. توفر كتابة البرامج النصية بأي لغة برمجة حلولاً أكثر مرونة وملاءمة.

إنتاج

في هذا الصدد ، ربما ، سننتهي من مراجعتنا القصيرة لواجهة برمجة تطبيقات Check Point. في رأيي ، كانت هذه الميزة ضرورية للغاية طال انتظارها. يفتح مظهر واجهة برمجة التطبيقات فرصًا واسعة جدًا لكل من مسؤولي النظام ومتكامل النظام الذين يعملون مع منتجات Check Point. التنسيق والأتمتة وتعليقات SIEM ... كل هذا ممكن الآن.

PS المزيد من المقالات حول نقطة تفتيش كما هو الحال دائمًا يمكنك العثور عليه في مدونتنا هبر أو على المدونة على الانترنت.

PSS للأسئلة الفنية المتعلقة بتكوين Check Point ، يمكنك ذلك هنا

يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. تسجيل الدخول، من فضلك.

هل تخطط لاستخدام API؟

  • 70,6%نعم 12

  • 23,5%رقم 4

  • 5,9%يستخدم بالفعل 1

صوت 17 مستخدمًا. امتنع 3 مستخدما عن التصويت.

المصدر: www.habr.com

إضافة تعليق