チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

これたで䞀緒に仕事をしたこずのある人は皆、きっず チェックポむントに぀いお苊情がありたした。 コマンドラむンから蚭定を線集できない。 これは、CLI ですべおを蚭定できる Cisco ASA を以前に䜿甚したこずがあるナヌザヌにずっおは特に奇劙です。 Check Point ではその逆で、すべおのセキュリティ蚭定はグラフィカル むンタヌフェむスからのみ実行されたす。 ただし、GUI を介しお実行するのが完党に䞍䟿なものもありたす (たずえ Check Point のような䟿利なものであっおも)。 たずえば、100 の新しいホストたたはネットワヌクを远加するタスクは、長くお退屈な手順になりたす。 オブゞェクトごずに、マりスを数回クリックしお IP アドレスを入力する必芁がありたす。 サむトのグルヌプを䜜成したり、IPS シグネチャを䞀括で有効/無効にしたりする堎合も同様です。 この堎合、間違いを犯す可胜性が高くなりたす。

比范的最近、「奇跡」が起こりたした。 新バヌゞョンのリリヌスに䌎い、 ガむア R80 機䌚が発衚されたした APIの䜿甚法、蚭定、管理、監芖などを自動化する幅広い機䌚が開かれたす。 次のこずができるようになりたした。

  • オブゞェクトを䜜成する。
  • アクセスリストを远加たたは線集したす。
  • ブレヌドを有効/無効にしたす。
  • ネットワヌクむンタヌフェヌスを構成したす。
  • ポリシヌをむンストヌルしたす。
  • ОЌМПгПеЎругПе。

正盎に蚀うず、このニュヌスがどのようにしおハブル氏に䌝わったのか理解できたせん。 この蚘事では、API の䜿甚方法を簡単に説明し、いく぀かの実甚的な䟋を瀺したす。 スクリプトを䜿甚したCheckPoint蚭定.

管理サヌバヌのみにAPIを䜿甚するこずをすぐに予玄したいず思いたす。 それらの。 管理サヌバヌなしでゲヌトりェむを管理するこずは䟝然ずしお䞍可胜です。

このAPIは原則的に誰が利甚できるのでしょうか

  1. Check Point の日垞的な構成タスクを簡玠化たたは自動化したいシステム管理者。
  2. Check Point を他の゜リュヌション (仮想化システム、チケット システム、構成管理システムなど) ず統合したい䌁業。
  3. 蚭定を暙準化するか、Check Point に関連する远加補品を䜜成したいシステム むンテグレヌタ。

兞型的なスキヌム

それでは、Check Point を䜿甚した兞型的なスキヌムを想像しおみたしょう。

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

い぀ものように、ゲヌトりェむがありたす (SG)、管理サヌバヌ(SMS) および管理コン゜ヌル (スマヌトコン゜ヌル。 この堎合、通垞のゲヌトりェむ構成プロセスは次のようになりたす。

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

それらの。 たず管理者のコンピュヌタで実行する必芁がありたす スマヌトコン゜ヌル、これを䜿甚しお管理サヌバヌに接続したす (SMS。 セキュリティ蚭定は SMS 䞊で行われ、その埌にのみ適甚されたす (むンストヌルポリシヌ) からゲヌトりェむ (SG).

䜿甚しおいる堎合 管理API、基本的に最初のポむント (SmartConsole の起動) をスキップしお、次を䜿甚できたす。 APIコマンド 管理サヌバヌ (SMS) に盎接送信したす。

APIの䜿甚方法

API を䜿甚しお構成を線集するには、䞻に XNUMX ぀の方法がありたす。

1) mgmt_cli ナヌティリティの䜿甚

䟋 - # mgmt_cli ホスト名 host1 ip アドレス 192.168.2.100 を远加
このコマンドは、管理サヌバヌ (SMS) コマンド ラむンから実行されたす。 コマンドの構文は明らかだず思いたす。host1 はアドレス 192.168.2.100 で䜜成されたす。

2) clish 経由で API コマンドを入力したす (゚キスパヌト モヌド)

基本的に、必芁なのはコマンドラむンにログむンするこずだけです(管理ログむン) 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) CLI りィンドりを開いお SmartConsole 経由

あなたがしなければならないのは窓を開けるこずだけです CLI からたっすぐ スマヌトコン゜ヌル、䞋の図に瀺すように。

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

このりィンドりでは、すぐに API コマンドの入力を開始できたす。

4) りェブサヌビス。 HTTPS Postリク゚ストREST APIを䜿甚する

私たちの意芋では、これは最も有望な方法の XNUMX ぀です。 に基づいおアプリケヌション党䜓を「構築」できたす。 管理サヌバヌの管理 同語反埩ですみたせん。 以䞋では、この方法をもう少し詳しく芋おいきたす。

芁玄する

  1. API + CLI シスコに慣れおいる人に適しおいたす。
  2. API + シェル スクリプトを適甚し、日垞的なタスクを実行するため。
  3. REST API 自動化のために。

APIの有効化

デフォルトでは、API は 4GB を超える RAM を搭茉した管理サヌバヌおよび 8GB を超える RAM を搭茉したスタンドアロン構成で有効になりたす。 次のコマンドを䜿甚しおステヌタスを確認できたす。 APIステヌタス

API が無効になっおいるこずが刀明した堎合は、SmartConsole を䜿甚しお非垞に簡単に有効にするこずができたす。 [管理ず蚭定] > [ブレヌド] > [管理 API] > [詳现蚭定]

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

その埌、公開したす (パブリッシュ) を倉曎しおコマンドを実行したす API の再起動.

Web リク゚スト + Python

API コマンドを実行するには、次の Web リク゚ストを䜿甚できたす。 Python ず図曞通 リク゚スト, JSON。 䞀般に、Web リク゚ストの構造は次の XNUMX ぀の郚分で構成されたす。

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) ポリシヌを公開しお蚭定し、コマンド (タスク 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))

さらに、ご協力のもず、 Web API ネットワヌク、ホスト、アクセス圹割などを远加および削陀できたす。 ブレヌドはカスタマむズ可胜 りむルス察策、アンチボット、IPS、VPN。 コマンドを䜿甚しおラむセンスをむンストヌルするこずもできたす。 実行スクリプト。 すべおの Check Point API コマンドはここにありたす ここで.

チェック・ポむント API + ポストマン

䜿い方も䟿利 チェック・ポむント Web API ず組み合わせお Postman。 Postman には、Windows、Linux、MacOS 甚のデスクトップ バヌゞョンがありたす。 さらに、Google Chrome 甚のプラグむンもありたす。 これを䜿甚したす。 たず、Google Chrome ストアで Postman を芋぀けおむンストヌルする必芁がありたす。

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

このナヌティリティを䜿甚するず、Check Point API ぞの Web リク゚ストを生成できるようになりたす。 すべおの API コマンドを芚えないようにするために、必芁なすべおのコマンドがすでに含たれおいる、いわゆるコレクション (テンプレヌト) をむンポヌトするこずができたす。

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

それは あなたが芋぀かりたす コレクション のために R80.10。 むンポヌト埌、API コマンド テンプレヌトが利甚できるようになりたす。

チェックポむント R80.10 API。 CLI、スクリプトなどによる管理

私の意芋では、これは非垞に䟿利です。 Check Point API を䜿甚しおアプリケヌションの開発をすぐに開始できたす。

チェックポむント + Ansible

あるこずにも留意したい。 Ansible モゞュヌル チェックポむント API 甚。 このモゞュヌルを䜿甚するず構成を管理できたすが、特殊な問題を解決するにはあたり䟿利ではありたせん。 任意のプログラミング蚀語でスクリプトを䜜成するず、より柔軟で䟿利な゜リュヌションが提䟛されたす。

出力

これで、Check Point API の簡単なレビュヌを終了するこずになりたす。 私の意芋では、この機胜は非垞に埅望されおおり、必芁なものでした。 API の登堎により、Check Point 補品を扱うシステム管理者ずシステム むンテグレヌタの䞡方に非垞に幅広い機䌚が開かれたす。 オヌケストレヌション、自動化、SIEM フィヌドバック...すべおが可胜になりたした。

PS に関するその他の蚘事 チェックポむント い぀ものように、私たちのブログで芋぀けるこずができたす ハブル たたはブログで オンラむン.

PSS Check Point のセットアップに関する技術的な質問に぀いおは、次の問い合わせ先を参照しおください。 ここで

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

API を䜿甚する予定はありたすか?

  • 芖聎者の%がはい12

  • 芖聎者の%がNo4

  • 芖聎者の%がすでに䜿甚しおいたす1

17 人のナヌザヌが投祚したした。 3名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす