Jsem si jistý, že každý, s kým kdy spolupracoval
Relativně nedávno se stal „zázrak“. S vydáním nové verze Gaia R80 příležitost byla oznámena Využití API, což otevírá široké možnosti pro automatizaci nastavení, administrace, sledování atp. Teď můžeš:
- vytvářet předměty;
- přidávat nebo upravovat přístupové seznamy;
- povolit/zakázat čepele;
- konfigurovat síťová rozhraní;
- instalovat zásady;
- a mnohem více.
Abych byl upřímný, nechápu, jak tato zpráva prošla kolem Habra. V tomto článku stručně popíšeme, jak API používat, a poskytneme několik praktických příkladů. Nastavení CheckPoint pomocí skriptů.
Rád bych si hned zarezervoval, že API se používá pouze pro Management server. Tito. Stále není možné spravovat brány bez Management serveru.
Kdo může toto API v zásadě používat?
- Správci systému, kteří chtějí zjednodušit nebo automatizovat rutinní konfigurační úlohy Check Point;
- Společnosti, které chtějí integrovat Check Point s dalšími řešeními (virtualizační systémy, tiketové systémy, systémy pro správu konfigurace atd.);
- Systémoví integrátoři, kteří chtějí standardizovat nastavení nebo vytvářet další produkty související s Check Point.
Typické schéma
Představme si tedy typické schéma s Check Point:
Jako obvykle máme bránu (SG), server pro správu (SMS) a administrátorská konzole (chytrá konzole). V tomto případě obvyklý proces konfigurace brány vypadá takto:
Tito. Nejprve je třeba spustit na počítači správce chytrá konzole, se kterým se připojujeme k Management serveru (SMS). Nastavení zabezpečení se provedou na SMS a teprve poté se použijí (zásady instalace) do brány (SG).
Při použití Management API, můžeme v podstatě přeskočit první bod (spustit SmartConsole) a použít API příkazy přímo na Management server (SMS).
Způsoby použití API
Existují čtyři hlavní způsoby, jak upravit konfiguraci pomocí API:
1) Pomocí nástroje mgmt_cli
Příklad - # mgmt_cli přidat název hostitele IP-adresa hostitele1 192.168.2.100
Tento příkaz se spouští z příkazového řádku Management Server (SMS). Myslím, že syntaxe příkazu je jasná - hostitel1 je vytvořen s adresou 192.168.2.100.
2) Zadejte příkazy API přes clish (v expertním režimu)
V podstatě vše, co musíte udělat, je přihlásit se do příkazového řádku (mgmt přihlášení) pod účtem, který se používá při připojení přes SmartConsole (nebo root účet). Pak můžete vstoupit API příkazy (v tomto případě není nutné použít nástroj před každým příkazem mgmt_cli). Můžete tvořit plnohodnotně BASH skripty. Příklad skriptu, který hostitel vytvoří:
Bash skript
#!/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
Pokud máte zájem, můžete se podívat na příslušné video:
3) Prostřednictvím SmartConsole otevřením okna CLI
Vše, co musíte udělat, je otevřít okno CLI přímo z chytrá konzole, jak je znázorněno na obrázku níže.
V tomto okně můžete okamžitě začít zadávat API příkazy.
4) Webové služby. Použít požadavek HTTPS Post (REST API)
Podle našeho názoru je to jedna z nejslibnějších metod, protože umožňuje „vytvářet“ celé aplikace založené na správa serveru pro správu (omlouvám se za tautologii). Níže se na tuto metodu podíváme trochu podrobněji.
Shrnout:
- API + cli vhodnější pro lidi, kteří jsou zvyklí na Cisco;
- API + shell pro aplikaci skriptů a provádění rutinních úkolů;
- REST API pro automatizaci.
Povolení API
Ve výchozím nastavení je rozhraní API povoleno na serverech pro správu s více než 4 GB paměti RAM a v samostatných konfiguracích s více než 8 GB paměti RAM. Stav můžete zkontrolovat pomocí příkazu: stav api
Pokud se ukáže, že je rozhraní API deaktivováno, je poměrně snadné jej povolit prostřednictvím SmartConsole: Správa a nastavení > Blades > Management API > Pokročilá nastavení
Poté publikujte (Publikovat) změní a spusťte příkaz restart api.
Webové požadavky + Python
Chcete-li spouštět příkazy API, můžete použít webové požadavky pomocí PYTHON a knihovny žádosti, json. Obecně se struktura webového požadavku skládá ze tří částí:
1) Adresa
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP hlavičky
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) Vyžádejte si užitečné zatížení
Text ve formátu JSON obsahující různé parametry
Příklad pro volání různých příkazů:
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
Zde je několik typických úkolů, se kterými se při správě Check Point nejčastěji setkáváte.
1) Příklad funkcí autorizace a odhlášení:
Skript
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) Zapnutí nožů a nastavení sítě:
Skript
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) Změna pravidel brány firewall:
Skript
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) Přidání aplikační vrstvy:
Skript
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) Publikovat a nastavit politiku, zkontrolovat provedení příkazu (task-id):
Skript
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) Přidat hostitele:
Skript
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) Přidejte pole Prevence hrozeb:
Skript
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) Prohlédněte si seznam relací
Skript
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) Vytvořte si nový profil:
Skript
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) Změňte akci pro IPS podpis:
Skript
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) Přidejte svou službu:
Skript
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) Přidejte kategorii, web nebo skupinu:
Skript
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))
Navíc s pomocí Webové rozhraní API můžete přidávat a odebírat sítě, hostitele, přístupové role atd. Čepele lze přizpůsobit Antivirus, Antibot, IPS, VPN. Je dokonce možné instalovat licence pomocí příkazu run-script. Všechny příkazy Check Point API naleznete zde
Check Point API + Postman
Je také pohodlné používat Check Point Web API ve spojení s
Pomocí této utility budeme schopni generovat webové požadavky na Check Point API. Aby se nepamatovaly všechny API příkazy, je možné importovat tzv. kolekce (šablony), které již obsahují všechny potřebné příkazy:
Podle mého názoru je to velmi pohodlné. Pomocí rozhraní Check Point API můžete rychle začít vyvíjet aplikace.
Check Point + Ansible
Také bych rád poznamenal, že existuje Možná
Výkon
Zde pravděpodobně dokončíme naši krátkou recenzi Check Point API. Tato funkce byla dle mého názoru velmi dlouho očekávaná a potřebná. Vznik API otevírá velmi široké možnosti jak pro systémové administrátory, tak pro systémové integrátory, kteří pracují s produkty Check Point. Orchestrování, automatizace, zpětná vazba SIEM... to vše je nyní možné.
PS Další články o
PSS Máte-li technické dotazy týkající se nastavení Check Point, můžete
Průzkumu se mohou zúčastnit pouze registrovaní uživatelé.
Plánujete používat API?
-
70,6%Ano 12
-
23,5%No4
-
5,9%Již používá 1
Hlasovalo 17 uživatelů. 3 uživatelů se zdrželo hlasování.
Zdroj: www.habr.com