본문 바로가기
공부/AWS

[AWS WAF] #3 특정 국가 or User-Agent 차단 (custom rule)

by haejang 2021. 2. 25.
728x90
728x90

목차

1. 특정 국가 차단 (Browsec VPN 사용)

2. 특정 User-Agent 차단 (User-Agent Switcher 사용)

3. custom rule 작성 시 참고사항

 

 

1. 특정 국가 차단

무료로 사용 가능한 VPN 중, 싱가포르의 트래픽을 차단해보겠다

1-1) 차단 전 확인

WAF를 설정하기 전에는 싱가포르에서 접속이 되는지 확인해보자

Browsec을 ON 시킨 후, Change > Singapore

 

 

DVWA로의 접속은 잘 된다

1-2) Rule 생성

만들어둔 WAF Web ACLs에서 Rules 탭으로 이동

 

 

전 실습과는 다르게 Add my own rules and rule groups를 누른다

 

 

Rule Name은 맘대로 정해주자

Statement의 InspectOrigin from a country in 으로, Country Code싱가포르를 검색해 지정해준 후 Rule 생성을 완료해주자

1-3) 차단 확인

다시 싱가포르인 상태로 DVWA에 들어가보면

 

접속이 막혔다 (차단 성공)

 

2. 특정 User-Agent 차단

2-1) 차단 전 확인

Browsec은 이제 끄고, User-Agent Switcher를 켜서 iOS > iPhone 6으로 설정해주자

 

 

DVWA엔 잘 접속 된다

2-2) Rule 생성

위와 똑같이 WAF에서 Add my own rules and rule groups를 눌러주자

 

 

마찬가지로 이름은 맘대로 설정해준 후, Inspect로 Header를 택해준다

우린 HeaderUser-Agent 필드에서 iphone 이란 단어를 포함(Contains)하는 트래픽을 찾아내야 한다

이 때, 대문자/소문자 상관 없이 검사하기 위해 Lowercase 라는 Text transformation 옵션을 넣어준다

그러고 Add Rule > Save로 완료

2-3) 차단 확인

마찬가지로 DVWA 서버에 들어가보니

 

막혀있다 (차단 성공)

 

3. custom Rule 작성 시 참고 사항

공식 문서 참조

3-1) If a request

 

If a request에서 Statement에 대한 사항을 AND, OR, NOT으로 지정해줄 수 있다

AND나 OR로 지정한다면 Statement를 한번에 여러개 만들수있다

3-2) Inspect

 

위의 2개는 국가나 IP로 제한하는거고, 아래의 Request Components들에 대해 알아보자면

이름 설명
Header 특정 요청 헤더
Header field name에 특정 필드 이름을 넣으면 된다
필드 종류는 HTTP 헤더 검색해보기
Single query parameter 쿼리 문자열의 일부로 정의한 모든 파라미터. WAF는 지정한 파라미터의 값을 검사함
Query argument도 정해줘야 함
All query parameter Single query parameter와 유사하지만, WAF가 쿼리 문자열 내의 모든 매개변수 값을 검사함
규칙 비용에 10 WCUs 추가됨
URI path 리소스를 식별하는 URL의 부분
Query string ? 문자 뒤에 나타나는 URL의 부분 (?가 있을 때)
Body 요청 헤더 바로 뒤에 오는 요청 부분
여기엔 웹 요청에 필요한 추가 데이터가 포함됨
HTTP method 웹 요청이 오리진에게 수행을 요구하고 있는 작업 유형을 나타냄

3-3) Text transformation

 

패턴 또는 집합 제약 조건을 찾는 문에서 요청을 검사하기 전에, WAF에서 적용할 변환을 제공할 수 있음

각 변환은 10WCU임

이름 설명
Compress whitespace 여러 공백을 하나의 공백으로 바꾸고 공백 문자로 바꿈
ex) \t를 tab으로, \n을 새 줄로
HTML entity decode HTML로 인코딩된 문자를 디코딩
ex) %quot를 "로 바꿈
Lowercase 소문자로 변환 - 즉 대문자/소문자 구분 없이 보겠다는 뜻
Command line 공격자가 OS CLI 명령을 삽입하는 등 명령의 일부 또는 전체를 위장하는 상황 완화
ex) \ " ' ^ 문자 삭제
URL decode URL로 인코딩된 요청을 디코딩

 

 

다음엔 JSON을 사용해서 직접 Rule을 작성해보겠다

 

실습 시리즈

#0 실습 전 준비

#1 사전 리소스들과 WAF 구성

#2 SQL Injection & XSS 공격과 방어 (AWS managed rule)

#4 JSON으로 WAF Rule 직접 작성해보기

#5 실습 마무리 : 로깅 확인 & 리소스 삭제

728x90
728x90

댓글