야생에서 API 보호하기: WAF와 API Gateway 통합 심층 분석
January 30, 2024
오늘날 디지털 시대에서 API는 우리의 일상생활에 필수적인 부분이 되었습니다. API는 다양한 애플리케이션과 서비스 간에 데이터를 접근하고 교환할 수 있게 해줍니다. 그러나 공개된 API 엔드포인트의 수가 증가함에 따라 사이버 공격과 데이터 유출의 위험도 계속해서 증가하고 있습니다. 이 때문에 악의적인 공격으로부터 API를 보호하기 위해 강력한 보안 조치를 구현하는 것이 중요합니다.
WAF와 API Gateway 통합을 통한 API 보호의 이점
웹 애플리케이션 방화벽(WAF)과 API Gateway 기술은 API를 공격으로부터 보호하는 가장 효과적인 방법 중 두 가지입니다. WAF는 인터넷과 API 서버 사이에 위치하여 들어오는 요청을 분석하고 악성 트래픽을 차단하는 보안 솔루션입니다. 반면, API Gateway는 API 서버와 클라이언트 사이에 위치하는 미들웨어 계층으로, 접근 제어, 트래픽 라우팅, 속도 제한 등을 관리합니다.
Apache APISIX는 인기 있는 오픈소스 API 게이트웨이로, 강력한 내장 보안 플러그인을 제공합니다. 그러나 CVE(Common Vulnerabilities and Exposures) 및 제로데이 익스플로잇과 같은 점점 더 정교해지는 공격에 직면하여 이러한 플러그인만 의존하는 것은 API를 취약하게 만들 수 있습니다. APISIX와 전문적인 WAF를 통합하면 다층 방어 전략을 구축하여 현대적인 위협에 대한 포괄적인 보호를 제공할 수 있습니다.
APISIX의 보안 기능 이해
-
인증 및 권한 부여: APISIX는
JWT
,basic auth
,key auth
플러그인 및 OpenID Connect 제공자와의 통합을 지원하여 접근 제어를 강화합니다. -
속도 제한:
limit-conn
,limit-req
,limit-count
와 같은 플러그인을 통해 악성 트래픽 급증 및 DoS 공격을 방지합니다. -
IP 제한 및 사용자 에이전트 필터링: IP 주소와 사용자 에이전트를 기반으로 들어오는 요청에 대한 세밀한 제어를 허용합니다.
-
CSRF 보호: 크로스 사이트 요청 위조(CSRF) 공격을 방지합니다.
API Gateway의 한계
-
시그니처 기반 탐지: APISIX 플러그인은 주로 알려진 공격 시그니처에 의존하므로 정의된 패턴이 없는 제로데이 익스플로잇에 대해 효과적이지 않을 수 있습니다.
-
규칙 업데이트 부족: 보안 규칙은 지속적으로 변화하며, 이를 유지하기 위해서는 전문 보안 전문가와 회사가 필요합니다.
-
제한된 범위: APISIX는 게이트웨이 계층을 보호하지만, WAF는 애플리케이션 계층 전반에 걸쳐 더 넓은 보호를 제공합니다.
WAF와 API Gateway 통합의 이점
-
사전 위협 탐지: 고급 WAF는 머신 러닝과 행위 분석을 활용하여 취약점에 대한 사전 지식 없이도 비정상적인 트래픽을 탐지할 수 있습니다.
-
실시간 규칙 업데이트: 클라우드 기반 WAF는 새로운 위협에 대응하기 위해 규칙을 빠르게 업데이트할 수 있어 노출 기간을 최소화합니다.
-
더 깊은 애플리케이션 보호: WAF는 애플리케이션 계층에서 악성 트래픽을 필터링하고 차단하여 API 게이트웨이를 우회하는 공격으로부터 보호합니다.
-
규정 준수 및 규제 준수: 특정 산업에서는 데이터 보안 규정 준수를 위해 WAF 사용을 의무화하고 있습니다.
통합 프로세스 심층 분석
WAF와 API Gateway를 통합하려면 적절한 도구를 선택해야 합니다. Apache APISIX는 API를 관리하기 위한 확장성과 유연성을 제공하는 인기 있는 API Gateway 솔루션입니다. Chaitin SafeLine과 Coraza는 고급 보안 기능과 사용자 정의 규칙 세트를 제공하는 WAF 솔루션입니다.
APISIX와 Chaitin SafeLine
Chaitin SafeLine WAF는 APISIX 3.5부터 내장 플러그인으로 제공됩니다. chaitin-waf
플러그인이 활성화되면 트래�은 Chaitin WAF 서비스로 전달되어 다양한 웹 애플리케이션 공격을 탐지하고 방어하여 애플리케이션과 사용자 데이터의 보안을 보호합니다.
Apache APISIX와 SafeLine이 설치되어 있다고 가정할 때, 다음 명령어로 두 가지를 통합할 수 있습니다:
curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"nodes":[
{
"host": "192.168.99.11",
"port": 8000
}
]
}'
192.168.99.11은 SafeLine 서비스의 IP입니다. 그런 다음 APISIX에서 라우트를 생성할 수 있습니다:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/*",
"plugins": {
"chaitin-waf": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"192.168.99.12:80": 1
}
}
}'
192.168.99.12는 업스트림 서비스의 IP입니다. 통합이 완료되었습니다.
이제 SQL 인젝션을 시뮬레이션하여 효과를 확인해 보겠습니다:
curl http://127.0.0.1:9080 -d 'a=1 and 1=1'
HTTP 403 오류가 반환되었으며, 오류 메시지에서 볼 수 있듯이 Chaitin SafeLine이 공격을 성공적으로 방어했습니다.
{"code":403,"success":false,"message":"blocked by Chaitin SafeLine Web Application Firewall","event_id":"18e0f220f7a94127acb21ad3c1b4ac47"}
APISIX와 Coraza-proxy-wasm
APISIX는 WebAssembly(Wasm)를 사용하여 플러그인을 개발할 수 있으며, Coraza도 Wasm 플러그인을 옵션으로 제공합니다. 따라서 Coraza와 APISIX를 통합하는 데 상대적으로 낮은 비용이 듭니다.
Wasm은 크로스 플랫폼에서 활용할 수 있으므로 APISIX와 Coraza가 추가적인 광범위한 수정이나 적응 없이도 작동할 수 있습니다. 이는 광범위한 코드 수정과 적응을 제거합니다.
Coraza는 또한 Apache APISIX의 내장 플러그인으로, conf/config-default.yaml
파일을 수정하여 활성화할 수 있습니다:
wasm:
plugins:
- name: coraza-filter
priority: 7999
file: /home/ubuntu/coraza-proxy-wasm/build/main.wasm
그런 다음 APISIX에서 Coraza의 규칙을 사용하여 라우트를 생성합니다:
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{
"uri": "/anything",
"plugins": {
"coraza-filter": {
"conf": {
"directives_map": {
"default": [
"SecDebugLogLevel 9",
"SecRuleEngine On",
"SecRule REQUEST_URI \"@beginsWith /anything\" \"id:101,phase:1,t:lowercase,deny\""
]
},
"default_directives": "default"
}
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}
}'
이제 요청을 보내 효과를 확인해 보겠습니다:
curl http://localhost:9080/anything -v
logs/error.log
에서 로그를 확인합니다:
2023/08/31 09:20:39 [info] 126240#126240: *23933 Transaction interrupted tx_id="JVhHVfDuGjVbfgvDjik" context_id=2 action="deny" phase="http_request_headers", client: 127.0.0.1, server: _, request: "GET /anything HTTP/1.1", host: "localhost:9080"
2023/08/31 09:20:39 [debug] 126240#126240: *23933 Interruption already handled, sending downstream the local response tx_id="JVhHVfDuGjVbfgvDjik" context_id=2 interruption_handled_phase="http_request_headers"
WAF와 API Gateway 통합을 통한 API 보안을 위한 모범 사례
API의 보안을 보장하기 위해 다음 모범 사례를 따르는 것이 좋습니다:
-
다층 보안 제어를 포함하는 방어 전략을 구현하십시오.
-
SSL/TLS 암호화를 사용하여 전송 중인 데이터를 보호하십시오.
-
WAF 규칙 세트를 정기적으로 업데이트하여 최신 위협에 대비하십시오.
-
API 트래픽과 로그를 모니터링하여 보안 사고를 신속하게 탐지하고 대응하십시오.
API 보안 및 보호의 미래 동향과 발전
사용 중인 API의 수가 증가함에 따라 이를 보호하기 위한 고급 보안 조치의 필요성이 더욱 커질 것입니다. API 보안 및 보호의 미래 동향과 발전 중 일부는 다음과 같습니다:
-
위협을 자동으로 탐지하고 대응할 수 있는 AI 기반 보안 솔루션.
-
블록체인 기반 인증 및 접근 제어 메커니즘.
-
더 큰 유연성과 확장성을 제공하는 마이크로서비스 기반 API 아키텍처.
요약
결론적으로, WAF와 API Gateway 통합은 API 보안의 중요한 구성 요소입니다. 모범 사례를 따르고 적절한 도구를 배포함으로써 다양한 공격으로부터 API를 보호할 수 있는 강력한 보안 계층을 구축할 수 있습니다. 올바른 접근 방식을 통해 API와 그들이 교환하는 데이터의 가용성, 무결성, 기밀성을 보장할 수 있습니다.