๋๋ ํจ๊ป ์ผํด ๋ณธ ๋ชจ๋ ์ฌ๋๋ค์ด ํ์ ํฉ๋๋ค
๋น๊ต์ ์ต๊ทผ์ "๊ธฐ์ "์ด ์ผ์ด๋ฌ์ต๋๋ค. ์ ๋ฒ์ ์ถ์์ ํจ๊ป ๊ฐ์ด์ R80 ๊ธฐํ๊ฐ ๋ฐํ๋์์ต๋๋ค API ์ฌ์ฉ, ์ค์ , ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋ง ๋ฑ์ ์๋ํํ ์ ์๋ ํญ๋์ ๊ธฐํ๊ฐ ์ด๋ฆฝ๋๋ค. ์ด์ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ๊ฐ์ฒด ์์ฑ;
- ์ก์ธ์ค ๋ชฉ๋ก์ ์ถ๊ฐํ๊ฑฐ๋ ํธ์งํฉ๋๋ค.
- ๋ธ๋ ์ด๋ ํ์ฑํ/๋นํ์ฑํ;
- ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๊ตฌ์ฑ;
- ์ ์ฑ ์ค์น;
- ๊ทธ๋ฆฌ๊ณ ํจ์ฌ ๋.
์์งํ ๋งํด์ ์ด ์์์ด ์ด๋ป๊ฒ Habr์๊ฒ ์ ๋ฌ๋์๋์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ API ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ๊ณ ๋ช ๊ฐ์ง ์ค์ ์์ ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ CheckPoint ์ค์ .
API๊ฐ ๊ด๋ฆฌ์๋ฒ์๋ง ์ฌ์ฉ๋๋ค๊ณ ๋ฐ๋ก ์์ฝํ๊ณ ์ถ์ต๋๋ค. ์ ๊ฒ๋ค. ๊ด๋ฆฌ ์๋ฒ ์์ด ๊ฒ์ดํธ์จ์ด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฌ์ ํ โโ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์์น์ ์ผ๋ก ๋๊ฐ ์ด API๋ฅผ ์ฌ์ฉํ ์ ์๋์?
- ์ผ์์ ์ธ Check Point ๊ตฌ์ฑ ์์ ์ ๋จ์ํํ๊ฑฐ๋ ์๋ํํ๋ ค๋ ์์คํ ๊ด๋ฆฌ์
- ์ฒดํฌํฌ์ธํธ๋ฅผ ๋ค๋ฅธ ์๋ฃจ์ (๊ฐ์ํ ์์คํ , ํฐ์ผ ์์คํ , ๊ตฌ์ฑ ๊ด๋ฆฌ ์์คํ ๋ฑ)๊ณผ ํตํฉํ๋ ค๋ ๊ธฐ์
- ์ค์ ์ ํ์คํํ๊ฑฐ๋ Check Point ๊ด๋ จ ์ ํ์ ์ถ๊ฐ๋ก ์์ฑํ๋ ค๋ ์์คํ ํตํฉ์.
์ ํ์ ์ธ ๊ณํ
์ด์ Check Point๋ฅผ ์ฌ์ฉํ ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑํ๋ฅผ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
ํ์์ ๊ฐ์ด ๊ฒ์ดํธ์จ์ด(SG), ๊ด๋ฆฌ์๋ฒ(SMS) ๋ฐ ๊ด๋ฆฌ ์ฝ์(์ค๋งํธ์ฝ์). ์ด ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๊ฒ๋ค. ๋จผ์ ๊ด๋ฆฌ์์ ์ปดํจํฐ์์ ์คํํด์ผ ํฉ๋๋ค. ์ค๋งํธ์ฝ์, ์ด๋ฅผ ํตํด ๊ด๋ฆฌ ์๋ฒ(SMS). ๋ณด์ ์ค์ ์ SMS์์ ์ค์ ํ ํ ์ ์ฉ๋ฉ๋๋ค(์ค์น ์ ์ฑ
)์์ ๊ฒ์ดํธ์จ์ด(SG).
๋ฅผ ์ฌ์ฉํ ๋ ๊ด๋ฆฌ API, ๊ธฐ๋ณธ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ์ง์ (SmartConsole ์คํ)์ ๊ฑด๋๋ฐ๊ณ ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. API ๋ช ๋ น ๊ด๋ฆฌ ์๋ฒ(SMS)๋ก ์ง์ ์ ์ก๋ฉ๋๋ค.
API ์ฌ์ฉ ๋ฐฉ๋ฒ
API๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ์ ํธ์งํ๋ ๋ค ๊ฐ์ง ์ฃผ์ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) mgmt_cli ์ ํธ๋ฆฌํฐ ์ฌ์ฉ
์ - # mgmt_cli ์ถ๊ฐ ํธ์คํธ ์ด๋ฆ ํธ์คํธ1 IP ์ฃผ์ 192.168.2.100
์ด ๋ช
๋ น์ ๊ด๋ฆฌ ์๋ฒ(SMS) ๋ช
๋ น์ค์์ ์คํ๋ฉ๋๋ค. ๋๋ ๋ช
๋ น์ ๊ตฌ๋ฌธ์ด ๋ช
ํํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํธ์คํธ1์ ์ฃผ์ 192.168.2.100์ผ๋ก ์์ฑ๋ฉ๋๋ค.
2) clish๋ฅผ ํตํด API ๋ช ๋ น ์ ๋ ฅ(์ ๋ฌธ๊ฐ ๋ชจ๋)
๊ธฐ๋ณธ์ ์ผ๋ก ํด์ผ ํ ์ผ์ ๋ช ๋ น์ค์ ๋ก๊ทธ์ธํ๋ ๊ฒ๋ฟ์ ๋๋ค(๊ด๋ฆฌ ๋ก๊ทธ์ธ) SmartConsole(๋๋ ๋ฃจํธ ๊ณ์ )์ ํตํด ์ฐ๊ฒฐํ ๋ ์ฌ์ฉ๋๋ ๊ณ์ ์์. ๊ทธ๋ฌ๋ฉด ๋ค์ด๊ฐ ์ ์์ด์ API ๋ช ๋ น (์ด ๊ฒฝ์ฐ ๊ฐ ๋ช ๋ น ์ ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค. mgmt_cli). ๋ณธ๊ฒฉ์ ์ธ ์ ์์ด ๊ฐ๋ฅํฉ๋๋ค 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 ์์ ๋ฐ๋ก ์ค๋งํธ์ฝ์, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.
์ด ์ฐฝ์์ ์ฆ์ API ๋ช
๋ น ์
๋ ฅ์ ์์ํ ์ ์์ต๋๋ค.
4) ์น ์๋น์ค. HTTPS ๊ฒ์ ์์ฒญ ์ฌ์ฉ(REST API)
์ฐ๋ฆฌ ์๊ฒฌ์ผ๋ก๋ ์ด๊ฒ์ด ๊ฐ์ฅ ์ ๋งํ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค. ๊ธฐ๋ฐ์ผ๋ก ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ "๊ตฌ์ถ"ํ ์ ์์ต๋๋ค. ๊ด๋ฆฌ ์๋ฒ ๊ด๋ฆฌ (๋ง์ด ๊ธธ์ด์ ์ฃ์กํฉ๋๋ค). ์๋์์๋ ์ด ๋ฐฉ๋ฒ์ ์ข ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ฝ:
- API + CLI Cisco์ ์ต์ํ ์ฌ๋๋ค์๊ฒ ๋ ์ ํฉํฉ๋๋ค.
- API + ์ ์คํฌ๋ฆฝํธ ์ ์ฉ ๋ฐ ์ผ์์ ์ธ ์์ ์ํ
- REST API ์๋ํ๋ฅผ ์ํด.
API ํ์ฑํ
๊ธฐ๋ณธ์ ์ผ๋ก API๋ RAM์ด 4GB ์ด์์ธ ๊ด๋ฆฌ ์๋ฒ์ RAM์ด 8GB ์ด์์ธ ๋ ๋ฆฝ ์คํํ ๊ตฌ์ฑ์์ ํ์ฑํ๋ฉ๋๋ค. ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. API ์ํ
API๊ฐ ๋นํ์ฑํ๋ ๊ฒ์ผ๋ก ๋ฐํ์ง๋ฉด SmartConsole์ ํตํด API๋ฅผ ํ์ฑํํ๋ ๊ฒ์ด ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ด๋ฆฌ ๋ฐ ์ค์ > ๋ธ๋ ์ด๋ > ๊ด๋ฆฌ 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) ์ ์ฑ ์ ๊ฒ์ ๋ฐ ์ค์ ํ๊ณ ๋ช ๋ น(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))
๊ฒ๋ค๊ฐ ๋์์ ๋ฐ์ ์น API ๋คํธ์ํฌ, ํธ์คํธ, ์ก์ธ์ค ์ญํ ๋ฑ์ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ธ๋ ์ด๋๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ์ํฐ๋ฐ์ด๋ฌ์ค, ์ํฐ๋ด, IPS, VPN. ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ผ์ด์ผ์ค๋ฅผ ์ค์นํ ์๋ ์์ต๋๋ค. ์คํ ์คํฌ๋ฆฝํธ. ๋ชจ๋ Check Point API ๋ช
๋ น์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ฒดํฌํฌ์ธํธ API + Postman
์ฌ์ฉํ๊ธฐ์๋ ํธ๋ฆฌํฉ๋๋ค ์ฒดํฌํฌ์ธํธ ์น API ์ ํจ๊ป
์ด ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋ฉด Check Point API์ ๋ํ ์น ์์ฒญ์ ์์ฑํ ์ ์์ต๋๋ค. ๋ชจ๋ API ๋ช
๋ น์ ๊ธฐ์ตํ์ง ์์ผ๋ ค๋ฉด ํ์ํ ๋ชจ๋ ๋ช
๋ น์ด ์ด๋ฏธ ํฌํจ๋์ด ์๋ ์์ ์ปฌ๋ ์
(ํ
ํ๋ฆฟ)์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ ์๊ฐ์๋ ์ด๊ฒ์ด ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. Check Point API๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ๋น ๋ฅด๊ฒ ์์ํ ์ ์์ต๋๋ค.
์ฒดํฌํฌ์ธํธ + ์ค์๋ธ
์๋ค๋ ์ ๋ ์ฐธ๊ณ ํ๊ณ ์ถ์ต๋๋ค. ์ฑ
์๊ฐ์๋
์ถ๋ ฅ
์ฌ๊ธฐ์ Check Point API์ ๋ํ ๊ฐ๋จํ ๊ฒํ ๋ฅผ ๋ง์น๊ฒ ์ต๋๋ค. ์ ์๊ฐ์๋ ์ด ๊ธฐ๋ฅ์ด ๋งค์ฐ ์ค๋ซ๋์ ๊ธฐ๋ค๋ ค ์๊ณ ํ์ํ๋ ๊ธฐ๋ฅ์ด์์ต๋๋ค. API์ ์ถํ์ผ๋ก Check Point ์ ํ์ ์ฌ์ฉํ๋ ์์คํ ๊ด๋ฆฌ์์ ์์คํ ํตํฉ์ ๋ชจ๋์๊ฒ ๋งค์ฐ ๊ด๋ฒ์ํ ๊ธฐํ๊ฐ ์ด๋ ธ์ต๋๋ค. ์ค์ผ์คํธ๋ ์ด์ , ์๋ํ, SIEM ํผ๋๋ฐฑ... ์ด์ ๋ชจ๋ ๊ฐ๋ฅํฉ๋๋ค.
PS์ ๋ํ ์ถ๊ฐ ๊ธฐ์ฌ
PSS Check Point ์ค์ ๊ณผ ๊ด๋ จ๋ ๊ธฐ์ ์ ์ธ ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
๋ฑ๋ก๋ ์ฌ์ฉ์๋ง ์ค๋ฌธ ์กฐ์ฌ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
API๋ฅผ ์ฌ์ฉํ ๊ณํ์ด์ ๊ฐ์?
-
70,6%์12
-
23,5%4
-
5,9%์ด๋ฏธ ์ฌ์ฉ ์ค1
17๋ช
์ ์ฌ์ฉ์๊ฐ ํฌํํ์ต๋๋ค. 3๋ช
์ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ถํ์ต๋๋ค.
์ถ์ฒ : habr.com