Είμαι σίγουρος ότι όλοι όσοι έχουν συνεργαστεί ποτέ μαζί τους
Ένα «θαύμα» συνέβη σχετικά πρόσφατα. Με την κυκλοφορία της νέας έκδοσης Gaia R80 ανακοινώθηκε η ευκαιρία Χρήση API, το οποίο ανοίγει ευρείες ευκαιρίες για αυτοματοποίηση ρυθμίσεων, διαχείρισης, παρακολούθησης κ.λπ. Τώρα μπορείς:
- δημιουργία αντικειμένων.
- προσθήκη ή επεξεργασία λιστών πρόσβασης.
- ενεργοποίηση/απενεργοποίηση λεπίδων.
- Διαμόρφωση διεπαφών δικτύου.
- Εγκατάσταση πολιτικών·
- και πολλά άλλα.
Για να είμαι ειλικρινής, δεν καταλαβαίνω πώς πέρασαν αυτές οι ειδήσεις από τον Habr. Σε αυτό το άρθρο θα περιγράψουμε εν συντομία τον τρόπο χρήσης του API και θα παρέχουμε αρκετά πρακτικά παραδείγματα. Ρυθμίσεις CheckPoint με χρήση σεναρίων.
Θα ήθελα να κάνω μια κράτηση αμέσως ότι το API χρησιμοποιείται μόνο για τον διακομιστή διαχείρισης. Εκείνοι. Είναι ακόμα αδύνατο να διαχειριστείτε πύλες χωρίς διακομιστή διαχείρισης.
Ποιος μπορεί να χρησιμοποιήσει αυτό το API κατ' αρχήν;
- Διαχειριστές συστήματος που θέλουν να απλοποιήσουν ή να αυτοματοποιήσουν τις εργασίες ρύθμισης ρουτίνας Check Point.
- Εταιρείες που θέλουν να ενσωματώσουν το Check Point με άλλες λύσεις (συστήματα εικονικοποίησης, συστήματα εισιτηρίων, συστήματα διαχείρισης διαμόρφωσης, κ.λπ.).
- Οι ενοποιητές συστημάτων που θέλουν να τυποποιήσουν τις ρυθμίσεις ή να δημιουργήσουν πρόσθετα προϊόντα που σχετίζονται με το Check Point.
Τυπικό σχήμα
Λοιπόν, ας φανταστούμε ένα τυπικό σχήμα με το Check Point:
Ως συνήθως έχουμε μια πύλη (SG), διακομιστή διαχείρισης (SMS) και κονσόλα διαχειριστή (SmartConsole). Σε αυτήν την περίπτωση, η συνήθης διαδικασία διαμόρφωσης πύλης μοιάζει με αυτό:
Εκείνοι. Πρώτα πρέπει να τρέξετε στον υπολογιστή του διαχειριστή 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, όπως φαίνεται στην παρακάτω εικόνα.
Σε αυτό το παράθυρο, μπορείτε να αρχίσετε αμέσως να εισάγετε εντολές API.
4) Υπηρεσίες Ιστού. Χρήση αιτήματος ανάρτησης HTTPS (REST API)
Κατά τη γνώμη μας, αυτή είναι μια από τις πιο υποσχόμενες μεθόδους, γιατί σας επιτρέπει να «χτίσετε» ολόκληρες εφαρμογές με βάση διαχείριση διακομιστή διαχείρισης (συγγνώμη για την ταυτολογία). Παρακάτω θα εξετάσουμε αυτή τη μέθοδο με λίγο περισσότερες λεπτομέρειες.
Να συνοψίσουμε:
- API + cli πιο κατάλληλο για άτομα που έχουν συνηθίσει στη Cisco.
- API + κέλυφος για την εφαρμογή σεναρίων και την εκτέλεση εργασιών ρουτίνας.
- REST API για αυτοματισμό.
Ενεργοποίηση του API
Από προεπιλογή, το API είναι ενεργοποιημένο σε διακομιστές διαχείρισης με περισσότερα από 4 GB μνήμης RAM και αυτόνομες διαμορφώσεις με περισσότερα από 8 GB μνήμης RAM. Μπορείτε να ελέγξετε την κατάσταση χρησιμοποιώντας την εντολή: κατάσταση api
Εάν αποδειχθεί ότι το api είναι απενεργοποιημένο, τότε είναι πολύ εύκολο να το ενεργοποιήσετε μέσω SmartConsole: Διαχείριση & Ρυθμίσεις > Blades > Διαχείριση API > Σύνθετες ρυθμίσεις
Στη συνέχεια δημοσιεύστε (Δημοσίευση) αλλάζει και εκτελέστε την εντολή επανεκκίνηση του 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 σε συνδυασμό με
Χρησιμοποιώντας αυτό το βοηθητικό πρόγραμμα, θα είμαστε σε θέση να δημιουργήσουμε αιτήματα Ιστού στο Check Point API. Για να μην θυμάστε όλες τις εντολές API, είναι δυνατή η εισαγωγή των λεγόμενων συλλογών (πρότυπα), οι οποίες περιέχουν ήδη όλες τις απαραίτητες εντολές:
Κατά τη γνώμη μου, αυτό είναι πολύ βολικό. Μπορείτε να ξεκινήσετε γρήγορα την ανάπτυξη εφαρμογών χρησιμοποιώντας το Check Point API.
Check Point + Ansible
Θα ήθελα επίσης να σημειώσω ότι υπάρχει Πιθανό
Παραγωγή
Εδώ θα ολοκληρώσουμε πιθανώς τη σύντομη ανασκόπηση του Check Point API. Κατά τη γνώμη μου, αυτό το χαρακτηριστικό ήταν πολύ αναμενόμενο και απαραίτητο. Η εμφάνιση του API ανοίγει πολύ ευρείες ευκαιρίες τόσο για τους διαχειριστές συστήματος όσο και για τους ενοποιητές συστημάτων που εργάζονται με προϊόντα Check Point. Ενορχήστρωση, αυτοματισμός, σχόλια SIEM... όλα είναι δυνατά τώρα.
Υ.Γ Περισσότερα άρθρα για
PSS Για τεχνικές ερωτήσεις που σχετίζονται με τη ρύθμιση του Check Point, μπορείτε
Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα.
Σκοπεύετε να χρησιμοποιήσετε το API;
-
70,6%Ναι 12
-
23,5%Νο4
-
5,9%Χρησιμοποιείται ήδη 1
Ψήφισαν 17 χρήστες. 3 χρήστες απείχαν.
Πηγή: www.habr.com