Мен бұрыннан бірге жұмыс істегендердің барлығына сенімдімін
«Ғажайып» салыстырмалы түрде жақында болды. Жаңа нұсқаның шығуымен Gaia R80 мүмкіндігі жарияланды API пайдалану, бұл параметрлерді автоматтандыру, басқару, бақылау және т.б. үшін кең мүмкіндіктер ашады. Енді сіз:
- объектілерді құру;
- кіру тізімдерін қосу немесе өңдеу;
- пышақтарды қосу/өшіру;
- желілік интерфейстерді конфигурациялау;
- саясаттарды орнату;
- и многое другое.
Шынымды айтсам, бұл жаңалықтың Хабрдың қалай өткенін түсінбеймін. Бұл мақалада біз 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 хост атауын қосу хост1 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) CLI терезесін ашу арқылы SmartConsole арқылы
Сізге тек терезені ашу керек CLI тікелей бастап SmartConsole, төмендегі суретте көрсетілгендей.
Бұл терезеде API пәрмендерін енгізуді бірден бастауға болады.
4) Web Services. HTTPS Post сұрауын пайдалану (REST API)
Біздің ойымызша, бұл ең перспективалы әдістердің бірі, өйткені негізінде барлық қолданбаларды «құруға» мүмкіндік береді басқару серверін басқару (таутология үшін кешіріңіз). Төменде біз бұл әдісті біршама егжей-тегжейлі қарастырамыз.
Қорытындылай келе:
- API + cli Cisco-ға үйренген адамдар үшін қолайлы;
- API + қабық сценарийлерді қолдану және күнделікті тапсырмаларды орындау үшін;
- REST API автоматтандыруға арналған.
API қосу
Әдепкі бойынша, API 4 ГБ-тан астам жедел жады бар басқару серверлерінде және 8 ГБ-тан астам жедел жады бар оқшау конфигурацияларда қосылады. Күйді пәрмен арқылы тексеруге болады: api күйі
Егер api өшірілген болса, оны SmartConsole арқылы қосу өте оңай: Басқару және параметрлер > Blades > Басқару API > Қосымша параметрлер
Содан кейін жариялау (Жариялау) өзгертеді және пәрменді іске қосыңыз api қайта іске қосу.
Веб сұраулары + Python
API пәрмендерін орындау үшін веб сұрауларды пайдалана аласыз Python және кітапханалар сұраулар, JSON. Жалпы алғанда, веб-сұраныс құрылымы үш бөліктен тұрады:
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) Саясатты жариялау және орнату, пәрменнің орындалуын тексеру (тапсырма-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 пәрмендерін осы жерден табуға болады
Check Point API + Пошташы
Сондай-ақ пайдалануға ыңғайлы Check Point Web API -мен бірге
Бұл қызметтік бағдарламаны пайдалана отырып, біз Check Point API интерфейсіне веб-сұрауларды жасай аламыз. Барлық API пәрмендерін есте сақтамау үшін барлық қажетті пәрмендерді қамтитын жинақтар (үлгілер) деп аталатындарды импорттауға болады:
Менің ойымша, бұл өте ыңғайлы. Check Point API арқылы қолданбаларды әзірлеуді жылдам бастауға болады.
Check Point + Ansible
бар екенін де атап өткім келеді Қажет
қорытынды
Міне, біз Check Point API қысқаша шолуын аяқтайтын шығармыз. Менің ойымша, бұл функция көптен күткен және қажет болды. API пайда болуы жүйелік әкімшілер үшін де, Check Point өнімдерімен жұмыс істейтін жүйелік интеграторлар үшін де өте кең мүмкіндіктер ашады. Оркестрация, автоматтандыру, SIEM кері байланысы... қазір бәрі мүмкін.
P.S. туралы көбірек мақалалар
P.S.S. Тексеру нүктесін орнатуға қатысты техникалық сұрақтар бойынша сіз аласыз
Сауалнамаға тек тіркелген пайдаланушылар қатыса алады.
API пайдалануды жоспарлап отырсыз ба?
-
70,6%Иә12
-
23,5%№4
-
5,9%Қолданылуда1
17 пайдаланушы дауыс берді. 3 пайдаланушы қалыс қалды.
Ақпарат көзі: www.habr.com