ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

รับรองว่าทุกคนที่เคยร่วมงานด้วย Check Pointก็มีเรื่องร้องเรียนเกี่ยวกับ ไม่สามารถแก้ไขการกำหนดค่าจากบรรทัดคำสั่งได้. นี่เป็นเรื่องแปลกโดยเฉพาะสำหรับผู้ที่เคยร่วมงานกับ Cisco ASA มาก่อนซึ่งสามารถกำหนดค่าทุกอย่างใน CLI ได้ ในทางกลับกัน ด้วย Check Point การตั้งค่าความปลอดภัยทั้งหมดดำเนินการจากอินเทอร์เฟซแบบกราฟิกโดยเฉพาะ อย่างไรก็ตาม บางสิ่งไม่สะดวกเลยที่จะทำผ่าน GUI (แม้จะสะดวกพอๆ กับ Check Point's ก็ตาม) ตัวอย่างเช่น งานเพิ่มโฮสต์หรือเครือข่ายใหม่ 100 รายการกลายเป็นขั้นตอนที่ยาวและน่าเบื่อ สำหรับแต่ละวัตถุ คุณจะต้องคลิกเมาส์หลายครั้งแล้วป้อนที่อยู่ IP เช่นเดียวกับการสร้างกลุ่มไซต์หรือการเปิดใช้งาน/ปิดใช้งานลายเซ็น IPS จำนวนมาก ในกรณีนี้มีความเป็นไปได้สูงที่จะทำผิดพลาด

“ปาฏิหาริย์” เกิดขึ้นเมื่อไม่นานมานี้ ด้วยการเปิดตัวเวอร์ชั่นใหม่ กายา R80 มีการประกาศโอกาสแล้ว การใช้งาน APIซึ่งเปิดโอกาสมากมายสำหรับการตั้งค่าอัตโนมัติ การดูแลระบบ การตรวจสอบ ฯลฯ ตอนนี้คุณสามารถ:

  • สร้างวัตถุ
  • เพิ่มหรือแก้ไขรายการเข้าถึง
  • เปิด/ปิดใบมีด;
  • กำหนดค่าอินเทอร์เฟซเครือข่าย
  • นโยบายการติดตั้ง
  • และอื่น ๆ อีกมากมาย

พูดตามตรงฉันไม่เข้าใจว่า Habr ส่งข่าวนี้ไปได้อย่างไร ในบทความนี้ เราจะอธิบายโดยย่อถึงวิธีใช้ API และให้ตัวอย่างที่เป็นประโยชน์หลายประการ การตั้งค่าจุดตรวจโดยใช้สคริปต์.

ฉันต้องการจองทันทีว่า API นั้นใช้สำหรับเซิร์ฟเวอร์การจัดการเท่านั้น เหล่านั้น. ยังคงเป็นไปไม่ได้ที่จะจัดการเกตเวย์โดยไม่มีเซิร์ฟเวอร์การจัดการ

โดยหลักการแล้วใครสามารถใช้ API นี้ได้บ้าง

  1. ผู้ดูแลระบบที่ต้องการลดความซับซ้อนหรือทำให้งานการกำหนดค่า Check Point ตามปกติเป็นไปโดยอัตโนมัติ
  2. บริษัทที่ต้องการรวม Check Point เข้ากับโซลูชันอื่นๆ (ระบบเสมือนจริง ระบบตั๋ว ระบบการจัดการการกำหนดค่า ฯลฯ)
  3. ผู้ประกอบระบบที่ต้องการสร้างมาตรฐานให้กับการตั้งค่าหรือสร้างผลิตภัณฑ์ที่เกี่ยวข้องกับจุดตรวจสอบเพิ่มเติม

โครงการทั่วไป

ลองจินตนาการถึงรูปแบบทั่วไปของ Check Point:

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

ตามปกติเรามีเกตเวย์ (SG) เซิร์ฟเวอร์การจัดการ (SMS) และคอนโซลผู้ดูแลระบบ (สมาร์ทคอนโซล). ในกรณีนี้ กระบวนการกำหนดค่าเกตเวย์ตามปกติจะมีลักษณะดังนี้:

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

เหล่านั้น. ก่อนอื่นคุณต้องรันบนคอมพิวเตอร์ของผู้ดูแลระบบ สมาร์ทคอนโซลซึ่งเราเชื่อมต่อกับเซิร์ฟเวอร์การจัดการ (SMS). การตั้งค่าความปลอดภัยจะทำบน SMS จากนั้นจึงนำไปใช้เท่านั้น (นโยบายการติดตั้ง) ไปยังเกตเวย์ (SG).

เมื่อใช้งาน API การจัดการโดยพื้นฐานแล้วเราสามารถข้ามจุดแรก (เปิด SmartConsole) แล้วใช้งานได้ คำสั่ง API โดยตรงไปยังเซิร์ฟเวอร์การจัดการ (SMS)

วิธีการใช้งาน API

มีสี่วิธีหลักในการแก้ไขการกำหนดค่าโดยใช้ API:

1) การใช้ยูทิลิตี้ mgmt_cli

ตัวอย่าง - # mgmt_cli เพิ่มชื่อโฮสต์ host1 ที่อยู่ ip 192.168.2.100
คำสั่งนี้รันจากบรรทัดคำสั่ง Management Server (SMS) ฉันคิดว่าไวยากรณ์ของคำสั่งนั้นชัดเจน - host1 ถูกสร้างขึ้นด้วยที่อยู่ 192.168.2.100

2) ป้อนคำสั่ง API ผ่านทาง clish (ในโหมดผู้เชี่ยวชาญ)

โดยพื้นฐานแล้ว สิ่งที่คุณต้องทำคือล็อกอินเข้าสู่บรรทัดคำสั่ง (เข้าสู่ระบบการจัดการ) ภายใต้บัญชีที่ใช้เมื่อเชื่อมต่อผ่าน SmartConsole (หรือบัญชีรูท) จากนั้นคุณสามารถเข้าได้ คำสั่ง API (ในกรณีนี้ไม่จำเป็นต้องใช้ยูทิลิตีก่อนแต่ละคำสั่ง mgmt_cli). คุณสามารถสร้างได้เต็มเปี่ยม สคริปต์ทุบตี. ตัวอย่างของสคริปต์ที่โฮสต์สร้าง:

สคริปต์ทุบตี

#!/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 ส่งตรงจาก สมาร์ทคอนโซลดังแสดงในภาพด้านล่าง

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

ในหน้าต่างนี้ คุณสามารถเริ่มป้อนคำสั่ง API ได้ทันที

4) บริการบนเว็บ ใช้คำขอโพสต์ HTTPS (REST API)

ในความเห็นของเรา นี่เป็นหนึ่งในวิธีที่มีแนวโน้มมากที่สุดเพราะว่า ช่วยให้คุณ "สร้าง" แอปพลิเคชันทั้งหมดตาม การจัดการเซิร์ฟเวอร์การจัดการ (ขออภัยที่ซ้ำซาก) ด้านล่างนี้เราจะดูวิธีการนี้โดยละเอียดเพิ่มเติมเล็กน้อย

เพื่อสรุป:

  1. API + คลิ เหมาะสำหรับผู้ที่คุ้นเคยกับ Cisco มากกว่า
  2. API + เชลล์ สำหรับการใช้สคริปต์และการปฏิบัติงานประจำ
  3. REST API สำหรับระบบอัตโนมัติ

การเปิดใช้งาน API

ตามค่าเริ่มต้น API จะเปิดใช้งานบนเซิร์ฟเวอร์การจัดการที่มี RAM มากกว่า 4GB และการกำหนดค่าแบบสแตนด์อโลนที่มี RAM มากกว่า 8GB คุณสามารถตรวจสอบสถานะโดยใช้คำสั่ง: สถานะ API

หากปรากฎว่า api ถูกปิดใช้งาน การเปิดใช้งานผ่าน SmartConsole นั้นค่อนข้างง่าย: จัดการและการตั้งค่า > เบลด > API การจัดการ > การตั้งค่าขั้นสูง

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

จากนั้นเผยแพร่ (สาธารณะ) เปลี่ยนแปลงและรันคำสั่ง API รีสตาร์ท.

คำขอเว็บ + Python

ในการรันคำสั่ง 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

ต่อไปนี้เป็นงานทั่วไปบางส่วนที่คุณพบบ่อยที่สุดเมื่อดูแลจุดตรวจสอบ

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 + บุรุษไปรษณีย์

อีกทั้งยังสะดวกต่อการใช้งาน ตรวจสอบจุดเว็บ API ร่วมกับ บุรุษไปรษณีย์. บุรุษไปรษณีย์มีเวอร์ชันเดสก์ท็อปสำหรับ Windows, Linux และ MacOS นอกจากนี้ยังมีปลั๊กอินสำหรับ Google Chrome นี่คือสิ่งที่เราจะใช้ ก่อนอื่นคุณต้องค้นหาบุรุษไปรษณีย์ใน Google Chrome Store และติดตั้ง:

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

การใช้ยูทิลิตี้นี้ เราจะสามารถสร้างคำขอเว็บไปยัง Check Point API ได้ เพื่อไม่ให้จำคำสั่ง API ทั้งหมด คุณสามารถนำเข้าสิ่งที่เรียกว่าคอลเลกชัน (เทมเพลต) ซึ่งมีคำสั่งที่จำเป็นทั้งหมดอยู่แล้ว:

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

ที่นี่ คุณจะพบว่า ชุด สำหรับ R80.10. หลังจากการนำเข้า เทมเพลตคำสั่ง API จะพร้อมใช้งานสำหรับเรา:

ตรวจสอบจุด R80.10 API การจัดการผ่าน CLI สคริปต์ และอื่นๆ

ในความคิดของฉันมันสะดวกมาก คุณสามารถเริ่มพัฒนาแอปพลิเคชันได้อย่างรวดเร็วโดยใช้ Check Point API

จุดตรวจสอบ + Ansible

ฉันอยากจะทราบด้วยว่ามี เบิ้ล โมดูล สำหรับ CheckPoint API โมดูลนี้ช่วยให้คุณจัดการการกำหนดค่าได้ แต่ไม่สะดวกในการแก้ปัญหาที่แปลกใหม่ การเขียนสคริปต์ในภาษาการเขียนโปรแกรมใดๆ จะให้โซลูชันที่ยืดหยุ่นและสะดวกยิ่งขึ้น

เอาท์พุต

นี่คือจุดที่เราอาจจะทำการตรวจสอบ Check Point API สั้นๆ ให้เสร็จสิ้น ในความคิดของฉัน คุณลักษณะนี้เป็นสิ่งที่รอคอยมานานและจำเป็นมาก การเกิดขึ้นของ API เปิดโอกาสให้ทั้งผู้ดูแลระบบและผู้รวมระบบที่ทำงานกับผลิตภัณฑ์ Check Point การเรียบเรียง ระบบอัตโนมัติ ข้อเสนอแนะ SIEM... ทั้งหมดนี้เป็นไปได้แล้ว

ป.ล. บทความเพิ่มเติมเกี่ยวกับ Check Point และเช่นเคยคุณสามารถค้นหาได้ในบล็อกของเรา Habr หรือในบล็อกได้ที่ เว็บไซต์.

PSS สำหรับคำถามทางเทคนิคที่เกี่ยวข้องกับการตั้งค่าจุดตรวจสอบ คุณสามารถทำได้ ที่นี่

เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมในการสำรวจได้ เข้าสู่ระบบ, โปรด.

คุณวางแผนที่จะใช้ API หรือไม่?

  • ลด 70,6%ใช่12

  • ลด 23,5%หมายเลข 4

  • ลด 5,9%ใช้แล้ว1

ผู้ใช้ 17 คนโหวต ผู้ใช้ 3 รายงดออกเสียง

ที่มา: will.com

เพิ่มความคิดเห็น