مون کي پڪ آهي ته هر ڪنهن سان گڏ ڪم ڪيو آهي
Относительно недавно случилось “чудо”. С выходом новой версии گيا R80 موقعي جو اعلان ڪيو ويو API استعمال، جيڪو کولي ٿو وسيع موقعن لاءِ خودڪار سيٽنگون، انتظاميه، نگراني، وغيره. هاڻي توهان ڪري سگهو ٿا:
- شيون ٺاهيو؛
- добавлять или править access-list-ы;
- включать/отключать блейды;
- نيٽ ورڪ انٽرفيس ترتيب ڏيڻ؛
- پاليسين کي انسٽال ڪرڻ؛
- ۽ گهڻو ڪجهه.
Если честно, не понимаю как эта новость прошла мимо Хабра. В данной статье мы вкратце опишем как пользоваться API и приведем несколько практических примеров اسڪرپٽ استعمال ڪندي پوائنٽ سيٽنگون چيڪ ڪريو.
Сразу хотел бы оговориться, API используется только для Management сервера. Т.е. управлять шлюзами без Management сервера по прежнему невозможно.
ڪير هن API کي اصول ۾ استعمال ڪري سگهي ٿو؟
- Системные администраторы, которые хотят упростить или автоматизировать рутинные задачи по настройке Check Point;
- ڪمپنيون جيڪي ٻين حلن سان چيڪ پوائنٽ کي ضم ڪرڻ چاهيندا آهن (ورچوئلائيزيشن سسٽم، ٽڪيٽ سسٽم، ترتيب واري انتظاماتي نظام، وغيره)؛
- سسٽم انٽيگريٽر جيڪي سيٽنگون معياري ڪرڻ يا اضافي چيڪ پوائنٽ سان لاڳاپيل مصنوعات ٺاهڻ چاهيندا آهن.
عام اسڪيم
تنهن ڪري، اچو ته تصور ڪريون هڪ عام اسڪيم سان چيڪ پوائنٽ:
هميشه وانگر اسان وٽ هڪ گيٽ وي (SG)، انتظام سرور (ايس ايم ايس) ۽ ايڊمن ڪنسول (SmartConsole). При этом обычный процесс настройки шлюза выглядит следующим образом:
اهي. پهرين توهان کي منتظم جي ڪمپيوٽر تي هلائڻ جي ضرورت آهي SmartConsole، جنهن سان اسان مينيجمينٽ سرور سان ڳنڍيون ٿا (ايس ايم ايس). سيڪيورٽي سيٽنگون ايس ايم ايس تي ڪيون وينديون آهن، ۽ صرف پوء لاڳو ٿينديون آهن (install policyگيٽ وي ڏانهن (SG).
استعمال ڪندي انتظام API, мы в принципе можем пропустить первый пункт (запуск SmartConsole) и применять API حڪم سڌو سنئون مئنيجمينٽ سرور (SMS) ڏانهن.
API استعمال ڪرڻ جا طريقا
Для правки конфигурации с помощью API есть четыре основных способа:
1) استعمال ڪندي mgmt_cli افاديت
مثال - # mgmt_cli شامل ڪريو ميزبان جو نالو host1 ip-address 192.168.2.100
هي حڪم مئنيجمينٽ سرور (SMS) ڪمانڊ لائن مان هلندو آهي. منهنجو خيال آهي ته حڪم جو نحو واضح آهي - host1 ايڊريس 192.168.2.100 سان ٺهيل آهي.
2) ڪلش ذريعي API حڪم داخل ڪريو (ماهر موڊ ۾)
بنيادي طور تي، توهان سڀني کي ڪرڻ جي ضرورت آهي لاگ ان ۾ ڪمانڊ لائن (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) ويب خدمتون. استعمال ڪريو HTTPS پوسٽ جي درخواست (REST API)
На наш взгляд это один из самых перспективных способов, т.к. позволяет “строить” целые приложения по انتظام سرور جو انتظام (معاف ڪجو ٽوٽولوجي لاءِ). هيٺ اسين هن طريقي کي ٿورو وڌيڪ تفصيل سان ڏسندا.
اختصار ڪرڻ:
- API + ڪلائي больше подходит для людей, кто привык к Cisco;
- API + شيل لکت لاڳو ڪرڻ ۽ معمولي ڪمن کي انجام ڏيڻ لاءِ؛
- REST API خودڪار لاء.
API کي فعال ڪرڻ
ڊفالٽ طور، API 4GB کان وڌيڪ ريم سان ۽ 8GB ريم کان وڌيڪ اسٽينڊالون ترتيبن سان مينيجمينٽ سرورز تي فعال ٿيل آھي. توھان حڪم استعمال ڪندي حالت چيڪ ڪري سگھو ٿا: api اسٽيٽس
جيڪڏهن اهو ظاهر ٿئي ٿو ته api غير فعال آهي، پوء ان کي SmartConsole ذريعي فعال ڪرڻ بلڪل آسان آهي: انتظام ۽ سيٽنگون> بليڊ> انتظام API> اعليٰ سيٽنگون
پوء شايع ڪريو (شايع ڪرڻ) تبديل ڪريو ۽ حڪم هلائي api restart.
ويب درخواستون + پٿون
Для выполнения API-команд можно использовать Web-запросы с применением Python ۽ لائبريريون درخواستون, جسن. В общем виде структура web-запроса состоит из трех частей:
1)Адрес
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP Headers
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))
ان کان علاوه، مدد سان ويب API توھان شامل ڪري سگھو ٿا نيٽ ورڪ، ميزبان، رسائي ڪردار، وغيره. Blades ترتيب ڏئي سگهجي ٿو اينٽي وائرس، اينٽي بوٽ، آئي پي ايس، وي پي اين. اهو حڪم استعمال ڪندي لائسنس کي نصب ڪرڻ ممڪن آهي رن-اسڪرپٽ. سڀ چيڪ پوائنٽ API حڪم ملي سگھن ٿا هتي
Check Point API + Postman
پڻ استعمال ڪرڻ آسان Check Point Web API سان گڏ
هن افاديت کي استعمال ڪندي، اسان چيڪ پوائنٽ API ڏانهن ويب درخواستون ٺاهي سگهنداسين. سڀني API حڪمن کي ياد نه ڪرڻ لاء، اهو ممڪن آهي ته نام نهاد مجموعا (ٽيمپليٽس) درآمد ڪرڻ، جيڪي اڳ ۾ ئي سڀني ضروري حڪمن تي مشتمل آهن:
منهنجي خيال ۾، اهو تمام آسان آهي. توھان جلدي شروع ڪري سگھوٿا ڊولپمينٽ ايپليڪيشن استعمال ڪندي چيڪ پوائنٽ API.
چيڪ پوائنٽ + جوابي
مان پڻ نوٽ ڪرڻ چاهيان ٿو ته اتي آهي ناھي
ٿڪل
هي اهو آهي جتي اسان شايد اسان جو مختصر جائزو مڪمل ڪنداسين چيڪ پوائنٽ API. منهنجي خيال ۾، هي مضمون تمام ڊگهو انتظار ۽ ضروري هو. API جو اڀرڻ ٻنهي سسٽم ايڊمنسٽريٽرن ۽ سسٽم انٽيگريٽرز لاءِ تمام وسيع موقعا کولي ٿو جيڪي چيڪ پوائنٽ پروڊڪٽس سان ڪم ڪن ٿا. آرڪيسٽريشن، آٽوميشن، SIEM موٽ... اهو سڀ ڪجهه هاڻي ممڪن آهي.
پي ايس بابت وڌيڪ مضمون
PSS چيڪ پوائنٽ قائم ڪرڻ سان لاڳاپيل ٽيڪنيڪل سوالن لاءِ، توهان ڪري سگهو ٿا
صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا.
Планируете ли вы использовать API?
-
70,6٪ها 12
-
23,5٪نمبر 4
-
5,9٪اڳ ۾ ئي استعمال ڪري رهيو آهي 1
17 صارفين ووٽ ڪيو. 3 استعمال ڪندڙن کي روڪيو ويو.
جو ذريعو: www.habr.com