Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Rwy’n siŵr bod pawb sydd erioed wedi gweithio gyda nhw Gwiriwch Point, bu cwyn am amhosibilrwydd golygu'r ffurfweddiad o'r llinell orchymyn. Mae hyn yn arbennig o rhyfedd i'r rhai sydd wedi gweithio gyda Cisco ASA o'r blaen, lle gellir ffurfweddu popeth yn y CLI. Gyda Check Point dyma'r ffordd arall - perfformiwyd yr holl osodiadau diogelwch o'r rhyngwyneb graffigol yn unig. Fodd bynnag, mae rhai pethau'n gwbl anghyfleus i'w gwneud trwy'r GUI (hyd yn oed un mor gyfleus â Check Point's). Er enghraifft, mae'r dasg o ychwanegu 100 o westeion neu rwydweithiau newydd yn troi'n weithdrefn hir a diflas. Ar gyfer pob gwrthrych bydd yn rhaid i chi glicio ar y llygoden sawl gwaith a nodi'r cyfeiriad IP. Mae'r un peth yn wir am greu grŵp o wefannau neu lofnodion IPS galluogi / analluogi torfol. Yn yr achos hwn, mae tebygolrwydd uchel o wneud camgymeriad.

Digwyddodd “gwyrth” yn gymharol ddiweddar. Gyda rhyddhau'r fersiwn newydd Gaia R80 cyhoeddwyd y cyfle Defnydd API, sy'n agor cyfleoedd eang ar gyfer awtomeiddio gosodiadau, gweinyddu, monitro, ac ati. Nawr gallwch chi:

  • creu gwrthrychau;
  • ychwanegu neu olygu rhestrau mynediad;
  • galluogi/analluogi llafnau;
  • ffurfweddu rhyngwynebau rhwydwaith;
  • gosod polisïau;
  • a llawer mwy.

A dweud y gwir, dydw i ddim yn deall sut mae'r newyddion hwn wedi'i basio gan Habr. Yn yr erthygl hon byddwn yn disgrifio'n gryno sut i ddefnyddio'r API ac yn darparu sawl enghraifft ymarferol. Gosodiadau CheckPoint gan ddefnyddio sgriptiau.

Hoffwn archebu ar unwaith bod yr API yn cael ei ddefnyddio ar gyfer y gweinydd Rheoli yn unig. Y rhai. Mae'n dal yn amhosibl rheoli pyrth heb weinydd Rheoli.

Pwy all ddefnyddio'r API hwn mewn egwyddor?

  1. Gweinyddwyr system sydd am symleiddio neu awtomeiddio tasgau ffurfweddu Pwynt Gwirio arferol;
  2. Cwmnïau sydd am integreiddio Check Point ag atebion eraill (systemau rhithwiroli, systemau tocynnau, systemau rheoli cyfluniad, ac ati);
  3. Integreiddwyr systemau sydd am safoni gosodiadau neu greu cynhyrchion ychwanegol sy'n gysylltiedig â Check Point.

Cynllun nodweddiadol

Felly, gadewch i ni ddychmygu cynllun nodweddiadol gyda Check Point:

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Yn ôl yr arfer mae gennym borth (SG), gweinydd rheoli (SMS) a chonsol gweinyddol (SmartConsole). Yn yr achos hwn, mae'r broses ffurfweddu porth arferol yn edrych fel hyn:

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Y rhai. Yn gyntaf mae angen i chi redeg ar gyfrifiadur y gweinyddwr SmartConsole, yr ydym yn cysylltu ag ef i'r gweinydd Rheoli (SMS). Gwneir gosodiadau diogelwch ar y SMS, a dim ond wedyn y cânt eu cymhwyso (gosod polisi) i borth (SG).

Gan ddefnyddio API Rheolaeth, gallwn yn y bôn hepgor y pwynt cyntaf (lansio SmartConsole) a defnyddio Gorchmynion API yn uniongyrchol i'r gweinydd Rheoli (SMS).

Ffyrdd o ddefnyddio'r API

Mae pedair prif ffordd o olygu'r ffurfweddiad gan ddefnyddio'r API:

1) Defnyddio'r cyfleustodau mgmt_cli

Enghraifft - # mgmt_cli ychwanegu enw gwesteiwr gwesteiwr1 ip-cyfeiriad 192.168.2.100
Mae'r gorchymyn hwn yn cael ei lansio o linell orchymyn Gweinyddwr Rheoli (SMS). Rwy'n credu bod cystrawen y gorchymyn yn glir - mae host1 yn cael ei greu gyda'r cyfeiriad 192.168.2.100.

2) Rhowch orchmynion API trwy clish (yn y modd arbenigol)

Yn y bôn, y cyfan sydd angen i chi ei wneud yw mewngofnodi i'r llinell orchymyn (mewngofnodi mgmt) o dan y cyfrif a ddefnyddir wrth gysylltu trwy SmartConsole (neu gyfrif gwraidd). Yna gallwch chi fynd i mewn Gorchmynion API (yn yr achos hwn nid oes angen defnyddio'r cyfleustodau cyn pob gorchymyn mgmt_cli). Gallwch greu llawn-fledged Sgriptiau BASH. Enghraifft o sgript y mae'r gwesteiwr yn ei chreu:

Sgript 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

Os oes gennych ddiddordeb, gallwch wylio'r fideo cyfatebol:

3) Trwy SmartConsole trwy agor y ffenestr CLI

Y cyfan sydd angen i chi ei wneud yw agor y ffenestr CLI yn syth o SmartConsole, fel y dangosir yn y llun isod.

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Yn y ffenestr hon, gallwch chi ddechrau mynd i mewn i orchmynion API ar unwaith.

4) Gwasanaethau Gwe. Defnyddiwch gais Post HTTPS (REST API)

Yn ein barn ni, dyma un o'r dulliau mwyaf addawol, oherwydd yn eich galluogi i “adeiladu” cymwysiadau cyfan yn seiliedig ar rheoli gweinydd gweinydd (sori am y tautology). Isod byddwn yn edrych ar y dull hwn yn fwy manwl.

I grynhoi:

  1. API + cli yn fwy addas ar gyfer pobl sydd wedi arfer Cisco;
  2. API + cragen ar gyfer cymhwyso sgriptiau a chyflawni tasgau arferol;
  3. REST API ar gyfer awtomeiddio.

Galluogi'r API

Yn ddiofyn, mae'r API wedi'i alluogi ar weinyddion rheoli gyda mwy na 4GB o RAM a chyfluniadau annibynnol gyda mwy nag 8GB o RAM. Gallwch wirio'r statws gan ddefnyddio'r gorchymyn: statws ap

Os yw'n ymddangos bod yr ap yn anabl, yna mae'n eithaf hawdd ei alluogi trwy SmartConsole: Rheoli a Gosodiadau > Llafnau > API Rheolaeth > Gosodiadau Uwch

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Yna cyhoeddi (Cyhoeddi) newid a rhedeg y gorchymyn ailgychwyn api.

Ceisiadau gwe + Python

I weithredu gorchmynion API, gallwch ddefnyddio ceisiadau Gwe gan ddefnyddio Python a llyfrgelloedd ceisiadau, json. Yn gyffredinol, mae strwythur cais gwe yn cynnwys tair rhan:

1) Cyfeiriad

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


2) Penawdau HTTP

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


3) llwyth tâl cais

Testun mewn fformat JSON yn cynnwys y paramedrau gwahanol

Enghraifft ar gyfer galw gwahanol orchmynion:


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

Dyma rai tasgau nodweddiadol y byddwch yn dod ar eu traws amlaf wrth weinyddu Check Point.

1) Enghraifft o swyddogaethau awdurdodi a allgofnodi:

Sgript


    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) Troi'r llafnau ymlaen a sefydlu'r rhwydwaith:

Sgript


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) Newid rheolau wal dân:

Sgript


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) Ychwanegu haen Cais:

Sgript


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) Cyhoeddi a gosod y polisi, gwirio gweithrediad y gorchymyn (tasg-id):

Sgript


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) Ychwanegu gwesteiwr:

Sgript


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) Ychwanegu maes Atal Bygythiad:

Sgript


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) Gweld y rhestr o sesiynau

Sgript


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) Creu proffil newydd:

Sgript


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) Newid y weithred ar gyfer llofnod yr IPS:

Sgript


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) Ychwanegwch eich gwasanaeth:

Sgript


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) Ychwanegu categori, safle neu grŵp:

Sgript


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

Yn ogystal, gyda chymorth API Gwe gallwch ychwanegu a dileu rhwydweithiau, gwesteiwyr, rolau mynediad, ac ati. Gellir addasu llafnau Gwrthfeirws, Antibot, IPS, VPN. Mae hyd yn oed yn bosibl gosod trwyddedau gan ddefnyddio'r gorchymyn rhedeg-sgript. Mae holl orchmynion Check Point API i'w gweld yma yma.

Check Point API + Postman

Hefyd yn gyfleus i'w ddefnyddio Check Point Web API ar y cyd â Postmon. Mae gan Postman fersiynau bwrdd gwaith ar gyfer Windows, Linux a MacOS. Yn ogystal, mae yna ategyn ar gyfer Google Chrome. Dyma beth fyddwn ni'n ei ddefnyddio. Yn gyntaf mae angen i chi ddod o hyd i Postman yn Google Chrome Store a gosod:

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Gan ddefnyddio'r cyfleustodau hwn, byddwn yn gallu cynhyrchu ceisiadau Gwe i'r API Check Point. Er mwyn peidio â chofio'r holl orchmynion API, mae'n bosibl mewnforio'r hyn a elwir yn gasgliadau (templedi), sydd eisoes yn cynnwys yr holl orchmynion angenrheidiol:

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Yma fe welwch Casgliad gyfer R80.10. Ar ôl mewnforio, bydd templedi gorchymyn API ar gael i ni:

Check Point R80.10 API. Rheolaeth trwy CLI, sgriptiau a mwy

Yn fy marn i, mae hyn yn gyfleus iawn. Gallwch chi ddechrau datblygu cymwysiadau yn gyflym gan ddefnyddio'r API Check Point.

Pwynt Gwirio + Atebol

Hoffwn hefyd nodi bod yna Ateb y modiwl ar gyfer CheckPoint API. Mae'r modiwl yn caniatáu ichi reoli ffurfweddiadau, ond nid yw mor gyfleus ar gyfer datrys problemau egsotig. Mae ysgrifennu sgriptiau mewn unrhyw iaith raglennu yn darparu datrysiadau mwy hyblyg a chyfleus.

Allbwn

Dyma lle mae'n debyg y byddwn ni'n gorffen ein hadolygiad byr o'r API Check Point. Yn fy marn i, roedd y nodwedd hon yn hir-ddisgwyliedig ac yn angenrheidiol. Mae ymddangosiad yr API yn agor cyfleoedd eang iawn i weinyddwyr system ac integreiddwyr system sy'n gweithio gyda chynhyrchion Check Point. Cerddorfa, awtomeiddio, adborth SIEM... mae'r cyfan yn bosibl nawr.

PS Mwy o erthyglau am Gwiriwch Point fel bob amser gallwch ddod o hyd iddo ar ein blog Habr neu ar y blog yn Ar-lein.

PSS Ar gyfer cwestiynau technegol yn ymwneud â sefydlu Check Point, gallwch yma

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

Ydych chi'n bwriadu defnyddio'r API?

  • 70,6%Oes12

  • 23,5%Rhif 4

  • 5,9%Eisoes yn defnyddio 1

Pleidleisiodd 17 o ddefnyddwyr. Ymataliodd 3 o ddefnyddwyr.

Ffynhonnell: hab.com

Ychwanegu sylw