Ман боварӣ дорам, ки ҳар касе, ки ягон бор бо он кор кардааст
«Муъчиза» нисбатан ба наздикй руй дод. Бо нашри версияи нав Gaia R80 имконият эълон карда шуд Истифодаи API, ки барои автоматикунонии танзимот, маъмурият, назорат ва ғайра имкониятҳои васеъ мекушояд. Акнун шумо метавонед:
- сохтани объектҳо;
- илова ё таҳрир рӯйхати дастрасӣ;
- фаъол / ғайрифаъол blades;
- танзим кардани интерфейсҳои шабака;
- насб кардани сиёсат;
- ва бештар.
Ростӣ, ман намефаҳмам, ки ин хабар аз ҷониби Ҳабр чӣ гуна гузашт. Дар ин мақола мо ба таври мухтасар шарҳ медиҳем, ки чӣ тавр истифода бурдани API ва якчанд мисолҳои амалӣ пешкаш мекунем. Танзимоти CheckPoint бо истифода аз скриптҳо.
Ман мехоҳам фавран қайд кунам, ки API танҳо барои сервери идоракунӣ истифода мешавад. Онхое. Бе сервери идоракунӣ идора кардани шлюзҳо ҳоло ҳам ғайриимкон аст.
Принсипи кӣ метавонад ин API-ро истифода барад?
- Маъмурони система, ки мехоҳанд вазифаҳои конфигуратсияи муқаррарии Check Point-ро содда ё автоматӣ кунанд;
- Ширкатҳое, ки мехоҳанд Check Point-ро бо ҳалли дигар муттаҳид кунанд (системаҳои виртуализатсия, системаҳои чиптаҳо, системаҳои идоракунии конфигуратсия ва ғайра);
- Интеграторҳои система, ки мехоҳанд танзимотро стандартизатсия кунанд ё маҳсулоти иловагии марбут ба Check Point эҷод кунанд.
Схемаи маъмулӣ
Пас, биёед нақшаи маъмулиро бо Check Point тасаввур кунем:
Чун маъмулӣ мо як дарвоза дорем (SG), сервери идоракунӣ (СМС) ва консоли администратор (SmartConsole). Дар ин ҳолат, раванди муқаррарии конфигуратсияи шлюз чунин менамояд:
Онхое. Аввал шумо бояд дар компютери администратор кор кунед SmartConsole, ки бо он мо ба сервери идоракунӣ пайваст мешавем (СМС). Танзимоти амниятӣ дар SMS сохта мешаванд ва танҳо баъд истифода мешаванд (сиёсати насб кунед) ба дарвоза (SG).
Ҳангоми истифода API-и идоракунии, мо метавонем асосан нуқтаи аввалро гузаред (SmartConsole-ро оғоз кунед) ва истифода баред Фармонҳои API бевосита ба сервери идоракунӣ (SMS).
Роҳҳои истифодаи API
Чор роҳи асосии таҳрир кардани конфигуратсия бо истифода аз API мавҷуданд:
1) Истифодаи утилитаи mgmt_cli
Мисол - # mgmt_cli илова номи мизбон host1 IP-адреси 192.168.2.100
Ин фармон аз сатри фармони сервери идоракунӣ (SMS) иҷро мешавад. Ман фикр мекунам, ки синтаксиси фармон равшан аст - host1 бо суроғаи 192.168.2.100 сохта шудааст.
2) Фармонҳои APIро тавассути clish ворид кунед (дар ҳолати коршиносӣ)
Асосан, танҳо ба шумо лозим аст, ки ба сатри фармон ворид шавед (воридшавӣ mgmt) зери ҳисобе, ки ҳангоми пайвастшавӣ тавассути SmartConsole (ё ҳисоби реша) истифода мешавад. Пас шумо метавонед ворид шавед Фармонҳои 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) Тавассути SmartConsole бо кушодани равзанаи CLI
Ба шумо танҳо кушодани тиреза лозим аст CLI рост аз SmartConsole, чунон ки дар расми зер нишон дода шудааст.
Дар ин равзана шумо метавонед фавран ворид кардани фармонҳои APIро оғоз кунед.
4) Хизматрасониҳои веб. Истифодаи дархости Post HTTPS (REST API)
Ба фикри мо, ин яке аз усулхои перспективанок аст, зеро ба шумо имкон медиҳад, ки тамоми барномаҳоро дар асоси "сохта кунед" идоракунии сервери идоракунии (барои тавтология бубахшед). Дар зер мо ин усулро каме муфассалтар дида мебароем.
Барои ҷамъбаст кардан:
- API + cli бештар мувофиқ барои одамоне, ки ба Cisco одат кардаанд;
- API + shell барои татбиқи скриптҳо ва иҷрои вазифаҳои муқаррарӣ;
- оромии API барои автоматика.
Фаъолсозии API
Бо нобаёнӣ, API дар серверҳои идоракунӣ бо зиёда аз 4 ГБ хотираи оперативӣ ва конфигуратсияҳои мустақил бо зиёда аз 8 ГБ RAM фаъол аст. Шумо метавонед вазъиятро бо истифода аз фармон санҷед: ҳолати api
Агар маълум шавад, ки api ғайрифаъол аст, пас онро тавассути SmartConsole фаъол кардан хеле осон аст: Идора ва Танзимотҳо > Blades > API Management > Танзимоти пешрафта
Пас нашр кунед (Publish) тағир дода, фармонро иҷро кунед api аз нав оғоз кунед.
Дархостҳои веб + Python
Барои иҷрои фармонҳои API, шумо метавонед дархостҳои вебро истифода баред Python ва китобхонахо дархостҳо, Ҷон. Умуман, сохтори дархости веб аз се қисм иборат аст:
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) Интишор ва муқаррар кардани сиёсат, иҷрои фармонро тафтиш кунед (task-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))
Илова бар ин, бо ёрии WebAPI шумо метавонед шабакаҳо, ҳостҳо, нақшҳои дастрасӣ ва ғайраҳоро илова ва хориҷ кунед. Пиёзҳо метавонанд фармоишӣ шаванд Антивирус, Антибот, IPS, VPN. Ҳатто бо истифода аз фармон литсензияҳоро насб кардан мумкин аст иҷро-скрипт. Ҳама фармонҳои Check Point API-ро дар ин ҷо пайдо кардан мумкин аст
API Check Point + Postman
Инчунин барои истифода қулай Check Point Web API дар якҷоягӣ бо
Бо истифода аз ин утилита, мо метавонем дархостҳои вебро ба Check Point API тавлид кунем. Барои он ки ҳамаи фармонҳои API-ро дар хотир надоред, воридоти ба ном коллексияҳо (шаблонҳо) имконпазир аст, ки аллакай ҳама фармонҳои заруриро дар бар мегиранд:
Ба фикри ман, ин хеле қулай аст. Шумо метавонед бо истифода аз API Check Point зуд таҳияи барномаҳоро оғоз кунед.
Нуктаи санҷиш + Ансиб
Хаминро кайд кардан мехостам, ки вучуд дорад Фаҳмост
хулоса
Ин аст, ки мо эҳтимолан баррасии кӯтоҳи API Check Point-ро ба анҷом расонем. Ба назари ман, ин хусусият хеле дер интизор ва зарур буд. Пайдоиши API барои ҳам маъмурони система ва ҳам интеграторҳои система, ки бо маҳсулоти Check Point кор мекунанд, имкониятҳои васеъ мекушояд. Оркестратсия, автоматизатсия, фикру мулоҳизаҳои SIEM... ҳамааш ҳоло имконпазир аст.
PS Мақолаҳои бештар дар бораи
PSS Барои саволҳои техникии вобаста ба танзими Check Point, шумо метавонед
Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд.
Оё шумо нақшаи истифодаи API-ро доред?
-
70,6%Ҳа 12
-
23,5%№4
-
5,9%Аллакай истифода 1
17 корбар овоз доданд. 3 корбар худдорӣ карданд.
Манбаъ: will.com