Rwy’n siŵr bod pawb sydd erioed wedi gweithio gyda nhw
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?
- Gweinyddwyr system sydd am symleiddio neu awtomeiddio tasgau ffurfweddu Pwynt Gwirio arferol;
- Cwmnïau sydd am integreiddio Check Point ag atebion eraill (systemau rhithwiroli, systemau tocynnau, systemau rheoli cyfluniad, ac ati);
- 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:
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:
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.
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:
- API + cli yn fwy addas ar gyfer pobl sydd wedi arfer Cisco;
- API + cragen ar gyfer cymhwyso sgriptiau a chyflawni tasgau arferol;
- 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
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
Check Point API + Postman
Hefyd yn gyfleus i'w ddefnyddio Check Point Web API ar y cyd â
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:
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
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
PSS Ar gyfer cwestiynau technegol yn ymwneud â sefydlu Check Point, gallwch
Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg.
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