Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

من مطمئن هستم که همه کسانی که تا به حال با آنها کار کرده اند Check Point است.، شکایتی در مورد وجود داشت عدم امکان ویرایش پیکربندی از خط فرمان. این به ویژه برای کسانی که قبلاً با Cisco ASA کار کرده‌اند عجیب است، جایی که کاملاً همه چیز را می‌توان در CLI پیکربندی کرد. با Check Point برعکس است - تمام تنظیمات امنیتی منحصراً از رابط گرافیکی انجام می شود. با این حال، انجام برخی کارها از طریق رابط کاربری گرافیکی کاملاً ناخوشایند است (حتی یکی به راحتی Check Point). به عنوان مثال، کار اضافه کردن 100 هاست یا شبکه جدید به یک رویه طولانی و خسته کننده تبدیل می شود. برای هر شی باید چندین بار روی ماوس کلیک کنید و آدرس IP را وارد کنید. همین امر در مورد ایجاد گروهی از سایت ها یا فعال/غیرفعال کردن انبوه امضاهای IPS نیز صدق می کند. در این صورت احتمال اشتباه زیاد است.

یک "معجزه" نسبتاً اخیرا اتفاق افتاده است. با انتشار نسخه جدید Gaia R80 فرصت اعلام شد استفاده از API، که فرصت های گسترده ای را برای خودکارسازی تنظیمات، مدیریت، نظارت و غیره باز می کند. حالا می توانید:

  • ایجاد اشیاء؛
  • اضافه کردن یا ویرایش لیست های دسترسی.
  • فعال/غیرفعال کردن تیغه ها؛
  • پیکربندی رابط های شبکه؛
  • نصب سیاست ها؛
  • و خیلی بیشتر

صادقانه بگویم، من نمی فهمم چگونه این خبر از هابر گذشت. در این مقاله نحوه استفاده از API را به اختصار شرح می دهیم و چندین مثال کاربردی ارائه می دهیم. تنظیمات CheckPoint با استفاده از اسکریپت.

من می خواهم فوراً رزرو کنم که API فقط برای سرور مدیریت استفاده می شود. آن ها مدیریت دروازه ها بدون سرور مدیریت هنوز غیرممکن است.

اصولا چه کسی می تواند از این API استفاده کند؟

  1. مدیران سیستمی که می خواهند وظایف پیکربندی Check Point را ساده یا خودکار کنند.
  2. شرکت هایی که می خواهند Check Point را با راه حل های دیگر (سیستم های مجازی سازی، سیستم های بلیط، سیستم های مدیریت پیکربندی و غیره) ادغام کنند.
  3. یکپارچه‌سازهای سیستم که می‌خواهند تنظیمات را استاندارد کنند یا محصولات اضافی مرتبط با Check Point ایجاد کنند.

طرح معمولی

بنابراین، بیایید یک طرح معمولی با Check Point را تصور کنیم:

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

طبق معمول ما یک دروازه داریم (SGسرور مدیریت (SMS) و کنسول مدیریت (کنسول هوشمند). در این مورد، روند معمول پیکربندی دروازه به صورت زیر است:

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

آن ها ابتدا باید روی کامپیوتر مدیر اجرا کنید کنسول هوشمند، که با آن به سرور مدیریت متصل می شویم (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 مستقیم از کنسول هوشمند، همانطور که در تصویر زیر نشان داده شده است.

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

در این پنجره می توانید بلافاصله دستورات API را وارد کنید.

4) خدمات وب استفاده از درخواست ارسال HTTPS (REST API)

به نظر ما، این یکی از امیدوار کننده ترین روش ها است، زیرا به شما این امکان را می دهد که کل برنامه ها را بر اساس آن "بسازید". مدیریت سرور مدیریت (با عرض پوزش برای توتولوژی). در زیر این روش را با کمی جزئیات بیشتر بررسی خواهیم کرد.

به طور خلاصه:

  1. API + cli برای افرادی که به سیسکو عادت دارند مناسب تر است.
  2. API + پوسته برای استفاده از اسکریپت ها و انجام وظایف معمول؛
  3. REST API برای اتوماسیون

فعال کردن API

به طور پیش فرض، API در سرورهای مدیریتی با بیش از 4 گیگابایت رم و تنظیمات مستقل با بیش از 8 گیگابایت رم فعال است. می توانید وضعیت را با استفاده از دستور زیر بررسی کنید: وضعیت api

اگر معلوم شد که api غیرفعال است، فعال کردن آن از طریق SmartConsole بسیار آسان است: مدیریت و تنظیمات > Blades > مدیریت API > تنظیمات پیشرفته

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

سپس منتشر کنید (منتشر کردن) را تغییر داده و دستور را اجرا کنید راه اندازی مجدد 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 را بررسی کنید در رابطه با پستچی. Postman نسخه های دسکتاپ برای ویندوز، لینوکس و MacOS دارد. علاوه بر این، یک افزونه برای گوگل کروم نیز وجود دارد. این چیزی است که ما استفاده خواهیم کرد. ابتدا باید Postman را در فروشگاه Google Chrome پیدا کنید و نصب کنید:

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

با استفاده از این ابزار، ما قادر خواهیم بود درخواست های وب را برای Check Point API ایجاد کنیم. برای اینکه تمام دستورات API را به خاطر نیاورید، می‌توانید مجموعه‌هایی را وارد کنید (الگوها) که از قبل حاوی تمام دستورات لازم هستند:

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

اینجا پیدا خواهید کرد مجموعه برای R80.10. پس از وارد کردن، الگوهای دستور API در دسترس ما قرار می گیرد:

Point R80.10 API را بررسی کنید. مدیریت از طریق CLI، اسکریپت ها و موارد دیگر

به نظر من، این بسیار راحت است. با استفاده از Check Point API می توانید به سرعت شروع به توسعه برنامه ها کنید.

Check Point + Ansible

من همچنین می خواهم توجه داشته باشم که وجود دارد غیر ممکن ماژول برای CheckPoint API. ماژول به شما امکان می دهد پیکربندی ها را مدیریت کنید، اما برای حل مشکلات عجیب و غریب چندان راحت نیست. نوشتن اسکریپت در هر زبان برنامه نویسی راه حل های انعطاف پذیرتر و راحت تری را ارائه می دهد.

نتیجه

اینجاست که احتمالا بررسی کوتاه خود را از Check Point API به پایان خواهیم رساند. به نظر من این ویژگی بسیار مورد انتظار و ضروری بود. ظهور API فرصت های بسیار گسترده ای را برای مدیران سیستم و ادغام کنندگان سیستم که با محصولات Check Point کار می کنند باز می کند. ارکستراسیون، اتوماسیون، بازخورد SIEM... همه اینها اکنون امکان پذیر است.

PS مقالات بیشتر در مورد Check Point است. مثل همیشه می توانید آن را در وبلاگ ما پیدا کنید هابر یا در وبلاگ در کاربران آنلاین حاضر در سایت ".

PSS برای سوالات فنی مربوط به راه اندازی Check Point، می توانید اینجا

فقط کاربران ثبت نام شده می توانند در نظرسنجی شرکت کنند. ورود، لطفا.

آیا قصد استفاده از API را دارید؟

  • ٪۱۰۰بله 12

  • ٪۱۰۰شماره 4

  • ٪۱۰۰در حال استفاده از 1

17 کاربر رای دادند. 3 کاربر رای ممتنع دادند.

منبع: www.habr.com

اضافه کردن نظر