Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Είμαι σίγουρος ότι όλοι όσοι έχουν συνεργαστεί ποτέ μαζί τους Check Point, υπήρξε μια καταγγελία για αδυναμία επεξεργασίας της διαμόρφωσης από τη γραμμή εντολών. Αυτό είναι ιδιαίτερα περίεργο για όσους έχουν εργαστεί στο παρελθόν με το Cisco ASA, όπου μπορούν να ρυθμιστούν απολύτως τα πάντα στο CLI. Με το Check Point γίνεται το αντίστροφο - όλες οι ρυθμίσεις ασφαλείας πραγματοποιήθηκαν αποκλειστικά από τη γραφική διεπαφή. Ωστόσο, ορισμένα πράγματα είναι εντελώς άβολα να τα κάνετε μέσω του GUI (ακόμη και ένα τόσο βολικό όσο αυτό του Check Point). Για παράδειγμα, το έργο της προσθήκης 100 νέων κεντρικών υπολογιστών ή δικτύων μετατρέπεται σε μια μακρά και κουραστική διαδικασία. Για κάθε αντικείμενο θα πρέπει να κάνετε κλικ με το ποντίκι αρκετές φορές και να εισαγάγετε τη διεύθυνση IP. Το ίδιο ισχύει για τη δημιουργία μιας ομάδας τοποθεσιών ή μαζικής ενεργοποίησης/απενεργοποίησης υπογραφών IPS. Σε αυτή την περίπτωση, υπάρχει μεγάλη πιθανότητα να κάνετε λάθος.

Ένα «θαύμα» συνέβη σχετικά πρόσφατα. Με την κυκλοφορία της νέας έκδοσης Gaia R80 ανακοινώθηκε η ευκαιρία Χρήση API, το οποίο ανοίγει ευρείες ευκαιρίες για αυτοματοποίηση ρυθμίσεων, διαχείρισης, παρακολούθησης κ.λπ. Τώρα μπορείς:

  • δημιουργία αντικειμένων.
  • προσθήκη ή επεξεργασία λιστών πρόσβασης.
  • ενεργοποίηση/απενεργοποίηση λεπίδων.
  • Διαμόρφωση διεπαφών δικτύου.
  • Εγκατάσταση πολιτικών·
  • και πολλά άλλα.

Για να είμαι ειλικρινής, δεν καταλαβαίνω πώς πέρασαν αυτές οι ειδήσεις από τον Habr. Σε αυτό το άρθρο θα περιγράψουμε εν συντομία τον τρόπο χρήσης του API και θα παρέχουμε αρκετά πρακτικά παραδείγματα. Ρυθμίσεις CheckPoint με χρήση σεναρίων.

Θα ήθελα να κάνω μια κράτηση αμέσως ότι το API χρησιμοποιείται μόνο για τον διακομιστή διαχείρισης. Εκείνοι. Είναι ακόμα αδύνατο να διαχειριστείτε πύλες χωρίς διακομιστή διαχείρισης.

Ποιος μπορεί να χρησιμοποιήσει αυτό το API κατ' αρχήν;

  1. Διαχειριστές συστήματος που θέλουν να απλοποιήσουν ή να αυτοματοποιήσουν τις εργασίες ρύθμισης ρουτίνας Check Point.
  2. Εταιρείες που θέλουν να ενσωματώσουν το Check Point με άλλες λύσεις (συστήματα εικονικοποίησης, συστήματα εισιτηρίων, συστήματα διαχείρισης διαμόρφωσης, κ.λπ.).
  3. Οι ενοποιητές συστημάτων που θέλουν να τυποποιήσουν τις ρυθμίσεις ή να δημιουργήσουν πρόσθετα προϊόντα που σχετίζονται με το Check Point.

Τυπικό σχήμα

Λοιπόν, ας φανταστούμε ένα τυπικό σχήμα με το Check Point:

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Ως συνήθως έχουμε μια πύλη (SG), διακομιστή διαχείρισης (SMS) και κονσόλα διαχειριστή (SmartConsole). Σε αυτήν την περίπτωση, η συνήθης διαδικασία διαμόρφωσης πύλης μοιάζει με αυτό:

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Εκείνοι. Πρώτα πρέπει να τρέξετε στον υπολογιστή του διαχειριστή SmartConsole, με τον οποίο συνδεόμαστε στον διακομιστή διαχείρισης (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 (σε λειτουργία ειδικού)

Βασικά, το μόνο που χρειάζεται να κάνετε είναι να συνδεθείτε στη γραμμή εντολών (mgmt σύνδεση) στον λογαριασμό που χρησιμοποιείται κατά τη σύνδεση μέσω SmartConsole (ή λογαριασμού root). Τότε μπορείτε να μπείτε Εντολές 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, όπως φαίνεται στην παρακάτω εικόνα.

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Σε αυτό το παράθυρο, μπορείτε να αρχίσετε αμέσως να εισάγετε εντολές API.

4) Υπηρεσίες Ιστού. Χρήση αιτήματος ανάρτησης HTTPS (REST API)

Κατά τη γνώμη μας, αυτή είναι μια από τις πιο υποσχόμενες μεθόδους, γιατί σας επιτρέπει να «χτίσετε» ολόκληρες εφαρμογές με βάση διαχείριση διακομιστή διαχείρισης (συγγνώμη για την ταυτολογία). Παρακάτω θα εξετάσουμε αυτή τη μέθοδο με λίγο περισσότερες λεπτομέρειες.

Να συνοψίσουμε:

  1. API + cli πιο κατάλληλο για άτομα που έχουν συνηθίσει στη Cisco.
  2. API + κέλυφος για την εφαρμογή σεναρίων και την εκτέλεση εργασιών ρουτίνας.
  3. REST API για αυτοματισμό.

Ενεργοποίηση του API

Από προεπιλογή, το API είναι ενεργοποιημένο σε διακομιστές διαχείρισης με περισσότερα από 4 GB μνήμης RAM και αυτόνομες διαμορφώσεις με περισσότερα από 8 GB μνήμης RAM. Μπορείτε να ελέγξετε την κατάσταση χρησιμοποιώντας την εντολή: κατάσταση api

Εάν αποδειχθεί ότι το api είναι απενεργοποιημένο, τότε είναι πολύ εύκολο να το ενεργοποιήσετε μέσω SmartConsole: Διαχείριση & Ρυθμίσεις > Blades > Διαχείριση API > Σύνθετες ρυθμίσεις

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Στη συνέχεια δημοσιεύστε (Δημοσίευση) αλλάζει και εκτελέστε την εντολή επανεκκίνηση του api.

Web αιτήματα + Python

Για να εκτελέσετε εντολές API, μπορείτε να χρησιμοποιήσετε αιτήματα Ιστού χρησιμοποιώντας Python και βιβλιοθήκες αιτήματα, 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

Ακολουθούν μερικές τυπικές εργασίες που αντιμετωπίζετε συχνότερα κατά τη διαχείριση του Check Point.

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 Web μπορείτε να προσθέσετε και να αφαιρέσετε δίκτυα, κεντρικούς υπολογιστές, ρόλους πρόσβασης κ.λπ. Οι λεπίδες μπορούν να προσαρμοστούν Antivirus, Antibot, IPS, VPN. Είναι ακόμη δυνατή η εγκατάσταση αδειών χρησιμοποιώντας την εντολή run-script. Όλες οι εντολές Check Point API βρίσκονται εδώ εδώ.

Check Point API + Postman

Επίσης βολικό στη χρήση Check Point Web API σε συνδυασμό με Ταχυδρόμος. Ο Postman έχει εκδόσεις για υπολογιστές για Windows, Linux και MacOS. Επιπλέον, υπάρχει μια προσθήκη για το Google Chrome. Αυτό θα χρησιμοποιήσουμε. Πρώτα πρέπει να βρείτε τον Postman στο Google Chrome Store και να εγκαταστήσετε:

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Χρησιμοποιώντας αυτό το βοηθητικό πρόγραμμα, θα είμαστε σε θέση να δημιουργήσουμε αιτήματα Ιστού στο Check Point API. Για να μην θυμάστε όλες τις εντολές API, είναι δυνατή η εισαγωγή των λεγόμενων συλλογών (πρότυπα), οι οποίες περιέχουν ήδη όλες τις απαραίτητες εντολές:

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Εδώ θα βρείτε συλλογή για R80.10. Μετά την εισαγωγή, τα πρότυπα εντολών API θα είναι διαθέσιμα σε εμάς:

Check Point R80.10 API. Διαχείριση μέσω CLI, scripts και άλλα

Κατά τη γνώμη μου, αυτό είναι πολύ βολικό. Μπορείτε να ξεκινήσετε γρήγορα την ανάπτυξη εφαρμογών χρησιμοποιώντας το Check Point API.

Check Point + Ansible

Θα ήθελα επίσης να σημειώσω ότι υπάρχει Πιθανό μονάδα για το CheckPoint API. Η μονάδα σάς επιτρέπει να διαχειρίζεστε διαμορφώσεις, αλλά δεν είναι τόσο βολικό για την επίλυση εξωτικών προβλημάτων. Η συγγραφή σεναρίων σε οποιαδήποτε γλώσσα προγραμματισμού παρέχει πιο ευέλικτες και βολικές λύσεις.

Παραγωγή

Εδώ θα ολοκληρώσουμε πιθανώς τη σύντομη ανασκόπηση του Check Point API. Κατά τη γνώμη μου, αυτό το χαρακτηριστικό ήταν πολύ αναμενόμενο και απαραίτητο. Η εμφάνιση του API ανοίγει πολύ ευρείες ευκαιρίες τόσο για τους διαχειριστές συστήματος όσο και για τους ενοποιητές συστημάτων που εργάζονται με προϊόντα Check Point. Ενορχήστρωση, αυτοματισμός, σχόλια SIEM... όλα είναι δυνατά τώρα.

Υ.Γ Περισσότερα άρθρα για Check Point όπως πάντα μπορείτε να το βρείτε στο blog μας Habr ή στο blog στο Σε απευθείας σύνδεση.

PSS Για τεχνικές ερωτήσεις που σχετίζονται με τη ρύθμιση του Check Point, μπορείτε εδώ

Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα. Συνδεθείτε, Σας παρακαλούμε.

Σκοπεύετε να χρησιμοποιήσετε το API;

  • 70,6%Ναι 12

  • 23,5%Νο4

  • 5,9%Χρησιμοποιείται ήδη 1

Ψήφισαν 17 χρήστες. 3 χρήστες απείχαν.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο