Fa'afaigofie le Check Point API ma le Python SDK

Fa'afaigofie le Check Point API ma le Python SDKOle malosi atoatoa ole fegalegaleai ma API e faʻaalia pe a faʻaogaina faʻatasi ma le polokalame code, pe a mafai ona faʻatupuina faʻamalosi API talosaga ma meafaigaluega mo le suʻeina o tali API. Ae ui i lea, o loʻo tumau pea le le iloa Pusa Atina'e Polokalama Python (lea ua ta'ua mulimuli ane o le Python SDK) mo Siaki Point Management API, ae le aoga. E matua faafaigofieina ai le olaga o tagata atiaʻe ma tagata e fiafia i masini. Ua maua e le Python le lauiloa tele talu ai nei ma na ou filifili e faʻatumu le avanoa ma toe iloilo uiga autu. Siaki Point API Python Development Kit. O lenei tusiga e avea o se faʻaopoopoga sili i se isi tusiga i luga o Habré Check Point R80.10 API. Pulega e ala ile CLI, tusitusiga ma isi mea. O le a matou vaʻavaʻai pe faʻapefea ona tusia ni tusitusiga e faʻaaoga ai le Python SDK ma vaʻavaʻai totoʻa i le faʻaogaina fou o le Pulega API i le version 1.6 (lagolago amata mai R80.40). Ina ia malamalama i le tusiga, e te manaʻomia le poto masani o le galue ma API ma Python.

Ole Check Point o lo'o fa'atupuina ma le malosi le API ma i le taimi nei ua tu'uina atu mea nei:

O le Python SDK o loʻo lagolagoina nei fegalegaleaiga ma le Pulega API ma Gaia API. O le a tatou vaʻavaʻai i vasega sili ona taua, metotia ma fesuiaiga i lenei module.

Fa'afaigofie le Check Point API ma le Python SDK

Fa'apipi'i le module

Faiga cpapi fa'apipi'i vave ma faigofie mai fa'amaumauga aloa'ia Check Point ile github faatasi ai ma le fesoasoani pip. O lo'o maua fa'atonuga fa'apipi'i au'ili'ili i totonu FAITAU.md. O lenei module ua fetuutuunai e galue ma Python versions 2.7 ma 3.7. I lenei tusiga, o le a tuʻuina atu faʻataʻitaʻiga e faʻaaoga ai le Python 3.7. Ae ui i lea, o le Python SDK e mafai ona faʻatautaia saʻo mai le Check Point Management Server (Smart Management), ae naʻo le Python 2.7 latou te lagolagoina, o lea o le vaega mulimuli o le a tuʻuina atu le code mo le version 2.7. A maeʻa ona faʻapipiʻi le module, ou te fautuaina le vaʻai i faʻataʻitaʻiga i totonu o faʻamaumauga examples_python2 и examples_python3.

Amataina

Ina ia mafai ona tatou galulue faatasi ma vaega o le module cpapi, e tatau ona tatou faaulufale mai mai le module cpapi ia le itiiti ifo ma le lua vasega manaomia:

APIClient и APIClientArgs

from cpapi import APIClient, APIClientArgs

Vasega APIClientArgs e nafa ma laina fesoʻotaʻiga i le API server, ma le vasega APIClient e nafa ma fegalegaleaiga ma le API.

Fuaina o fa'amaufa'ailoga feso'ota'iga

Ina ia faʻamalamalamaina faʻasologa eseese mo le faʻafesoʻotaʻi i le API, e tatau ona e fatuina se faʻataʻitaʻiga o le vasega APIClientArgs. I le faʻavae, o ona faʻamaufaʻailoga ua muai faʻamalamalamaina ma pe a faʻatautaia le faʻamaumauga i luga o le pule faʻatonu, latou te le manaʻomia le faʻamaonia.

client_args = APIClientArgs()

Ae pe a tamoʻe i luga o se tagata talimalo lona tolu, e tatau ona e faʻamaonia le itiiti ifo i le tuatusi IP poʻo le igoa talimalo o le API server (faʻapitoa foi o le pulega pulega). I le faʻataʻitaʻiga o loʻo i lalo, matou te faʻamalamalamaina le faʻaogaina o fesoʻotaʻiga server ma tuʻuina atu i ai le tuatusi IP o le faʻaumau pulega o se manoa.

client_args = APIClientArgs(server='192.168.47.241')

Seʻi o tatou vaʻavaʻai i faʻamaufaʻailoga uma ma o latou tau le aoga e mafai ona faʻaaogaina pe a faʻafesoʻotaʻi i le API server:

O finauga o le __init__ metotia o le APIClientArgs vasega

class APIClientArgs:
    """
    This class provides arguments for APIClient configuration.
    All the arguments are configured with their default values.
    """

    # port is set to None by default, but it gets replaced with 443 if not specified
    # context possible values - web_api (default) or gaia_api
    def __init__(self, port=None, fingerprint=None, sid=None, server="127.0.0.1", http_debug_level=0,
                 api_calls=None, debug_file="", proxy_host=None, proxy_port=8080,
                 api_version=None, unsafe=False, unsafe_auto_accept=False, context="web_api"):
        self.port = port
        # management server fingerprint
        self.fingerprint = fingerprint
        # session-id.
        self.sid = sid
        # management server name or IP-address
        self.server = server
        # debug level
        self.http_debug_level = http_debug_level
        # an array with all the api calls (for debug purposes)
        self.api_calls = api_calls if api_calls else []
        # name of debug file. If left empty, debug data will not be saved to disk.
        self.debug_file = debug_file
        # HTTP proxy server address (without "http://")
        self.proxy_host = proxy_host
        # HTTP proxy port
        self.proxy_port = proxy_port
        # Management server's API version
        self.api_version = api_version
        # Indicates that the client should not check the server's certificate
        self.unsafe = unsafe
        # Indicates that the client should automatically accept and save the server's certificate
        self.unsafe_auto_accept = unsafe_auto_accept
        # The context of using the client - defaults to web_api
        self.context = context

Ou te talitonu o finauga e mafai ona faʻaaogaina i faʻataʻitaʻiga o le APIClientArgs vasega e faʻaogaina i le Check Point pule ma e le manaʻomia ni faʻamatalaga faaopoopo.

Feso'ota'i e ala i le APIClient ma le context manager

Vasega APIClient O le auala sili ona faigofie e faʻaaoga ai e ala i le pule o faʻamatalaga. O mea uma e manaʻomia e tuʻuina atu i se faʻataʻitaʻiga o le APIClient vasega o fesoʻotaʻiga faʻamaufaʻailoga na faʻamatalaina i le laasaga muamua.

with APIClient(client_args) as client:

O le a le otometi ona faia e le pule o le context se valaau e saini i le API server, ae na te faia se logo out call pe a alu ese. Afai o nisi mafuaaga e le manaʻomia ai le logoina pe a maeʻa ona galue ma API telefoni, e tatau ona e amata galue e aunoa ma le faʻaogaina o le pule o le tala:

client = APIClient(clieng_args)

Siaki le feso'ota'iga

O le auala pito sili ona faigofie e siaki ai pe fetaui le fesoʻotaʻiga ma faʻamaufaʻailoga faʻapitoa o le faʻaaogaina lea o le metotia siaki_ tamatamailima. Afai e le manuia le faʻamaoniga o le sha1 hash sum mo le tamatamai lima o le server API tusi faamaonia (le auala ua toe faafoi sesē), ona masani lea ona mafua mai i faʻafitauli fesoʻotaʻiga ma e mafai ona tatou taofia le faʻatinoina o le polokalame (pe tuʻuina atu i le tagata faʻaoga le avanoa e faʻasaʻo ai faʻamatalaga fesoʻotaʻiga):

    if client.check_fingerprint() is False:
        print("Could not get the server's fingerprint - Check connectivity with the server.")
        exit(1)

Faamolemole ia matau i le lumanai o le vasega APIClient o le a siaki uma API valaau (metotia api_call и api_query, o le a tatou talanoa atili e uiga ia i latou) sha1 tusi tusi tamatamai lima i luga o le API server. Ae afai, pe a siaki le sha1 fingerprint o le API server certificate, ua iloa se mea sese (le tusi faamaonia e le o iloa pe ua suia), o le auala siaki_ tamatamailima o le a maua ai le avanoa e faʻaopoopo / suia faʻamatalaga e uiga i luga o le masini i le lotoifale otometi. O lenei siaki e mafai ona faʻagata atoatoa (ae e mafai ona fautuaina pe a faʻaogaina tusitusiga i luga o le API server lava ia, pe a faʻafesoʻotaʻi i le 127.0.0.1), faʻaaoga le APIClientArgs finauga - unsafe_auto_accept (vaai atili e uiga i APIClientArgs muamua i le "Faʻamalamalamaina o laina fesoʻotaʻiga").

client_args = APIClientArgs(unsafe_auto_accept=True)

Ulufale ile API server

У APIClient o loʻo i ai le tele o auala 3 mo le saini i totonu o le API server, ma e malamalama uma i latou i le uiga sid(session-id), lea e faʻaaogaina otometi i valaau API taʻitasi mulimuli ane i le ulutala (o le igoa i le ulutala o lenei parakalafa o le X-chkp-sid), o lea e leai se mana'oga e fa'agasolo atili lenei fa'ailoga.

auala e saini ai

Filifiliga e faʻaaoga ai le saini ma le upega tafaʻilagi (i le faʻataʻitaʻiga, o le username admin ma le password 1q2w3e o loʻo pasia e avea ma finauga faʻatulagaina):

     login = client.login('admin', '1q2w3e')  

O lo'o avanoa fo'i fa'ailoga fa'aopoopo i le auala e saini ai;

continue_last_session=False, domain=None, read_only=False, payload=None

Login_with_api_key method

Filifiliga e fa'aaoga ai se ki api (lagolagoina e amata mai i le pulega R80.40/Management API v1.6, "3TsbPJ8ZKjaJGvFyoFqHFA=" o le aoga autu lea o le API mo se tasi o tagata faʻaoga i luga o le faʻaumau pulega ma le auala faʻatagaina API ki):

     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') 

I le auala login_with_api_key o lo'o avanoa tutusa fa'asologa fa'apitoa e pei o le metotia login.

login_as_root auala

Filifiliga e saini i se masini faʻapitonuʻu ma se API server:

     login = client.login_as_root()

E na'o le lua ta'iala e mafai ona maua mo lenei metotia:

domain=None, payload=None

Ma mulimuli ane valaau le API i latou lava

E lua a matou filifiliga e fai ai API telefoni e ala i metotia api_call и api_query. Se'i tatou iloa po o le a le eseesega oi latou.

api_call

O lenei metotia e faʻaoga mo soʻo se telefoni. E tatau ona tatou pasia le vaega mulimuli mo le valaau api ma le uta i le tino talosaga pe a manaʻomia. Afai e leai se totogi, ona le mafai lea ona tuʻuina atu:

api_versions = client.api_call('show-api-versions') 

Fa'aaliga mo lenei talosaga i lalo ole tipi:

In [23]: api_versions                                                           
Out[23]: 
APIResponse({
    "data": {
        "current-version": "1.6",
        "supported-versions": [
            "1",
            "1.1",
            "1.2",
            "1.3",
            "1.4",
            "1.5",
            "1.6"
        ]
    },
    "res_obj": {
        "data": {
            "current-version": "1.6",
            "supported-versions": [
                "1",
                "1.1",
                "1.2",
                "1.3",
                "1.4",
                "1.5",
                "1.6"
            ]
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})
show_host = client.api_call('show-host', {'name' : 'h_8.8.8.8'})

Fa'aaliga mo lenei talosaga i lalo ole tipi:

In [25]: show_host                                                              
Out[25]: 
APIResponse({
    "data": {
        "color": "black",
        "comments": "",
        "domain": {
            "domain-type": "domain",
            "name": "SMC User",
            "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
        },
        "groups": [],
        "icon": "Objects/host",
        "interfaces": [],
        "ipv4-address": "8.8.8.8",
        "meta-info": {
            "creation-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "creator": "admin",
            "last-modifier": "admin",
            "last-modify-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "lock": "unlocked",
            "validation-state": "ok"
        },
        "name": "h_8.8.8.8",
        "nat-settings": {
            "auto-rule": false
        },
        "read-only": false,
        "tags": [],
        "type": "host",
        "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
    },
    "res_obj": {
        "data": {
            "color": "black",
            "comments": "",
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "groups": [],
            "icon": "Objects/host",
            "interfaces": [],
            "ipv4-address": "8.8.8.8",
            "meta-info": {
                "creation-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "creator": "admin",
                "last-modifier": "admin",
                "last-modify-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "lock": "unlocked",
                "validation-state": "ok"
            },
            "name": "h_8.8.8.8",
            "nat-settings": {
                "auto-rule": false
            },
            "read-only": false,
            "tags": [],
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

api_query

Se'i ou faia se fa'aagaga i le taimi lava lena o lenei metotia e fa'aoga mo na'o telefoni o lo'o aofia ai le fa'asili. O sea fa'ailoga e tupu pe a iai pe ono iai fo'i le tele o fa'amatalaga. Mo se faʻataʻitaʻiga, e mafai ona avea lenei mea ma se talosaga mo se lisi o mea uma na faia i luga o le pule o le pulega. Mo ia talosaga, e toe faʻafoʻi e le API se lisi o mea e 50 e ala i le le mafai (e mafai ona e faʻateleina le tapulaʻa i le 500 mea i le tali). Ma ina ia aua neʻi toso faʻamatalaga i le tele o taimi e ala i le suia o le offset parameter i le API talosaga, o loʻo i ai se auala api_query e otometi ai lenei galuega. Fa'ata'ita'iga o telefoni e mana'omia ai lenei metotia: fa'aaliga-sauniga, fa'aaliga-talimalo, fa'aaliga-feso'ota'iga, fa'aalia-wildcards, fa'aaliga-vaega, fa'aaliga-tuatusi-va, fa'aalia-faigofie-faitotoa, fa'aali-faigofie-fa'aupuga, fa'aali-avanoa-role, fa'aali-fa'atuatuaina-tagata fa'atau, fa'aaliga-fa'aiga. O le mea moni, matou te vaʻai i le tele o upu i le igoa o nei API telefoni, o lea o nei valaau o le a faigofie ona taulimaina api_query

show_hosts = client.api_query('show-hosts') 

Fa'aaliga mo lenei talosaga i lalo ole tipi:

In [21]: show_hosts                                                             
Out[21]: 
APIResponse({
    "data": [
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "192.168.47.1",
            "name": "h_192.168.47.1",
            "type": "host",
            "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
        },
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "8.8.8.8",
            "name": "h_8.8.8.8",
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        }
    ],
    "res_obj": {
        "data": {
            "from": 1,
            "objects": [
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "192.168.47.1",
                    "name": "h_192.168.47.1",
                    "type": "host",
                    "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
                },
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "8.8.8.8",
                    "name": "h_8.8.8.8",
                    "type": "host",
                    "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
                }
            ],
            "to": 2,
            "total": 2
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

Fa'agasologa o taunu'uga o telefoni API

A maeʻa lenei mea e mafai ona e faʻaogaina fesuiaiga ma metotia o le vasega APITali(i totonu o le context manager ma fafo). I le vasega APITali 4 metotia ma 5 fesuiaiga ua muai faʻamalamalamaina;

Fa'afaigofie le Check Point API ma le Python SDK

manuia

Muamua, o se manatu lelei le mautinoa o le API telefoni na manuia ma toe faʻafoʻi mai se iʻuga. E i ai se metotia mo lenei mea manuia:

In [49]: api_versions.success                                                   
Out[49]: True

Fa'afo'i le Sa'o pe a manuia le valaau API (fa'ailoga tali - 200) ma le Sese pe a le manuia (so'o se isi fa'ailoga tali). E faigofie ona faʻaoga vave pe a uma se API telefoni e faʻaalia ai faʻamatalaga eseese e faʻatatau i le code tali.

if api_ver.success: 
    print(api_versions.data) 
else: 
    print(api_versions.err_message) 

statuscode

Toe fa'afo'i le code tali pe a mae'a le telefoni API.

In [62]: api_versions.status_code                                               
Out[62]: 400

Fa'ailoga e mafai ona tali atu: 200,400,401,403,404,409,500,501.

seti_success_status

I lenei tulaga, atonu e tatau ona suia le tau o le tulaga manuia. Fa'atekinisi, e mafai ona e tu'uina so'o se mea iina, e o'o lava i se manoa masani. Ae o se faʻataʻitaʻiga moni o le toe setiina lea o le parakalafa i le False i lalo o nisi tulaga faʻatasi. I lalo ifo, faʻalogo i le faʻataʻitaʻiga pe a iai ni galuega o loʻo taʻavale i luga o le pulega pulega, ae o le a matou manatu o lenei talosaga ua le manuia (o le a matou setiina le suiga manuia i sesē, e ui i le mea moni na manuia le valaau API ma toe faafoi le code 200).

for task in task_result.data["tasks"]:
    if task["status"] == "failed" or task["status"] == "partially succeeded":
        task_result.set_success_status(False)
        break

tali()

O le auala tali e mafai ai ona e matamata i le lomifefiloi ma le code tali (status_code) ma le tino tali (tino).

In [94]: api_versions.response()                                                
Out[94]: 
{'status_code': 200,
 'data': {'current-version': '1.6',
  'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}}

faʻamatalaga

Fa'atagaina oe e va'ai na'o le tino o le tali (tino) e aunoa ma ni fa'amatalaga le mana'omia.

In [93]: api_versions.data                                                      
Out[93]: 
{'current-version': '1.6',
 'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}

error_message

O lenei faʻamatalaga e naʻo le taimi na tupu ai se mea sese aʻo faʻagasolo le talosaga API (faʻailoga tali 200). Faataitaiga galuega faatino

In [107]: api_versions.error_message                                            
Out[107]: 'code: generic_err_invalid_parameter_namenmessage: Unrecognized parameter [1]n'

Faataitaiga aoga

O fa'ata'ita'iga ia o lo'o fa'aogaina le API telefoni na fa'aopoopo i le Pulega API 1.6.

Muamua, se'i o tatou va'ava'ai pe fa'apefea ona galue le telefoni add-host и fa'aopoopo-tuatusi-lautele. Fa'apea tatou te mana'omia le fatuina o tuatusi IP uma o le subnet 192.168.0.0/24, o le octet mulimuli o le 5, e avea ma mea faitino o le ituaiga talimalo, ma tusi isi tuatusi IP uma e avea ma mea faitino o le ituaiga tuatusi. I le tulaga lea, tuuese le tuatusi subnet ma le tuatusi faasalalau.

O lea la, o loʻo i lalo se faʻamaumauga e foia ai lenei faʻafitauli ma fatuina 50 mea faitino o le ituaiga talimalo ma 51 mea faitino o le tuʻufaʻatasiga o tuatusi. Ina ia foia le faʻafitauli, 101 API telefoni e manaʻomia (e le o faitauina le telefoni faʻasalalau mulimuli). E le gata i lea, i le faʻaaogaina o le timeit module, matou te faʻatatauina le taimi e faʻatino ai le tusitusiga seia oʻo ina faʻasalalau suiga.

Fa'amatalaga e fa'aaoga ai le add-host ma le add-address-range

import timeit
from cpapi import APIClient, APIClientArgs

start = timeit.default_timer()

first_ip = 1
last_ip = 4

client_args = APIClientArgs(server="192.168.47.240")

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     for ip in range(5,255,5):
         add_host = client.api_call("add-host", {"name" : f"h_192.168.0.{ip}", "ip-address": f'192.168.0.{ip}'})
     while last_ip < 255:
         add_range = client.api_call("add-address-range", {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"})
         first_ip+=5
         last_ip+=5
     stop = timeit.default_timer() 
     publish = client.api_call("publish")
     
print(f'Time to execute batch request: {stop - start} seconds')

I totonu o laʻu siosiomaga lab, o lenei tusitusiga e ave i le va o le 30 ma le 50 sekone e faʻatino ai, e faʻatatau i le uta i luga o le pulega pulega.

Sei o tatou vaʻai pe faʻafefea ona foia le faʻafitauli lava e tasi e faʻaaoga ai se API telefoni fa'aopoopo-mea-fa'a'a'aiga, lagolago lea na fa'aopoopoina ile API version 1.6. O lenei valaau e mafai ai ona e faia ni mea se tele i le taimi e tasi i le tasi API talosaga. E le gata i lea, o nei mea e mafai ona avea ma mea faitino o ituaiga eseese (mo se faʻataʻitaʻiga, 'au, subnets ma tuatusi tuatusi). O le mea lea, e mafai ona foia la matou galuega i totonu o le faʻavae o le tasi API telefoni.

Fa'amatalaga e fa'aaoga ai mea fa'aopoopo-vaega

import timeit
from cpapi import APIClient, APIClientArgs

start = timeit.default_timer()

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip = []
objects_list_range = []

for ip in range(5,255,5):
    data = {"name": f'h_192.168.0.{ip}', "ip-address": f'192.168.0.{ip}'}
    objects_list_ip.append(data)
    
first_ip = 1
last_ip = 4


while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"}
    objects_list_range.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip
}, {
    "type" : "address-range",
    "list" : objects_list_range
  }]
}


with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     add_objects_batch = client.api_call("add-objects-batch", data_for_batch)
     stop = timeit.default_timer() 
     publish = client.api_call("publish")
     
print(f'Time to execute batch request: {stop - start} seconds')

Ma o le faʻatinoina o lenei tusitusiga i totonu o laʻu siosiomaga lab e manaʻomia mai le 3 i le 7 sekone, faʻalagolago i le uta i luga o le pulega pulega. O lona uiga, i le averesi, i luga o 101 API mea faitino, o le ituaiga ituaiga telefoni e 10 taimi vave. I luga o se numera tele o mea faitino o le eseesega o le a sili atu ona manaia.

Se'i o tatou va'ai pe fa'apefea ona galue seti-mea-vaega. I le faʻaaogaina o lenei API, e mafai ona tatou suia tele soʻo se parakalafa. Sei o tatou seti le afa muamua o tuatusi mai le faʻataʻitaʻiga muamua (e oʻo atu i le .124 'au, ma laina foʻi) i le sienna lanu, ma tuʻu le lanu khaki i le afa lona lua o tuatusi.

Suia le lanu o mea na faia i le faʻataʻitaʻiga muamua

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip_first = []
objects_list_range_first = []
objects_list_ip_second = []
objects_list_range_second = []

for ip in range(5,125,5):
    data = {"name": f'h_192.168.0.{ip}', "color": "sienna"}
    objects_list_ip_first.append(data)
    
for ip in range(125,255,5):
    data = {"name": f'h_192.168.0.{ip}', "color": "khaki"}
    objects_list_ip_second.append(data)
    
first_ip = 1
last_ip = 4
while last_ip < 125:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "sienna"}
    objects_list_range_first.append(data)
    first_ip+=5
    last_ip+=5
    
while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "khaki"}
    objects_list_range_second.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch_first  = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip_first
}, {
    "type" : "address-range",
    "list" : objects_list_range_first
  }]
}

data_for_batch_second  = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip_second
}, {
    "type" : "address-range",
    "list" : objects_list_range_second
  }]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') 
     set_objects_batch_first = client.api_call("set-objects-batch", data_for_batch_first)
     set_objects_batch_second = client.api_call("set-objects-batch", data_for_batch_second)
     publish = client.api_call("publish")

E mafai ona e tapeina le tele o mea faitino i le tasi API telefoni faʻaaoga tape-mea-fa'aputuga. Se'i o tatou va'ai i se fa'ata'ita'iga fa'ailoga e tape uma 'au na faia muamua e ala i fa'aopoopo-mea-fa'a'a'aiga.

Aveese mea e faʻaaoga ai le tape-objects-batch

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip = []
objects_list_range = []

for ip in range(5,255,5):
    data = {"name": f'h_192.168.0.{ip}'}
    objects_list_ip.append(data)

first_ip = 1
last_ip = 4
while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}"}
    objects_list_range.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip
}, {
    "type" : "address-range",
    "list" : objects_list_range
  }]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     delete_objects_batch = client.api_call("delete-objects-batch", data_for_batch)
     publish = client.api_call("publish")

print(delete_objects_batch.data)

O galuega uma e aliali mai i faʻasalalauga fou o le Check Point software e vave maua mai API telefoni. O le mea lea, i le R80.40 o ia "foliga" e pei o le Toe faʻafoʻisia ma le Smart Task na faʻaalia, ma na vave saunia telefoni API mo i latou. E le gata i lea, o galuega uma pe a siitia mai le Legacy consoles i le Unified Policy mode e maua ai foi le lagolago API. Mo se faʻataʻitaʻiga, o le faʻafouga ua leva ona faʻatali i le polokalama faʻapipiʻi R80.40 o le faʻauluina lea o le HTTPS Inspection policy mai le Legacy mode i le Unified Policy mode, ma o lenei gaioiga na vave maua ai le API. O se faʻataʻitaʻiga lea o tulafono faʻaopoopo e faʻaopoopoina se tulafono i le tulaga pito i luga o le HTTPS Inspection policy e le aofia ai vaega 3 mai asiasiga (Soifua Maloloina, Tupe, Auaunaga a le Malo), lea e faʻasaina mai asiasiga e tusa ai ma tulafono a le tele o atunuu.

Fa'aopoopo se tulafono ile tulafono ole Su'esu'ega HTTPS

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

data = {
  "layer" : "Default Layer",
  "position" : "top",
  "name" : "Legal Requirements",
  "action": "bypass",
  "site-category": ["Health", "Government / Military", "Financial Services"]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     add_https_rule = client.api_call("add-https-rule", data)
     publish = client.api_call("publish")

Fa'agasolo fa'amaumauga a le Python i luga ole 'au'aunaga fa'afoe o le Check Point

E tutusa mea uma FAITAU.md o lo'o i ai fa'amatalaga i le auala e fa'agasolo sa'o ai tusitusiga Python mai le 'au'aunaga fa'atonutonu. E mafai ona faigofie pe a le mafai ona e faʻafesoʻotaʻi i le API server mai se isi masini. Sa ou pueina se vitio ono minute lea ou te tilotilo ai i le faapipiiina o le module cpapi ma foliga o le faʻaogaina o tusitusiga Python i luga o le server pule. E fai ma fa'ata'ita'iga, o lo'o fa'agasolo se fa'amaumauga e fa'autometi ai le fa'atulagaina o se faitoto'a fou mo se galuega e pei o le su'eina o feso'ota'iga Siaki Puipuiga. Faatasi ai ma foliga na tatau ona ou taulimaina: o le galuega e leʻi faʻaalia i le Python 2.7 faiga, ina ia faʻagasolo le faʻamatalaga e ulufale ai le tagata faʻaoga, e faʻaaogaina se galuega raw_input. A leai, o le code e tutusa ma le lafoaia mai isi masini, ae sili atu ona faigofie le faʻaaogaina o le galuega login_as_root, ina ia aua neʻi faʻamaonia lou lava igoa ole igoa, upu faʻaulu ma le tuatusi IP o le faʻaumau pulega.

Taaalo i le vitio

Fa'amatalaga mo le seti vave o le Siaki Puipuiga

from __future__ import print_function
import getpass
import sys, os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from cpapi import APIClient, APIClientArgs

def main():
    with APIClient() as client:
       # if client.check_fingerprint() is False:
       #     print("Could not get the server's fingerprint - Check connectivity with the server.")
       #     exit(1)
        login_res = client.login_as_root()

        if login_res.success is False:
            print("Login failed:n{}".format(login_res.error_message))
            exit(1)

        gw_name = raw_input("Enter the gateway name:")
        gw_ip = raw_input("Enter the gateway IP address:")
        if sys.stdin.isatty():
            sic = getpass.getpass("Enter one-time password for the gateway(SIC): ")
        else:
            print("Attention! Your password will be shown on the screen!")
            sic = raw_input("Enter one-time password for the gateway(SIC): ")
        version = raw_input("Enter the gateway version(like RXX.YY):")
        add_gw = client.api_call("add-simple-gateway", {'name' : gw_name, 'ipv4-address' : gw_ip, 'one-time-password' : sic, 'version': version.capitalize(), 'application-control' : 'true', 'url-filtering' : 'true', 'ips' : 'true', 'anti-bot' : 'true', 'anti-virus' : 'true', 'threat-emulation' : 'true'})
        if add_gw.success and add_gw.data['sic-state'] != "communicating":
            print("Secure connection with the gateway hasn't established!")
            exit(1)
        elif add_gw.success:
            print("The gateway was added successfully.")
            gw_uid = add_gw.data['uid']
            gw_name = add_gw.data['name']
        else:
            print("Failed to add the gateway - {}".format(add_gw.error_message))
            exit(1)

        change_policy = client.api_call("set-access-layer", {"name" : "Network", "applications-and-url-filtering": "true", "content-awareness": "true"})
        if change_policy.success:
            print("The policy has been changed successfully")
        else:
            print("Failed to change the policy- {}".format(change_policy.error_message))
        change_rule = client.api_call("set-access-rule", {"name" : "Cleanup rule", "layer" : "Network", "action": "Accept", "track": {"type": "Detailed Log", "accounting": "true"}})
        if change_rule.success:
            print("The cleanup rule has been changed successfully")
        else:
            print("Failed to change the cleanup rule- {}".format(change_rule.error_message))

        # publish the result
        publish_res = client.api_call("publish", {})
        if publish_res.success:
            print("The changes were published successfully.")
        else:
                print("Failed to publish the changes - {}".format(install_tp_policy.error_message))

        install_access_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'true',  "threat-prevention" : 'false', "targets" : gw_uid})
        if install_access_policy.success:
            print("The access policy has been installed")
        else:
                print("Failed to install access policy - {}".format(install_tp_policy.error_message))

        install_tp_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'false',  "threat-prevention" : 'true', "targets" : gw_uid})
        if install_tp_policy.success:
            print("The threat prevention policy has been installed")
        else:
            print("Failed to install threat prevention policy - {}".format(install_tp_policy.error_message))
        
        # add passwords and passphrases to dictionary
        with open('additional_pass.conf') as f:
            line_num = 0
            for line in f:
                line_num += 1
                add_password_dictionary = client.api_call("run-script", {"script-name" : "Add passwords and passphrases", "script" : "printf "{}" >> $FWDIR/conf/additional_pass.conf".format(line), "targets" : gw_name})
                if add_password_dictionary.success:
                    print("The password dictionary line {} was added successfully".format(line_num))
                else:
                    print("Failed to add the dictionary - {}".format(add_password_dictionary.error_message))

main()

O se fa'ata'ita'iga faila o lo'o i ai se lomifefiloi o upu fa'aigoa additional_pass.conf
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","пароль","Пароль","Ключ","ключ","шифр","Шифр"]
}

iʻuga

O lenei tusiga e suʻesuʻeina naʻo avanoa masani o galuega Python SDK ma le module cpapi(e pei ona e mateina, o upu tutusa ia), ma e ala i le suʻesuʻeina o le code i totonu o lenei module o le a e mauaina ai le tele o avanoa e galue ai. E mafai ona e manaʻo e faʻaopoopo i au lava vasega, galuega, metotia ma fesuiaiga. E mafai ona e fa'asoa i taimi uma lau galuega ma va'ai i isi fa'amaumauga mo le Su'ega i le vaega CodeHub i totonu o le nuu CheckMates, lea e tu'ufa'atasia uma le au atina'e oloa ma tagata fa'aoga.

Manuia coding ma faafetai mo le faitau seia oo i le iuga!

puna: www.habr.com

Faʻatau talimalo faʻatuatuaina mo nofoaga ma DDoS puipuiga, VPS VDS servers 🔥 Fa'atau le 'upega tafa'ilagi talimalo fa'atuatuaina ma le puipuiga DDoS, 'au'aunaga VPS VDS | ProHoster