본문 바로가기
6. 보안 Security

WAF 설정 - WAF Policy

by primely 2022. 5. 9.

WAF는 악의적이고 원하지 않는 인터넷 트래픽으로부터 응용프로그램을 보호한다.

WAF Policy를 이용하려면 Application Load Balancer이 필수적으로 사용되어야 한다.

(OCI내 Application에 WAF를 적용하려는 경우 WAF Policy방식의 WAF사용을 권장합니다.)

 

Application Load Balancer없이 WAF를 사용하려면 아래 Link 참조

https://oracle-cloud.tistory.com/entry/WAF%EC%84%A4%EC%A0%95-Edge-Policy

 

1. Create WAF

메뉴: Identity / Security - Web Application Firewall - Policies

WAF에 의해서 packet이 check되는 순서는 1) access controls 2) rate limiting 3) protections 순으로 처리가 된다.

> Rule Action: 패킷처리 방식

- Check: 규칙실행을 중지하고 않고 Log로 남김

- Allow: 허용이 되었으므로 뒤의 모든 Rule을 Skip

- Return HTTP response: HTTP 요청 또는 HTTP 응답의 모든 추가 처리를 종료하고  미리 정의된 HTTP 응답을 반환

Type이 Return HTTP response인 경우 Response Message 추가가능

2. Setup Access Control

Access Control에서는 아래와 같은 Condition Type에 대해 Access Rule을 설정할 수 있다.

Request Contorl과 Response Control별로 설정이 가능하다

 

> Request Control의 Condition Type

 

> Response Control의 Condition Type

 

한국에서만 접속가능하게 설정해보자

 

- Rule Action에서 Check, Allow,  Return HTTP response 선택가능하다.

- Default Action에서 Allow,  Return HTTP response 선택가능하다.

 

Show Advanced Controls을 누르면 아래처럼 Code기반으로 설정가능하다

 

Conditions을 code기반으로 설정하는 방법은 아래Link를 참고한다.

https://docs.oracle.com/en-us/iaas/Content/WAF/Concepts/understanding_conditions.htm

 

예1) content type이 request header일때

basic mode
advanced mode
Raw HTTP response headers

 

위에 처럼 설정했을때 User-Agent에 아래의 값들이 있을때 true를 리턴한다.

'BOT', 'testbot', 'Botddos'

 

예2) content type이 source IP일때 network address list설정을 통해 여러 source ip를 등록할 수 있다.

Network address list에서 block할 IP들을 추가한 다음 WAF설정시 아래처럼 적용할 수 있다.

3. Rate Limiting

속도 기반 규칙을 사용하여 과도한 요청을 보내는 IP 주소의 요청을 일시적으로 차단할 수 있다.
아래설정은 동일Client에게 1초간 100회 접속이후부터 Block
(즉, 1초내 99회까지 접속허용, Action duration으로 Block기간 지정가능)

- Request Limit: Enter the maximum number of requests made.

- Period in Seconds: Enter the number of seconds passed.
- Action Duration in Seconds: Enter the duration of the block action in seconds

- Rule Action에서 Check,  Return HTTP response 선택가능하다.

 

예시)
- Requests limit: 3
- Period in seconds: 10
- Action Duration: 0
=> 10초내 3번째 Click시 401리턴, 10초후 초기화 즉 2번 접속가능해짐
=> Action Duration을 30으로하면 30초동안 401리턴

4. Setup Protection Rule

다양한 Protection Rule을 추가할 수 있다(Rule이 추가된다고 비용이 추가되지 않는다)

Requestion Protection Rule은 필요에 따라 여러개 추가할 수 있다.
(추가된 Request Protection Rule은 등록된 순서대로 처리되지 않을 수 있다.)

HTTP Body까지 검사하려면 Enable body inspection을 Check

- Protection Rule에 해당하는 패킷인 경우 Block하지 않고 Log로만 기록하려면 Rule Action을 Check로 설정한다.

- 특정Packet에만 Body inspection을 적용하려면 optional인 Condition을 활용한다.

사용할 Protection Rule을 선택한다.

- Rule Action에서 Check,  Return HTTP response 선택가능하다

- Log에서 아래처럼 Block된 Packet에서 MatachedRule정보 확인가능

- WAF Log

 

- 각 Protection capabilities에 default action과 다르게 설정할 수 있다.

아래처럼 default action을 response code action으로 설정하면 각 Protection capabilities에서 change action을 통해 check action으로 변경할 수 있다.

 

- oci_waf metric(request, traffic, bandwidth, detect)를 이용해 Alarm을 등록할 수 있다.

5. WAF를 적용할 Load Balancer 설정

6. WAF Log 조회

상세조회: 응답이 성공(200)인 요청만 조회

7. WAF Log를 Logging Analytics와 연동 시 사용할 수 있는 WAF용 Dashboard추가

> Monitoring OCI WAF with Logging Analytics

https://blogs.oracle.com/observability/post/monitoring-oci-waf--la

 

> Dashboard파일 Upload

먼저 각 Dashboard 파일에 있는 COMPARETMENT_ID를 본인환경의 정보로 변경한다.

변경을 했으면 Cloud Shell로 파일을 Upload한다.

> Dashboard 설치

oci management-dashboard dashboard import --from-json file://WAF_Access_rule_and_Rate_limiting.json
oci management-dashboard dashboard import --from-json file://WAF_Activity_Overview.json
oci management-dashboard dashboard import --from-json file://WAF_Protection_Rules.json

> Dashboard 확인

WAFDashboards.zip
0.01MB

Log를 Logging Analytics와 연동하는 방법은 아래Link를 참고하세요

https://oracle-cloud.tistory.com/entry/Service-Log%EB%A5%BC-Logging-Analytics%EB%A1%9C-%EB%B6%84%EC%84%9D%ED%95%98%EA%B8%B0

8. WAF 비용

무료 : 첫 번째 WAF Instance 인 경우, 최초 10million (1000)건의 Incoming Request

유료 : 두 번째 WAF Instance 부터 월 $5, 1000만건 이후의 매 100만건 Incoming Request 마다 월 $0.6 부과

 

> 더 세부적인 내용은 아래 Link를 통해 확인하세요

https://docs.oracle.com/en-us/iaas/Content/WAF/home.htm

https://blogs.oracle.com/observability/post/monitoring-oci-waf--la

 


작성자: 손창호(primelyson@gmail.com) / Cloud Engineer, 정보시스템감리사, DAP, PIA

개인의 시간을 할애하여 작성된 글로서 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

'6. 보안 Security' 카테고리의 다른 글

CVE-2022-21503에 대한 고객 알림을 받은 경우  (0) 2022.06.21
IDCS User 관리  (0) 2022.05.16
IAM User 관리  (0) 2022.05.16
ISMS 세부점검항목별 OCI보안기능  (0) 2022.05.13
WAF 설정 - Edge Policy  (0) 2022.05.09

댓글