أنا متأكد من أن كل من سبق له العمل معه
في الآونة الأخيرة نسبيا ، حدثت "معجزة". مع إصدار النسخة الجديدة جايا R80 تم الإعلان عن إمكانية استخدام API، مما يفتح فرصًا كبيرة لأتمتة الإعدادات ، والإدارة ، والمراقبة ، وما إلى ذلك. الآن انت تستطيع:
- خلق الأشياء
- إضافة أو تحرير قوائم الوصول ؛
- تمكين / تعطيل الشفرات ؛
- تكوين واجهات الشبكة ؛
- تثبيت السياسات
- وأكثر من ذلك بكثير.
لأكون صادقًا ، لا أفهم كيف مرت هذه الأخبار على هبر. في هذه المقالة ، سوف نصف بإيجاز كيفية استخدام API ونقدم بعض الأمثلة العملية. إعدادات CheckPoint باستخدام البرامج النصية.
أرغب في إجراء حجز على الفور ، يتم استخدام واجهة برمجة التطبيقات لخادم الإدارة فقط. أولئك. لا يزال من المستحيل إدارة البوابات بدون خادم الإدارة.
من يمكنه الاستفادة من واجهة برمجة التطبيقات هذه؟
- مسؤولي النظام الذين يرغبون في تبسيط أو أتمتة مهام تكوين Check Point الروتينية ؛
- الشركات التي ترغب في دمج Check Point مع حلول أخرى (أنظمة المحاكاة الافتراضية ، وأنظمة التذاكر ، وأنظمة إدارة التكوين ، وما إلى ذلك) ؛
- تكامل النظام الذين يرغبون في توحيد الإعدادات أو إنشاء منتجات إضافية ذات صلة بـ Check Point.
مخطط نموذجي
وهكذا ، دعنا نتخيل مخططًا نموذجيًا باستخدام Check Point:
كالعادة لدينا بوابة (SG) ، خادم التحكم (SMS) ووحدة تحكم المشرف (SmartConsole). في هذه الحالة ، تكون عملية تكوين البوابة المعتادة كما يلي:
أولئك. تحتاج أولاً إلى التشغيل على كمبيوتر المسؤول 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، كما هو موضح في الصورة أدناه.
في هذه النافذة ، يمكنك البدء فورًا في إدخال أوامر API.
4) خدمات الويب. استخدام طلب نشر HTTPS (REST API)
في رأينا ، هذه من أكثر الطرق الواعدة ، لأن. يسمح لك "بإنشاء" تطبيقات كاملة وفقًا لـ إدارة خادم الإدارة (آسف على الحشو). سننظر في هذه الطريقة بمزيد من التفصيل أدناه.
كي تختصر:
- API + CLI أكثر ملاءمة للأشخاص الذين اعتادوا على Cisco ؛
- API + شل لتطبيق البرامج النصية وأداء المهام الروتينية ؛
- REST API للأتمتة.
تمكين API
بشكل افتراضي ، يتم تمكين واجهة برمجة التطبيقات على خوادم الإدارة التي تحتوي على أكثر من 4 جيجابايت من ذاكرة الوصول العشوائي والتكوينات المستقلة مع أكثر من 8 جيجابايت من ذاكرة الوصول العشوائي. يمكنك التحقق من الحالة باستخدام الأمر: وضع API
إذا اتضح أن واجهة برمجة التطبيقات معطلة ، فمن السهل جدًا تمكينها من خلال SmartConsole: إدارة وإعدادات> الشفرات> واجهة برمجة تطبيقات الإدارة> الإعدادات المتقدمة
ثم انشر (نشر) التغييرات وتشغيل الأمر إعادة تشغيل 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 بالتزامن مع
باستخدام هذه الأداة المساعدة ، سنكون قادرين على إنشاء طلبات الويب إلى Check Point API. من أجل عدم تذكر جميع أوامر API ، من الممكن استيراد ما يسمى المجموعات (القوالب) ، والتي تحتوي بالفعل على جميع الأوامر اللازمة:
في رأيي ، إنه مريح للغاية. يمكنك البدء في تطوير التطبيقات باستخدام Check Point API بسرعة كبيرة.
نقطة فحص + أنسبل
أود أيضًا أن أشير إلى أن هناك Ansible
إنتاج
في هذا الصدد ، ربما ، سننتهي من مراجعتنا القصيرة لواجهة برمجة تطبيقات Check Point. في رأيي ، كانت هذه الميزة ضرورية للغاية طال انتظارها. يفتح مظهر واجهة برمجة التطبيقات فرصًا واسعة جدًا لكل من مسؤولي النظام ومتكامل النظام الذين يعملون مع منتجات Check Point. التنسيق والأتمتة وتعليقات SIEM ... كل هذا ممكن الآن.
PS المزيد من المقالات حول
PSS للأسئلة الفنية المتعلقة بتكوين Check Point ، يمكنك ذلك
يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع.
هل تخطط لاستخدام API؟
-
70,6%نعم 12
-
23,5%رقم 4
-
5,9%يستخدم بالفعل 1
صوت 17 مستخدمًا. امتنع 3 مستخدما عن التصويت.
المصدر: www.habr.com