Tôi chắc chắn rằng tất cả những người đã từng làm việc cùng
Một “phép lạ” đã xảy ra tương đối gần đây. Với việc phát hành phiên bản mới Gaia R80 cơ hội đã được công bố Sử dụng API, mở ra nhiều cơ hội cho việc tự động hóa cài đặt, quản trị, giám sát, v.v. Bây giờ bạn có thể:
- tạo đồ vật;
- thêm hoặc chỉnh sửa danh sách truy cập;
- bật/tắt lưỡi dao;
- cấu hình giao diện mạng;
- cài đặt chính sách;
- và nhiều hơn nữa.
Thành thật mà nói, tôi không hiểu làm thế nào mà tin tức này lại được Habr truyền đến. Trong bài viết này, chúng tôi sẽ mô tả ngắn gọn cách sử dụng API và cung cấp một số ví dụ thực tế. Cài đặt CheckPoint bằng tập lệnh.
Tôi muốn đặt trước ngay rằng API chỉ được sử dụng cho Máy chủ quản lý. Những thứ kia. Vẫn không thể quản lý cổng nếu không có máy chủ Quản lý.
Ai có thể sử dụng API này về nguyên tắc?
- Quản trị viên hệ thống muốn đơn giản hóa hoặc tự động hóa các tác vụ cấu hình Check Point thông thường;
- Các công ty muốn tích hợp Check Point với các giải pháp khác (hệ thống ảo hóa, hệ thống vé, hệ thống quản lý cấu hình, v.v.);
- Các nhà tích hợp hệ thống muốn chuẩn hóa cài đặt hoặc tạo thêm các sản phẩm liên quan đến Điểm kiểm tra.
Đề án điển hình
Vì vậy, hãy tưởng tượng một sơ đồ điển hình với Check Point:
Như thường lệ, chúng tôi có một cổng (SG), máy chủ quản lý (SMS) và bảng điều khiển dành cho quản trị viên (bảng điều khiển thông minh). Trong trường hợp này, quy trình cấu hình cổng thông thường sẽ như sau:
Những thứ kia. Đầu tiên bạn cần chạy trên máy tính của quản trị viên bảng điều khiển thông minh, mà chúng tôi kết nối với máy chủ Quản lý (SMS). Cài đặt bảo mật được thực hiện trên SMS và chỉ sau đó được áp dụng (chính sách cài đặt) đến cổng (SG).
Khi sử dụng API quản lý, về cơ bản chúng ta có thể bỏ qua điểm đầu tiên (khởi chạy SmartConsole) và sử dụng Lệnh API trực tiếp đến máy chủ quản lý (SMS).
Các cách sử dụng API
Có bốn cách chính để chỉnh sửa cấu hình bằng API:
1) Sử dụng tiện ích mgmt_cli
Thí dụ - # mgmt_cli thêm tên máy chủ địa chỉ IP máy chủ1 192.168.2.100
Lệnh này được chạy từ dòng lệnh Máy chủ quản lý (SMS). Tôi nghĩ cú pháp của lệnh rất rõ ràng - Host1 được tạo bằng địa chỉ 192.168.2.100.
2) Nhập lệnh API qua clish (ở chế độ chuyên gia)
Về cơ bản, tất cả những gì bạn cần làm là đăng nhập vào dòng lệnh (đăng nhập quản lý) trong tài khoản được sử dụng khi kết nối qua SmartConsole (hoặc tài khoản root). Sau đó bạn có thể nhập Lệnh API (trong trường hợp này không cần sử dụng tiện ích trước mỗi lệnh mgmt_cli). Bạn có thể tạo đầy đủ tập lệnh BASH. Một ví dụ về tập lệnh mà máy chủ tạo:
Kịch bản 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
Nếu quan tâm, bạn có thể xem video tương ứng:
3) Qua SmartConsole bằng cách mở cửa sổ CLI
Tất cả những gì bạn cần làm là mở cửa sổ CLI thẳng từ bảng điều khiển thông minh, như thể hiện trong hình dưới đây.
Trong cửa sổ này, bạn có thể bắt đầu nhập lệnh API ngay lập tức.
4) Dịch vụ web. Sử dụng yêu cầu Bài đăng HTTPS (API REST)
Theo chúng tôi, đây là một trong những phương pháp hứa hẹn nhất, bởi vì cho phép bạn “xây dựng” toàn bộ ứng dụng dựa trên quản lý máy chủ quản lý (xin lỗi vì sự lặp lại). Dưới đây chúng ta sẽ xem xét phương pháp này chi tiết hơn một chút.
Tóm lại:
- API + cli phù hợp hơn với những người đã quen với Cisco;
- API + vỏ để áp dụng các tập lệnh và thực hiện các tác vụ thường ngày;
- REST API cho tự động hóa.
Kích hoạt API
Theo mặc định, API được bật trên các máy chủ quản lý có RAM lớn hơn 4GB và cấu hình độc lập có RAM lớn hơn 8GB. Bạn có thể kiểm tra trạng thái bằng lệnh: trạng thái api
Nếu api bị vô hiệu hóa thì việc kích hoạt nó thông qua SmartConsole khá dễ dàng: Quản lý & Cài đặt > Blades > API quản lý > Cài đặt nâng cao
Sau đó xuất bản (Xuất bản) thay đổi và chạy lệnh khởi động lại api.
Yêu cầu web + Python
Để thực thi các lệnh API, bạn có thể sử dụng các yêu cầu Web bằng cách sử dụng Python và thư viện yêu cầu, json. Nói chung, cấu trúc của một yêu cầu web bao gồm ba phần:
1) Địa chỉ
(https://<managemenet server>:<port>/web_api/<command>)
2) Tiêu đề HTTP
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Yêu cầu tải trọng
Văn bản ở định dạng JSON chứa các tham số khác nhau
Ví dụ để gọi các lệnh khác nhau:
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
Dưới đây là một số tác vụ điển hình mà bạn thường gặp nhất khi quản trị Check Point.
1) Ví dụ về chức năng ủy quyền và đăng xuất:
Kịch bản
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) Bật lưỡi dao và thiết lập mạng:
Kịch bản
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) Thay đổi quy tắc tường lửa:
Kịch bản
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)Thêm lớp Ứng dụng:
Kịch bản
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) Xuất bản và thiết lập chính sách, kiểm tra việc thực thi lệnh (task-id):
Kịch bản
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) Thêm máy chủ:
Kịch bản
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) Thêm trường Ngăn chặn mối đe dọa:
Kịch bản
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) Xem danh sách các phiên
Kịch bản
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) Tạo hồ sơ mới:
Kịch bản
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) Thay đổi hành động cho chữ ký IPS:
Kịch bản
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) Thêm dịch vụ của bạn:
Kịch bản
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) Thêm danh mục, trang web hoặc nhóm:
Kịch bản
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))
Ngoài ra, với sự giúp đỡ API web bạn có thể thêm và xóa mạng, máy chủ, vai trò truy cập, v.v. Lưỡi dao có thể được tùy chỉnh Chống virus, Antibot, IPS, VPN. Thậm chí có thể cài đặt giấy phép bằng lệnh chạy script. Tất cả các lệnh API điểm kiểm tra có thể được tìm thấy ở đây
API điểm kiểm tra + Người đưa thư
Sử dụng cũng thuận tiện API web điểm kiểm tra kết hợp với
Sử dụng tiện ích này, chúng tôi sẽ có thể tạo các yêu cầu Web tới API Điểm kiểm tra. Để không nhớ tất cả các lệnh API, có thể nhập cái gọi là bộ sưu tập (mẫu), vốn đã chứa tất cả các lệnh cần thiết:
Theo tôi, điều này rất thuận tiện. Bạn có thể nhanh chóng bắt đầu phát triển ứng dụng bằng API Check Point.
Điểm kiểm tra + Ansible
Tôi cũng muốn lưu ý rằng có Có khả năng
Đầu ra
Đây có thể là nơi chúng tôi sẽ hoàn thành bài đánh giá ngắn về API điểm kiểm tra. Theo tôi, tính năng này đã được chờ đợi từ lâu và rất cần thiết. Sự xuất hiện của API mở ra cơ hội rất rộng lớn cho cả quản trị viên hệ thống và nhà tích hợp hệ thống làm việc với các sản phẩm Check Point. Điều phối, tự động hóa, phản hồi SIEM... giờ đây tất cả đều có thể thực hiện được.
Tái bút Các bài viết khác về
PSS Đối với các câu hỏi kỹ thuật liên quan đến việc thiết lập Điểm kiểm tra, bạn có thể
Chỉ những người dùng đã đăng ký mới có thể tham gia khảo sát.
Bạn có dự định sử dụng API không?
-
70,6%Có12
-
23,5%4
-
5,9%Đã sử dụng1
17 người dùng bình chọn. 3 người dùng bỏ phiếu trắng.
Nguồn: www.habr.com