Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Хамт ажиллаж байсан бүх хүмүүс гэдэгт би итгэлтэй байна Шалгах цэг, гэсэн гомдол ирсэн тушаалын мөрөөс тохиргоог засварлах боломжгүй. Энэ нь CLI-д бүх зүйлийг тохируулах боломжтой Cisco ASA-тай өмнө нь ажиллаж байсан хүмүүсийн хувьд хачирхалтай юм. Check Point-ийн хувьд энэ нь эсрэгээрээ - бүх аюулгүй байдлын тохиргоог зөвхөн график интерфэйсээр хийсэн. Гэсэн хэдий ч, зарим зүйлийг GUI-ээр дамжуулан хийхэд бүрэн тохиромжгүй байдаг (тэр ч байтугай Check Point-ийн адил тохиромжтой). Жишээлбэл, 100 шинэ хост эсвэл сүлжээ нэмэх ажил нь урт бөгөөд уйтгартай журам болж хувирдаг. Объект бүрийн хувьд та хулганаа хэд хэдэн удаа дарж, IP хаягаа оруулах шаардлагатай болно. Бүлэг сайт үүсгэх эсвэл IPS гарын үсгийг идэвхжүүлэх/идэвхгүй болгоход мөн адил хамаарна. Энэ тохиолдолд алдаа гаргах магадлал өндөр байна.

"Гайхамшиг" харьцангуй саяхан болсон. Шинэ хувилбар гарснаар Gaia R80 боломжийг зарлав API хэрэглээ, энэ нь тохиргоо, удирдлага, хяналт гэх мэтийг автоматжуулах өргөн боломжийг нээж өгдөг. Одоо та:

  • объект үүсгэх;
  • хандалтын жагсаалтыг нэмэх, засах;
  • ирийг идэвхжүүлэх / идэвхгүй болгох;
  • сүлжээний интерфейсийг тохируулах;
  • бодлогыг суулгах;
  • ба түүнээс дээш.

Үнэнийг хэлэхэд, энэ мэдээ Хабраар хэрхэн дамжсаныг би ойлгохгүй байна. Энэ нийтлэлд бид API-г хэрхэн ашиглах талаар товч тайлбарлаж, хэд хэдэн практик жишээг өгөх болно. Скрипт ашиглан шалгах цэгийн тохиргоо.

API нь зөвхөн Менежментийн серверт ашиглагдана гэдгийг би даруй захиалмаар байна. Тэдгээр. Удирдлагын сервергүйгээр гарцыг удирдах боломжгүй хэвээр байна.

Энэ API-г зарчмын хувьд хэн ашиглаж чадах вэ?

  1. Шалгах цэгийн тохиргооны ажлыг хялбарчлах эсвэл автоматжуулахыг хүссэн системийн администраторууд;
  2. Check Point-ийг бусад шийдлүүдтэй (виртуалчлалын систем, тасалбарын систем, тохиргооны удирдлагын систем гэх мэт) нэгтгэх хүсэлтэй компаниуд;
  3. Тохиргоог стандартчилах эсвэл Check Point-тэй холбоотой нэмэлт бүтээгдэхүүн бий болгохыг хүссэн системийн интеграторууд.

Ердийн схем

Тиймээс Check Point-ийн ердийн схемийг төсөөлөөд үз дээ:

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Бидэнд ердийнх шиг гарц бий (SG), удирдлагын сервер (SMS) болон админ консол (SmartConsole). Энэ тохиолдолд ердийн гарцыг тохируулах процесс дараах байдалтай байна.

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Тэдгээр. Эхлээд та администраторын компьютер дээр ажиллах хэрэгтэй SmartConsole, бид удирдлагын сервертэй холбогддог (SMS). Аюулгүй байдлын тохиргоог SMS дээр хийсэн бөгөөд зөвхөн дараа нь хэрэглэнэ (суулгах бодлого) гарц руу (SG).

Хэрэглэхдээ Удирдлагын API, бид үндсэндээ эхний цэгийг алгасаад (SmartConsole-г ажиллуулж) ашиглаж болно API тушаалууд Удирдлагын сервер (SMS) руу шууд.

API ашиглах арга замууд

API ашиглан тохиргоог засах дөрвөн үндсэн арга байдаг:

1) mgmt_cli хэрэгслийг ашиглах

Жишээ - # mgmt_cli хостын нэрийг нэмнэ host1 ip-хаяг 192.168.2.100
Энэ тушаалыг удирдлагын сервер (SMS) командын мөрөөс ажиллуулдаг. Миний бодлоор командын синтакс тодорхой байна - host1 нь 192.168.2.100 хаягаар үүсгэгдсэн.

2) API командуудыг clish-ээр оруулах (шинжээчийн горимд)

Үндсэндээ та командын мөрөнд нэвтрэхэд л хангалттай (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, доорх зурагт үзүүлсэн шиг.

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Энэ цонхонд та API командуудыг шууд оруулж эхлэх боломжтой.

4) Вэб үйлчилгээ. HTTPS шуудангийн хүсэлтийг ашиглах (REST API)

Бидний бодлоор энэ бол хамгийн ирээдүйтэй аргуудын нэг юм, учир нь дээр үндэслэн бүхэл бүтэн программуудыг "бүтээх" боломжийг танд олгоно удирдлагын серверийн удирдлага (тавтологийн хувьд уучлаарай). Доор бид энэ аргыг бага зэрэг нарийвчлан авч үзэх болно.

Нэгтгэн дүгнэхэд:

  1. API + cli Cisco-д дассан хүмүүст илүү тохиромжтой;
  2. API + бүрхүүл скрипт хэрэглэх, ердийн ажлуудыг гүйцэтгэхэд зориулагдсан;
  3. REST API автоматжуулалтын хувьд.

API-г идэвхжүүлж байна

Анхдагч байдлаар API нь 4 ГБ-аас дээш RAM болон 8 ГБ-аас дээш RAM-тай бие даасан тохиргоотой удирдлагын серверүүд дээр идэвхждэг. Та дараах тушаалыг ашиглан статусыг шалгаж болно. api статус

Хэрэв api идэвхгүй болсон бол SmartConsole-ээр дамжуулан идэвхжүүлэх нь маш хялбар юм. Удирдах & Тохиргоо > Blades > Удирдлагын API > Нарийвчилсан тохиргоо

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Дараа нь нийтлэх (нийтэл) өөрчлөөд тушаалыг ажиллуулна api дахин эхлүүлэх.

Вэб хүсэлт + Python

API тушаалуудыг гүйцэтгэхийн тулд та вэб хүсэлтийг ашиглан ашиглаж болно Python болон номын сангууд Хүсэлт, 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

Шалгах цэгийг удирдахад танд хамгийн их тохиолддог хэд хэдэн ердийн ажлууд энд байна.

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

Мөн хэрэглэхэд тохиромжтой Check Point Web API -тай хамт Шуудан зөөгч. Postman нь Windows, Linux болон MacOS-д зориулсан ширээний хувилбаруудтай. Үүнээс гадна Google Chrome-д зориулсан залгаас байдаг. Үүнийг бид ашиглах болно. Эхлээд та Google Chrome Store-оос Postman-г хайж олоод суулгах хэрэгтэй:

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Энэ хэрэгслийг ашигласнаар бид Check Point API-д вэб хүсэлт гаргах боломжтой болно. Бүх API тушаалуудыг санахгүй байхын тулд шаардлагатай бүх командыг агуулсан цуглуулга (загвар) гэж нэрлэгддэг импортлох боломжтой.

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

энд Та олох болно цуглуулах нь R80.10. Импорт хийсний дараа API тушаалын загварууд бидэнд бэлэн болно:

Check Point R80.10 API. CLI, скрипт болон бусад зүйлсээр дамжуулан удирдах

Миний бодлоор энэ нь маш тохиромжтой. Та Check Point API ашиглан програмуудыг хурдан эхлүүлэх боломжтой.

Check Point + Ansible

Байдаг гэдгийг бас хэлмээр байна Алгасах модуль CheckPoint API-д зориулсан. Модуль нь тохиргоог удирдах боломжийг олгодог боловч чамин асуудлыг шийдвэрлэхэд тийм ч тохиромжтой биш юм. Аливаа програмчлалын хэл дээр скрипт бичих нь илүү уян хатан, тохиромжтой шийдлүүдийг өгдөг.

дүгнэлт

Энд бид Check Point API-ийн товч тоймыг дуусгах байх. Миний бодлоор энэ онцлог нь маш удаан хүлээгдэж байсан бөгөөд шаардлагатай байсан. API гарч ирснээр Check Point бүтээгдэхүүнтэй ажилладаг системийн администраторууд болон системийн интеграторуудад маш өргөн боломж нээгдэж байна. Зохион байгуулалт, автоматжуулалт, SIEM-ийн санал хүсэлт... энэ бүхэн одоо боломжтой.

Жич тухай дэлгэрэнгүй нийтлэл Шалгах цэг Та үүнийг үргэлж манай блог дээрээс олж болно Хабр эсвэл блог дээр сайт.

PSS Шалгах цэгийг тохируулахтай холбоотой техникийн асуултуудыг та асууж болно энд

Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. Нэвтрэх, гуйя.

Та API ашиглахаар төлөвлөж байна уу?

  • 70,6%Тийм 12

  • 23,5%Үгүй 4

  • 5,9%Аль хэдийн ашиглаж байна1

17 хэрэглэгч санал өгсөн. 3 хэрэглэгч түдгэлзсэн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх