Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

Tôi chắc chắn rằng tất cả những người đã từng làm việc cùng Check Point, đã có khiếu nại về không thể chỉnh sửa cấu hình từ dòng lệnh. Điều này đặc biệt lạ đối với những người trước đây đã làm việc với Cisco ASA, nơi hoàn toàn có thể định cấu hình mọi thứ trong CLI. Với Check Point thì ngược lại - tất cả cài đặt bảo mật được thực hiện độc quyền từ giao diện đồ họa. Tuy nhiên, một số việc hoàn toàn bất tiện khi thực hiện thông qua GUI (thậm chí một số việc thuận tiện như của Check Point). Ví dụ: nhiệm vụ thêm 100 máy chủ hoặc mạng mới trở thành một thủ tục dài dòng và tẻ nhạt. Đối với mỗi đối tượng, bạn sẽ phải nhấp chuột nhiều lần và nhập địa chỉ IP. Điều tương tự cũng xảy ra với việc tạo một nhóm các trang web hoặc bật/tắt hàng loạt chữ ký IPS. Trong trường hợp này, khả năng xảy ra sai sót là rất cao.

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?

  1. 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;
  2. 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.);
  3. 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:

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

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:

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

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.

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

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:

  1. API + cli phù hợp hơn với những người đã quen với Cisco;
  2. 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;
  3. 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

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

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 đâ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 Người phát thơ. Postman có phiên bản dành cho máy tính để bàn dành cho Windows, Linux và MacOS. Ngoài ra, còn có plugin dành cho Google Chrome. Đây là những gì chúng tôi sẽ sử dụng. Đầu tiên bạn cần tìm Postman trong Google Chrome Store và cài đặt:

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

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:

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

Здесь bạn sẽ tìm thấy bộ sưu tập cho R80.10. Sau khi nhập, các mẫu lệnh API sẽ có sẵn cho chúng tôi:

Kiểm tra điểm R80.10 API. Quản lý thông qua CLI, tập lệnh và hơn thế nữa

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 mô-đun cho API điểm kiểm tra. Mô-đun này cho phép bạn quản lý các cấu hình, nhưng nó không thuận tiện cho việc giải quyết các vấn đề lạ. Viết tập lệnh bằng bất kỳ ngôn ngữ lập trình nào đều cung cấp các giải pháp linh hoạt và thuận tiện hơn.

Đầ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ề Check Point như mọi khi bạn có thể tìm thấy nó trên blog của chúng tôi Habr hoặc trên blog tại website.

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ể đây

Chỉ những người dùng đã đăng ký mới có thể tham gia khảo sát. Đăng nhập, xin vui lòng.

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

Thêm một lời nhận xét