API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ืื ื™ ื‘ื˜ื•ื— ืฉื›ืœ ืžื™ ืฉืื™ ืคืขื ืขื‘ื“ ืื™ืชื• ืฆืง ืคื•ื™ื ื˜, ื”ื™ื™ืชื” ืชืœื•ื ื” ืขืœ ื—ื•ืกืจ ืืคืฉืจื•ืช ืœืขืจื•ืš ืืช ื”ืชืฆื•ืจื” ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ื–ื” ืžื•ื–ืจ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ืืœื” ืฉืขื‘ื“ื• ื‘ืขื‘ืจ ืขื Cisco ASA, ืฉื ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ื”ื›ืœ ื‘-CLI. ืขื ืฆ'ืง ืคื•ื™ื ื˜ ื–ื” ื”ืคื•ืš - ื›ืœ ื”ื’ื“ืจื•ืช ื”ืื‘ื˜ื—ื” ื‘ื•ืฆืขื• ืืš ื•ืจืง ืžื”ืžืžืฉืง ื”ื’ืจืคื™. ืขื ื–ืืช, ื—ืœืง ืžื”ื“ื‘ืจื™ื ืื™ื ื ื ื•ื—ื™ื ืœื—ืœื•ื˜ื™ืŸ ืœืขืฉื•ืช ื“ืจืš ื”-GUI (ืืคื™ืœื• ืื—ื“ ื ื•ื— ื›ืžื• ื–ื” ืฉืœ ืฆ'ืง ืคื•ื™ื ื˜). ืœื“ื•ื’ืžื”, ื”ืžืฉื™ืžื” ืฉืœ ื”ื•ืกืคืช 100 ืžืืจื—ื™ื ืื• ืจืฉืชื•ืช ื—ื“ืฉื™ื ื”ื•ืคื›ืช ืœื”ืœื™ืš ืืจื•ืš ื•ืžื™ื™ื’ืข. ืขื‘ื•ืจ ื›ืœ ืื•ื‘ื™ื™ืงื˜ ืชืฆื˜ืจื›ื• ืœืœื—ื•ืฅ ืขืœ ื”ืขื›ื‘ืจ ืžืกืคืจ ืคืขืžื™ื ื•ืœื”ื–ื™ืŸ ืืช ื›ืชื•ื‘ืช ื”-IP. ืื•ืชื• ื“ื‘ืจ ืœื’ื‘ื™ ื™ืฆื™ืจืช ืงื‘ื•ืฆืช ืืชืจื™ื ืื• ื”ืคืขืœื”/ื”ืฉื‘ืชื” ื”ืžื•ื ื™ืช ืฉืœ ื—ืชื™ืžื•ืช IPS. ื‘ืžืงืจื” ื–ื”, ื™ืฉ ืกื‘ื™ืจื•ืช ื’ื‘ื•ื”ื” ืœื˜ืขื•ืช.

"ื ืก" ืงืจื” ื™ื—ืกื™ืช ืœืื—ืจื•ื ื”. ืขื ื™ืฆื™ืืช ื”ื’ืจืกื” ื”ื—ื“ืฉื” ื’ืื™ื” R80 ื”ื•ื›ืจื–ื” ื”ื”ื–ื“ืžื ื•ืช ืฉื™ืžื•ืฉ ื‘-API, ืžื” ืฉืคื•ืชื— ื”ื–ื“ืžื ื•ื™ื•ืช ืจื—ื‘ื•ืช ืœืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื”ื’ื“ืจื•ืช, ื ื™ื”ื•ืœ, ื ื™ื˜ื•ืจ ื•ื›ื•'. ืขื›ืฉื™ื• ืืชื” ื™ื›ื•ืœ:

  • ืœื™ืฆื•ืจ ื—ืคืฆื™ื;
  • ืœื”ื•ืกื™ืฃ ืื• ืœืขืจื•ืš ืจืฉื™ืžื•ืช ื’ื™ืฉื”;
  • ืืคืฉืจ/ื”ืฉื‘ืช ืœื”ื‘ื™ื;
  • ืœื”ื’ื“ื™ืจ ืžืžืฉืงื™ ืจืฉืช;
  • ื”ืชืงื ืช ืžื“ื™ื ื™ื•ืช;
  • ื•ืขื•ื“ ื”ืจื‘ื” ื™ื•ืชืจ.

ืœืžืขืŸ ื”ืืžืช, ืื ื™ ืœื ืžื‘ื™ืŸ ืื™ืš ื”ื™ื“ื™ืขื” ื”ื–ื• ืขื‘ืจื” ืขืœ ื™ื“ื™ ื”ื‘ืจ. ื‘ืžืืžืจ ื–ื” ื ืชืืจ ื‘ืงืฆืจื” ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-API ื•ื ืกืคืง ืžืกืคืจ ื“ื•ื’ืžืื•ืช ืžืขืฉื™ื•ืช. ื”ื’ื“ืจื•ืช CheckPoint ื‘ืืžืฆืขื•ืช ืกืงืจื™ืคื˜ื™ื.

ืื ื™ ืจื•ืฆื” ืœื”ื–ืžื™ืŸ ืžื™ื“ ืฉื”-API ืžืฉืžืฉ ืจืง ืขื‘ื•ืจ ืฉืจืช ื”ื ื™ื”ื•ืœ. ื”ึธื”ึตืŸ. ืขื“ื™ื™ืŸ ื‘ืœืชื™ ืืคืฉืจื™ ืœื ื”ืœ ืฉืขืจื™ื ืœืœื ืฉืจืช ื ื™ื”ื•ืœ.

ืžื™ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘-API ื–ื” ื‘ืื•ืคืŸ ืขืงืจื•ื ื™?

  1. ืžื ื”ืœื™ ืžืขืจื›ืช ืฉืจื•ืฆื™ื ืœืคืฉื˜ ืื• ืœื”ืคื•ืš ืžืฉื™ืžื•ืช ืชืฆื•ืจื” ืฉื’ืจืชื™ื•ืช ืฉืœ Check Point;
  2. ื—ื‘ืจื•ืช ืฉืจื•ืฆื•ืช ืœืฉืœื‘ ืืช ืฆ'ืง ืคื•ื™ื ื˜ ืขื ืคืชืจื•ื ื•ืช ื ื•ืกืคื™ื (ืžืขืจื›ื•ืช ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื”, ืžืขืจื›ื•ืช ื›ืจื˜ื™ืกื™ื, ืžืขืจื›ื•ืช ื ื™ื”ื•ืœ ืชืฆื•ืจื” ื•ื›ื•');
  3. ืžืฉืœื‘ื™ ืžืขืจื›ื•ืช ืฉืจื•ืฆื™ื ืœืชืงืŸ ื”ื’ื“ืจื•ืช ืื• ืœื™ืฆื•ืจ ืžื•ืฆืจื™ื ื ื•ืกืคื™ื ื”ืงืฉื•ืจื™ื ืœืฆ'ืง ืคื•ื™ื ื˜.

ืกื›ื™ืžื” ืื•ืคื™ื™ื ื™ืช

ืื– ื‘ื•ืื• ื ื“ืžื™ื™ืŸ ืชื›ื ื™ืช ื˜ื™ืคื•ืกื™ืช ืขื ืฆ'ืง ืคื•ื™ื ื˜:

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ื›ืจื’ื™ืœ ื™ืฉ ืœื ื• ืฉืขืจ (SG), ืฉืจืช ื ื™ื”ื•ืœ (SMS) ื•ืžืกื•ืฃ ื”ื ื™ื”ื•ืœ (SmartConsole). ื‘ืžืงืจื” ื–ื”, ืชื”ืœื™ืš ืชืฆื•ืจืช ื”ืฉืขืจ ื”ืจื’ื™ืœ ื ืจืื” ื›ืš:

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ื”ึธื”ึตืŸ. ืจืืฉื™ืช ืขืœื™ืš ืœื”ืคืขื™ืœ ื‘ืžื—ืฉื‘ ื”ืžื ื”ืœ SmartConsole, ืฉืื™ืชื• ืื ื• ืžืชื—ื‘ืจื™ื ืœืฉืจืช ื”ื ื™ื”ื•ืœ (SMS). ื”ื’ื“ืจื•ืช ื”ืื‘ื˜ื—ื” ื ืขืฉื•ืช ื‘-SMS, ื•ืจืง ืœืื—ืจ ืžื›ืŸ ืžื™ื•ืฉืžื•ืช (ืžื“ื™ื ื™ื•ืช ื”ืชืงื ื”) ืœืฉืขืจ (SG).

ื‘ืขืช ืฉื™ืžื•ืฉ ื ื™ื”ื•ืœ API, ืื ื—ื ื• ื™ื›ื•ืœื™ื ื‘ืขืฆื ืœื“ืœื’ ืขืœ ื”ื ืงื•ื“ื” ื”ืจืืฉื•ื ื” (ืœื”ืคืขื™ืœ ืืช SmartConsole) ื•ืœื”ืฉืชืžืฉ ืคืงื•ื“ื•ืช API ื™ืฉื™ืจื•ืช ืœืฉืจืช ื”ื ื™ื”ื•ืœ (SMS).

ื“ืจื›ื™ื ืœื”ืฉืชืžืฉ ื‘-API

ื™ืฉื ืŸ ืืจื‘ืข ื“ืจื›ื™ื ืขื™ืงืจื™ื•ืช ืœืขืจื•ืš ืืช ื”ืชืฆื•ืจื” ื‘ืืžืฆืขื•ืช ื”-API:

1) ืฉื™ืžื•ืฉ ื‘ื›ืœื™ ื”ืฉื™ืจื•ืช mgmt_cli

ื“ื•ื’ืžื - # mgmt_cli ื”ื•ืกืฃ ืฉื ืžืืจื— host1 IP-address 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, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืชืžื•ื ื” ืœืžื˜ื”.

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ื‘ื—ืœื•ืŸ ื–ื”, ืืชื” ื™ื›ื•ืœ ืœื”ืชื—ื™ืœ ืžื™ื“ ืœื”ื–ื™ืŸ ืคืงื•ื“ื•ืช API.

4) ืฉื™ืจื•ืชื™ ืื™ื ื˜ืจื ื˜. ื”ืฉืชืžืฉ ื‘ื‘ืงืฉืช ืคื•ืกื˜ ื‘-HTTPS (REST API)

ืœื“ืขืชื ื•, ื–ื• ืื—ืช ื”ืฉื™ื˜ื•ืช ื”ืžื‘ื˜ื™ื—ื•ืช ื‘ื™ื•ืชืจ, ื›ื™ ืžืืคืฉืจ ืœืš "ืœื‘ื ื•ืช" ื™ื™ืฉื•ืžื™ื ืฉืœืžื™ื ืขืœ ื‘ืกื™ืก ื ื™ื”ื•ืœ ืฉืจืช ื ื™ื”ื•ืœ (ืกืœื™ื—ื” ืขืœ ื”ื˜ืื•ื˜ื•ืœื•ื’ื™ื”). ืœื”ืœืŸ ื ืกืชื›ืœ ืขืœ ืฉื™ื˜ื” ื–ื• ื‘ืคื™ืจื•ื˜ ืงื˜ืŸ ื™ื•ืชืจ.

ืœืกื›ื:

  1. API + cli ืžืชืื™ื ื™ื•ืชืจ ืœืื ืฉื™ื ืฉืจื’ื™ืœื™ื ืœืกื™ืกืงื•;
  2. API + ืžืขื˜ืคืช ืœื™ื™ืฉื•ื ืชืกืจื™ื˜ื™ื ื•ื‘ื™ืฆื•ืข ืžืฉื™ืžื•ืช ืฉื’ืจืชื™ื•ืช;
  3. REST API ืœืื•ื˜ื•ืžืฆื™ื”.

ื”ืคืขืœืช ื”-API

ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื”-API ืžื•ืคืขืœ ื‘ืฉืจืชื™ ื ื™ื”ื•ืœ ืขื ื™ื•ืชืจ ืž-4GB RAM ื•ืชืฆื•ืจื•ืช ืขืฆืžืื™ื•ืช ืขื ื™ื•ืชืจ ืž-8GB ืฉืœ RAM. ืืชื” ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืืช ื”ืžืฆื‘ ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื”: ืกื˜ื˜ื•ืก API

ืื ื™ืชื‘ืจืจ ืฉื”-API ืžื•ืฉื‘ืช, ืื– ื“ื™ ืงืœ ืœื”ืคืขื™ืœ ืื•ืชื• ื“ืจืš SmartConsole: ื ื™ื”ื•ืœ ื•ื”ื’ื“ืจื•ืช > ืœื”ื‘ื™ื > ืžืžืฉืง API ืœื ื™ื”ื•ืœ > ื”ื’ื“ืจื•ืช ืžืชืงื“ืžื•ืช

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ืœืื—ืจ ืžื›ืŸ ืคืจืกื (ืœืคืจืกื) ืžืฉืชื ื” ื•ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ื”-API.

ื‘ืงืฉื•ืช ืื™ื ื˜ืจื ื˜ + Python

ื›ื“ื™ ืœื‘ืฆืข ืคืงื•ื“ื•ืช API, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื‘ืงืฉื•ืช ืื™ื ื˜ืจื ื˜ ื‘ืืžืฆืขื•ืช ืคื™ืชื•ืŸ ื•ืกืคืจื™ื•ืช ื‘ืงืฉื•ืช, ื’'ืกื•ืŸ. ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ืžื‘ื ื” ืฉืœ ื‘ืงืฉืช ืื™ื ื˜ืจื ื˜ ืžื•ืจื›ื‘ ืžืฉืœื•ืฉื” ื—ืœืงื™ื:

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) ืคืจืกื ื•ื”ื’ื“ืจ ืืช ื”ืžื“ื™ื ื™ื•ืช, ื‘ื“ื•ืง ืืช ื‘ื™ืฆื•ืข ื”ืคืงื•ื“ื” (ืžื–ื”ื” ืžืฉื™ืžื”):

ืชึทืกืจึดื™ื˜


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 ื›ืืŸ ื›ืืŸ.

ืฆ'ืง ืคื•ื™ื ื˜ API + Postman

ื’ื ื ื•ื— ืœืฉื™ืžื•ืฉ ืฆ'ืง ืคื•ื™ื ื˜ ืื™ื ื˜ืจื ื˜ API ื‘ืฉื™ืชื•ืฃ ืขื ื“ื•ื•ืจ. ืœ-Postman ื™ืฉ ื’ืจืกืื•ืช ืฉื•ืœื—ืŸ ืขื‘ื•ื“ื” ืขื‘ื•ืจ Windows, Linux ื•-MacOS. ื‘ื ื•ืกืฃ, ื™ืฉ ืชื•ืกืฃ ืœื’ื•ื’ืœ ื›ืจื•ื. ื–ื” ืžื” ืฉื ืฉืชืžืฉ ื‘ื•. ืจืืฉื™ืช ืขืœื™ืš ืœืžืฆื•ื ืืช Postman ื‘ื—ื ื•ืช Google Chrome ื•ืœื”ืชืงื™ืŸ:

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ื‘ืืžืฆืขื•ืช ื›ืœื™ ื–ื”, ื ื•ื›ืœ ืœื™ืฆื•ืจ ื‘ืงืฉื•ืช ืื™ื ื˜ืจื ื˜ ืœ-Check Point API. ื›ื“ื™ ืœื ืœื–ื›ื•ืจ ืืช ื›ืœ ืคืงื•ื“ื•ืช ื”-API, ืืคืฉืจ ืœื™ื™ื‘ื ืžื” ืฉื ืงืจื ืงื•ืœืงืฆื™ื•ืช (ืชื‘ื ื™ื•ืช), ืฉื›ื‘ืจ ืžื›ื™ืœื•ืช ืืช ื›ืœ ื”ืคืงื•ื“ื•ืช ื”ื“ืจื•ืฉื•ืช:

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ื›ืืŸ ืืชื” ืชืžืฆื ืื•ืกืฃ ืขื‘ื•ืจ R80.10. ืœืื—ืจ ื”ื™ื™ื‘ื•ื, ืชื‘ื ื™ื•ืช ืคืงื•ื“ื•ืช API ื™ื”ืคื›ื• ืœื–ืžื™ื ื•ืช ืขื‘ื•ืจื ื•:

API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“

ืœื“ืขืชื™ ื–ื” ืžืื•ื“ ื ื•ื—. ืืชื” ื™ื›ื•ืœ ืœื”ืชื—ื™ืœ ื‘ืžื”ื™ืจื•ืช ืœืคืชื— ื™ื™ืฉื•ืžื™ื ื‘ืืžืฆืขื•ืช ืฆ'ืง ืคื•ื™ื ื˜ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”