รับรองว่าทุกคนที่เคยร่วมงานด้วย
“ปาฏิหาริย์” เกิดขึ้นเมื่อไม่นานมานี้ ด้วยการเปิดตัวเวอร์ชั่นใหม่ กายา R80 มีการประกาศโอกาสแล้ว การใช้งาน APIซึ่งเปิดโอกาสมากมายสำหรับการตั้งค่าอัตโนมัติ การดูแลระบบ การตรวจสอบ ฯลฯ ตอนนี้คุณสามารถ:
- สร้างวัตถุ
- เพิ่มหรือแก้ไขรายการเข้าถึง
- เปิด/ปิดใบมีด;
- กำหนดค่าอินเทอร์เฟซเครือข่าย
- นโยบายการติดตั้ง
- และอื่น ๆ อีกมากมาย
พูดตามตรงฉันไม่เข้าใจว่า Habr ส่งข่าวนี้ไปได้อย่างไร ในบทความนี้ เราจะอธิบายโดยย่อถึงวิธีใช้ API และให้ตัวอย่างที่เป็นประโยชน์หลายประการ การตั้งค่าจุดตรวจโดยใช้สคริปต์.
ฉันต้องการจองทันทีว่า API นั้นใช้สำหรับเซิร์ฟเวอร์การจัดการเท่านั้น เหล่านั้น. ยังคงเป็นไปไม่ได้ที่จะจัดการเกตเวย์โดยไม่มีเซิร์ฟเวอร์การจัดการ
โดยหลักการแล้วใครสามารถใช้ API นี้ได้บ้าง
- ผู้ดูแลระบบที่ต้องการลดความซับซ้อนหรือทำให้งานการกำหนดค่า Check Point ตามปกติเป็นไปโดยอัตโนมัติ
- บริษัทที่ต้องการรวม Check Point เข้ากับโซลูชันอื่นๆ (ระบบเสมือนจริง ระบบตั๋ว ระบบการจัดการการกำหนดค่า ฯลฯ)
- ผู้ประกอบระบบที่ต้องการสร้างมาตรฐานให้กับการตั้งค่าหรือสร้างผลิตภัณฑ์ที่เกี่ยวข้องกับจุดตรวจสอบเพิ่มเติม
โครงการทั่วไป
ลองจินตนาการถึงรูปแบบทั่วไปของ Check Point:
ตามปกติเรามีเกตเวย์ (SG) เซิร์ฟเวอร์การจัดการ (SMS) และคอนโซลผู้ดูแลระบบ (สมาร์ทคอนโซล). ในกรณีนี้ กระบวนการกำหนดค่าเกตเวย์ตามปกติจะมีลักษณะดังนี้:
เหล่านั้น. ก่อนอื่นคุณต้องรันบนคอมพิวเตอร์ของผู้ดูแลระบบ สมาร์ทคอนโซลซึ่งเราเชื่อมต่อกับเซิร์ฟเวอร์การจัดการ (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 ส่งตรงจาก สมาร์ทคอนโซลดังแสดงในภาพด้านล่าง
ในหน้าต่างนี้ คุณสามารถเริ่มป้อนคำสั่ง API ได้ทันที
4) บริการบนเว็บ ใช้คำขอโพสต์ HTTPS (REST API)
ในความเห็นของเรา นี่เป็นหนึ่งในวิธีที่มีแนวโน้มมากที่สุดเพราะว่า ช่วยให้คุณ "สร้าง" แอปพลิเคชันทั้งหมดตาม การจัดการเซิร์ฟเวอร์การจัดการ (ขออภัยที่ซ้ำซาก) ด้านล่างนี้เราจะดูวิธีการนี้โดยละเอียดเพิ่มเติมเล็กน้อย
เพื่อสรุป:
- API + คลิ เหมาะสำหรับผู้ที่คุ้นเคยกับ Cisco มากกว่า
- API + เชลล์ สำหรับการใช้สคริปต์และการปฏิบัติงานประจำ
- REST API สำหรับระบบอัตโนมัติ
การเปิดใช้งาน API
ตามค่าเริ่มต้น API จะเปิดใช้งานบนเซิร์ฟเวอร์การจัดการที่มี RAM มากกว่า 4GB และการกำหนดค่าแบบสแตนด์อโลนที่มี RAM มากกว่า 8GB คุณสามารถตรวจสอบสถานะโดยใช้คำสั่ง: สถานะ API
หากปรากฎว่า api ถูกปิดใช้งาน การเปิดใช้งานผ่าน SmartConsole นั้นค่อนข้างง่าย: จัดการและการตั้งค่า > เบลด > API การจัดการ > การตั้งค่าขั้นสูง
จากนั้นเผยแพร่ (สาธารณะ) เปลี่ยนแปลงและรันคำสั่ง 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 ร่วมกับ
การใช้ยูทิลิตี้นี้ เราจะสามารถสร้างคำขอเว็บไปยัง Check Point API ได้ เพื่อไม่ให้จำคำสั่ง API ทั้งหมด คุณสามารถนำเข้าสิ่งที่เรียกว่าคอลเลกชัน (เทมเพลต) ซึ่งมีคำสั่งที่จำเป็นทั้งหมดอยู่แล้ว:
ในความคิดของฉันมันสะดวกมาก คุณสามารถเริ่มพัฒนาแอปพลิเคชันได้อย่างรวดเร็วโดยใช้ Check Point API
จุดตรวจสอบ + Ansible
ฉันอยากจะทราบด้วยว่ามี เบิ้ล
เอาท์พุต
นี่คือจุดที่เราอาจจะทำการตรวจสอบ Check Point API สั้นๆ ให้เสร็จสิ้น ในความคิดของฉัน คุณลักษณะนี้เป็นสิ่งที่รอคอยมานานและจำเป็นมาก การเกิดขึ้นของ API เปิดโอกาสให้ทั้งผู้ดูแลระบบและผู้รวมระบบที่ทำงานกับผลิตภัณฑ์ Check Point การเรียบเรียง ระบบอัตโนมัติ ข้อเสนอแนะ SIEM... ทั้งหมดนี้เป็นไปได้แล้ว
ป.ล. บทความเพิ่มเติมเกี่ยวกับ
PSS สำหรับคำถามทางเทคนิคที่เกี่ยวข้องกับการตั้งค่าจุดตรวจสอบ คุณสามารถทำได้
เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมในการสำรวจได้
คุณวางแผนที่จะใช้ API หรือไม่?
-
ลด 70,6%ใช่12
-
ลด 23,5%หมายเลข 4
-
ลด 5,9%ใช้แล้ว1
ผู้ใช้ 17 คนโหวต ผู้ใช้ 3 รายงดออกเสียง
ที่มา: will.com