Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Saya yakin semua orang yang pernah bekerja dengannya Check Point, ada keluhan tentang ketidakmungkinan mengedit konfigurasi dari baris perintah. Hal ini sangat aneh bagi mereka yang sebelumnya pernah bekerja dengan Cisco ASA, di mana semuanya dapat dikonfigurasi di CLI. Dengan Check Point, yang terjadi adalah sebaliknya - semua pengaturan keamanan dilakukan secara eksklusif dari antarmuka grafis. Namun, ada beberapa hal yang benar-benar merepotkan untuk dilakukan melalui GUI (bahkan yang senyaman Check Point). Misalnya, tugas menambahkan 100 host atau jaringan baru menjadi prosedur yang panjang dan membosankan. Untuk setiap objek Anda harus mengklik mouse beberapa kali dan memasukkan alamat IP. Hal yang sama berlaku untuk membuat grup situs atau mengaktifkan/menonaktifkan tanda tangan IPS secara massal. Dalam hal ini, kemungkinan besar terjadi kesalahan.

Sebuah “keajaiban” terjadi relatif baru-baru ini. Dengan dirilisnya versi baru Gaia R80 kesempatan itu diumumkan penggunaan API, yang membuka peluang luas untuk mengotomatisasi pengaturan, administrasi, pemantauan, dll. Sekarang kamu bisa:

  • membuat objek;
  • menambah atau mengedit daftar akses;
  • mengaktifkan/menonaktifkan bilah;
  • konfigurasikan antarmuka jaringan;
  • menginstal kebijakan;
  • dan banyak lagi.

Sejujurnya, saya tidak mengerti bagaimana berita ini disampaikan oleh Habr. Pada artikel ini kami akan menjelaskan secara singkat cara menggunakan API dan memberikan beberapa contoh praktis. Pengaturan CheckPoint menggunakan skrip.

Saya ingin segera membuat reservasi bahwa API hanya digunakan untuk server Manajemen. Itu. Masih tidak mungkin mengelola gateway tanpa server Manajemen.

Siapa yang pada prinsipnya dapat menggunakan API ini?

  1. Administrator sistem yang ingin menyederhanakan atau mengotomatiskan tugas konfigurasi rutin Check Point;
  2. Perusahaan yang ingin mengintegrasikan Check Point dengan solusi lain (sistem virtualisasi, sistem tiket, sistem manajemen konfigurasi, dll.);
  3. Integrator sistem yang ingin membakukan pengaturan atau membuat produk tambahan terkait Check Point.

Skema khas

Jadi, mari kita bayangkan skema khas dengan Check Point:

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Seperti biasa kami memiliki gateway (SG), server manajemen (SMS) dan konsol admin (Konsol Cerdas). Dalam hal ini, proses konfigurasi gateway yang biasa terlihat seperti ini:

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Itu. Pertama, Anda perlu menjalankannya di komputer administrator Konsol Cerdas, yang dengannya kami terhubung ke server Manajemen (SMS). Pengaturan keamanan dibuat pada SMS, dan baru kemudian diterapkan (menginstal kebijakan) ke gerbang (SG).

Bila menggunakan API Manajemen, pada dasarnya kita dapat melewati poin pertama (meluncurkan SmartConsole) dan menggunakan perintah API langsung ke server Manajemen (SMS).

Cara menggunakan API

Ada empat cara utama untuk mengedit konfigurasi menggunakan API:

1) Menggunakan utilitas mgmt_cli

Contoh - # mgmt_cli tambahkan nama host host1 alamat ip 192.168.2.100
Perintah ini dijalankan dari baris perintah Server Manajemen (SMS). Saya pikir sintaks perintahnya jelas - host1 dibuat dengan alamat 192.168.2.100.

2) Masukkan perintah API melalui clish (dalam mode ahli)

Pada dasarnya, yang perlu Anda lakukan hanyalah masuk ke baris perintah (manajemen masuk) di bawah akun yang digunakan saat menghubungkan melalui SmartConsole (atau akun root). Kemudian Anda bisa masuk perintah API (dalam hal ini tidak perlu menggunakan utilitas sebelum setiap perintah mgmt_cli). Anda dapat membuat yang lengkap skrip BASH. Contoh skrip yang dibuat oleh host:

Skrip pesta

#!/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

Jika Anda tertarik, Anda dapat menonton video terkait:

3) Melalui SmartConsole dengan membuka jendela CLI

Yang perlu Anda lakukan hanyalah membuka jendela CLI langsung dari Konsol Cerdas, seperti terlihat pada gambar di bawah ini.

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Di jendela ini, Anda dapat langsung mulai memasukkan perintah API.

4) Layanan Web. Gunakan permintaan Posting HTTPS (REST API)

Menurut kami, ini adalah salah satu metode yang paling menjanjikan, karena memungkinkan Anda untuk "membangun" seluruh aplikasi berdasarkan manajemen server manajemen (maaf untuk tautologinya). Di bawah ini kita akan melihat metode ini lebih detail.

Untuk meringkas:

  1. API + klik lebih cocok untuk orang yang terbiasa dengan Cisco;
  2. API + cangkang untuk menerapkan skrip dan melakukan tugas rutin;
  3. SISA API untuk otomatisasi.

Mengaktifkan API

Secara default, API diaktifkan pada server manajemen dengan RAM lebih dari 4 GB dan konfigurasi mandiri dengan RAM lebih dari 8 GB. Anda dapat memeriksa status menggunakan perintah: status api

Jika ternyata api tersebut dinonaktifkan, maka cara mengaktifkannya cukup mudah melalui SmartConsole: Kelola & Pengaturan > Blades > API Manajemen > Pengaturan Lanjutan

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Kemudian publikasikan (Menerbitkan) berubah dan jalankan perintah api dimulai ulang.

Permintaan web + Python

Untuk menjalankan perintah API, Anda dapat menggunakan permintaan Web menggunakan Ular sanca dan perpustakaan permintaan, json. Secara umum, struktur permintaan web terdiri dari tiga bagian:

1)Alamat

(https://<managemenet server>:<port>/web_api/<command>) 


2) Header HTTP

content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>


3) Minta muatan

Teks dalam format JSON berisi parameter berbeda

Contoh pemanggilan berbagai perintah:


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

Berikut adalah beberapa tugas umum yang paling sering Anda temui saat mengelola Check Point.

1) Contoh fungsi otorisasi dan logout:

Skrip


    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) Menghidupkan bilah dan mengatur jaringan:

Skrip


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) Mengubah aturan firewall:

Skrip


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) Menambahkan lapisan Aplikasi:

Skrip


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) Publikasikan dan atur kebijakan, periksa eksekusi perintah (task-id):

Skrip


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) Tambahkan tuan rumah:

Skrip


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) Tambahkan bidang Pencegahan Ancaman:

Skrip


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) Lihat daftar sesi

Skrip


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) Buat profil baru:

Skrip


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) Ubah tindakan untuk tanda tangan IPS:

Skrip


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) Tambahkan layanan Anda:

Skrip


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) Tambahkan kategori, situs atau grup:

Skrip


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))

Selain itu, dengan bantuan API web Anda dapat menambah dan menghapus jaringan, host, peran akses, dll. Pisau dapat disesuaikan Antivirus, Antibot, IPS, VPN. Bahkan dimungkinkan untuk menginstal lisensi menggunakan perintah skrip dijalankan. Semua perintah Check Point API dapat ditemukan di sini di sini.

Periksa Titik API + Tukang Pos

Juga nyaman digunakan API Web Titik Periksa setara dengan Tukang pos. Tukang pos memiliki versi desktop untuk Windows, Linux dan MacOS. Selain itu, ada plugin untuk Google Chrome. Inilah yang akan kami gunakan. Pertama, Anda perlu menemukan Tukang Pos di Google Chrome Store dan menginstal:

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Dengan menggunakan utilitas ini, kita akan dapat menghasilkan permintaan Web ke Check Point API. Agar tidak mengingat semua perintah API, dimungkinkan untuk mengimpor apa yang disebut koleksi (templat), yang sudah berisi semua perintah yang diperlukan:

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Di sini kamu akan menemukan koleksi untuk R80.10. Setelah mengimpor, templat perintah API akan tersedia bagi kami:

Periksa Titik API R80.10. Manajemen melalui CLI, skrip, dan lainnya

Menurut pendapat saya, ini sangat nyaman. Anda dapat dengan cepat mulai mengembangkan aplikasi menggunakan Check Point API.

Titik Periksa + Kemungkinan

Saya juga ingin mencatat bahwa ada Mungkin modul untuk API CheckPoint. Modul ini memungkinkan Anda untuk mengelola konfigurasi, tetapi tidak begitu nyaman untuk menyelesaikan masalah-masalah eksotik. Menulis skrip dalam bahasa pemrograman apa pun memberikan solusi yang lebih fleksibel dan nyaman.

Keluaran

Di sinilah kami mungkin akan menyelesaikan ulasan singkat kami tentang Check Point API. Menurut saya, fitur ini sudah sangat ditunggu-tunggu dan diperlukan. Kemunculan API membuka peluang yang sangat luas baik bagi administrator sistem maupun integrator sistem yang bekerja dengan produk Check Point. Orkestrasi, otomatisasi, umpan balik SIEM... semuanya mungkin dilakukan sekarang.

PS Lebih banyak artikel tentang Check Point seperti biasa Anda dapat menemukannya di blog kami Habr atau di blog di Online.

PSS Untuk pertanyaan teknis terkait pengaturan Check Point bisa di sini

Hanya pengguna terdaftar yang dapat berpartisipasi dalam survei. Masuk, silakan.

Apakah Anda berencana menggunakan API?

  • 70,6%Ya12

  • 23,5%No4

  • 5,9%Sudah menggunakan1

17 pengguna memilih. 3 pengguna abstain.

Sumber: www.habr.com

Tambah komentar