من مطمئن هستم که همه کسانی که تا به حال با آنها کار کرده اند
یک "معجزه" نسبتاً اخیرا اتفاق افتاده است. با انتشار نسخه جدید Gaia R80 فرصت اعلام شد استفاده از API، که فرصت های گسترده ای را برای خودکارسازی تنظیمات، مدیریت، نظارت و غیره باز می کند. حالا می توانید:
- ایجاد اشیاء؛
- اضافه کردن یا ویرایش لیست های دسترسی.
- فعال/غیرفعال کردن تیغه ها؛
- پیکربندی رابط های شبکه؛
- نصب سیاست ها؛
- و خیلی بیشتر
صادقانه بگویم، من نمی فهمم چگونه این خبر از هابر گذشت. در این مقاله نحوه استفاده از API را به اختصار شرح می دهیم و چندین مثال کاربردی ارائه می دهیم. تنظیمات CheckPoint با استفاده از اسکریپت.
من می خواهم فوراً رزرو کنم که API فقط برای سرور مدیریت استفاده می شود. آن ها مدیریت دروازه ها بدون سرور مدیریت هنوز غیرممکن است.
اصولا چه کسی می تواند از این API استفاده کند؟
- مدیران سیستمی که می خواهند وظایف پیکربندی Check Point را ساده یا خودکار کنند.
- شرکت هایی که می خواهند Check Point را با راه حل های دیگر (سیستم های مجازی سازی، سیستم های بلیط، سیستم های مدیریت پیکربندی و غیره) ادغام کنند.
- یکپارچهسازهای سیستم که میخواهند تنظیمات را استاندارد کنند یا محصولات اضافی مرتبط با Check Point ایجاد کنند.
طرح معمولی
بنابراین، بیایید یک طرح معمولی با Check Point را تصور کنیم:
طبق معمول ما یک دروازه داریم (SGسرور مدیریت (SMS) و کنسول مدیریت (کنسول هوشمند). در این مورد، روند معمول پیکربندی دروازه به صورت زیر است:
آن ها ابتدا باید روی کامپیوتر مدیر اجرا کنید کنسول هوشمند، که با آن به سرور مدیریت متصل می شویم (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 را از طریق کلیش وارد کنید (در حالت متخصص)
اساسا، تنها کاری که باید انجام دهید این است که وارد خط فرمان (ورود به سیستم 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 مستقیم از کنسول هوشمند، همانطور که در تصویر زیر نشان داده شده است.
در این پنجره می توانید بلافاصله دستورات API را وارد کنید.
4) خدمات وب استفاده از درخواست ارسال HTTPS (REST API)
به نظر ما، این یکی از امیدوار کننده ترین روش ها است، زیرا به شما این امکان را می دهد که کل برنامه ها را بر اساس آن "بسازید". مدیریت سرور مدیریت (با عرض پوزش برای توتولوژی). در زیر این روش را با کمی جزئیات بیشتر بررسی خواهیم کرد.
به طور خلاصه:
- API + cli برای افرادی که به سیسکو عادت دارند مناسب تر است.
- API + پوسته برای استفاده از اسکریپت ها و انجام وظایف معمول؛
- REST API برای اتوماسیون
فعال کردن API
به طور پیش فرض، API در سرورهای مدیریتی با بیش از 4 گیگابایت رم و تنظیمات مستقل با بیش از 8 گیگابایت رم فعال است. می توانید وضعیت را با استفاده از دستور زیر بررسی کنید: وضعیت api
اگر معلوم شد که api غیرفعال است، فعال کردن آن از طریق SmartConsole بسیار آسان است: مدیریت و تنظیمات > Blades > مدیریت API > تنظیمات پیشرفته
سپس منتشر کنید (منتشر کردن) را تغییر داده و دستور را اجرا کنید راه اندازی مجدد api.
درخواست های وب + پایتون
برای اجرای دستورات API، می توانید از درخواست های وب استفاده کنید پــایتــون و کتابخانه ها درخواست, 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) انتشار و تنظیم خط مشی، بررسی اجرای دستور (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))
علاوه بر این، با کمک API وب می توانید شبکه ها، هاست ها، نقش های دسترسی و غیره را اضافه و حذف کنید. تیغه ها را می توان سفارشی کرد آنتی ویروس، آنتی بات، IPS، VPN. حتی امکان نصب لایسنس ها با استفاده از دستور وجود دارد اجرا-اسکریپت. تمام دستورات Check Point API را می توانید در اینجا پیدا کنید
Check Point API + Postman
همچنین برای استفاده راحت است Point Web API را بررسی کنید در رابطه با
با استفاده از این ابزار، ما قادر خواهیم بود درخواست های وب را برای Check Point API ایجاد کنیم. برای اینکه تمام دستورات API را به خاطر نیاورید، میتوانید مجموعههایی را وارد کنید (الگوها) که از قبل حاوی تمام دستورات لازم هستند:
به نظر من، این بسیار راحت است. با استفاده از Check Point API می توانید به سرعت شروع به توسعه برنامه ها کنید.
Check Point + Ansible
من همچنین می خواهم توجه داشته باشم که وجود دارد غیر ممکن
نتیجه
اینجاست که احتمالا بررسی کوتاه خود را از Check Point API به پایان خواهیم رساند. به نظر من این ویژگی بسیار مورد انتظار و ضروری بود. ظهور API فرصت های بسیار گسترده ای را برای مدیران سیستم و ادغام کنندگان سیستم که با محصولات Check Point کار می کنند باز می کند. ارکستراسیون، اتوماسیون، بازخورد SIEM... همه اینها اکنون امکان پذیر است.
PS مقالات بیشتر در مورد
PSS برای سوالات فنی مربوط به راه اندازی Check Point، می توانید
فقط کاربران ثبت نام شده می توانند در نظرسنجی شرکت کنند.
آیا قصد استفاده از API را دارید؟
-
٪۱۰۰بله 12
-
٪۱۰۰شماره 4
-
٪۱۰۰در حال استفاده از 1
17 کاربر رای دادند. 3 کاربر رای ممتنع دادند.
منبع: www.habr.com