チェックポイント 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) および管理コンソール (SmartConsole)。 この場合、通常のゲートウェイ構成プロセスは次のようになります。

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

それらの。 まず管理者のコンピュータで実行する必要があります SmartConsole、これを使用して管理サーバーに接続します (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 からまっすぐ SmartConsole、下の図に示すように。

チェックポイント 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 と組み合わせて PostmanPostmanにはデスクトップ版があります 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 を使用する予定はありますか?

  • 70,6%はい12

  • 23,5%No4

  • 5,9%すでに使用しています1

17 人のユーザーが投票しました。 3名のユーザーが棄権した。

出所: habr.com

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster