일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- aws기본
- cissp
- opt/anaconda3/bin/jupyter_mac.command
- aws기초
- 주피터노트북 설치
- 리눅스명령어
- AWS CI/CD
- AWS 공격테스트
- blue/green배포
- GDPR
- AWS CodeDeploy
- 리눅스기초명령어
- aws terraform
- AWS구축
- terraform with aws
- 최소권한
- linux명령어
- terraform기본
- terraform기초
- AWS배포자동화
- aws
- Cissp sdlc
- terraform따라하기
- 리눅스
- 직무분리
- 쉘스크립트
- aws따라하기
- Linux
- 리눅스기초
- AWS실습
ysuekkom의 IT study note
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기 IV - 특정국가 유발 트래픽 차단(custom rule 적용) 본문
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기 IV - 특정국가 유발 트래픽 차단(custom rule 적용)
ysuekkom 2022. 10. 31. 08:36
개인 공부 기록용
aws waf 공격 및 방어 실습 따라하기
(sessin.github.io)
I편 바로가기
https://ysuekkom8915.tistory.com/14
II편 바로가기
https://ysuekkom8915.tistory.com/15?category=1049317
III편 바로가기
https://ysuekkom8915.tistory.com/16
실습 환경을 구축했고(I편), 공격테스트를 진행(II편), WAF 설정 후, 공격차단 실습(III편)까지 진행해봤다.
이번 포스팅에서는 Browsec 어플리케이션을 이용하여 트래픽 소스 국가를 조작, 특정 국가 유발 트래픽을 차단하는 실습을 진행해보려고 한다.
이전 포스팅에서는 AWS Managed Rule을 적용해보았고, 이번 포스팅에서는 공격타입 별 Custom Rule을 적용한다.
AWS WAF에서 제공하는 국가별 IP 정보를 바탕으로, 특정 국가 유발 트래픽을 차단해보려고한다.
트래픽의 국가는 실습 환경 구축 시(I편) 설치했던 어플리케이션 Browsec을 활용한다.
Chrome Extenstion 설정하기
실습 트래픽이 특정 국가로부터 발생하는 것처럼 설정하기 위해 Browsec을 사용, 싱가포르로 설정한다.
> Browsec VPN 실행 > Start VPN > On > Change로 국가 설정
이제 AWS WAF에서 룰을 설정해주자.
>AWS WAF > Web ACLs > MyWAF > Rules > Add rules > Add my own rules and rule group
> Rule builder > Rule visual editor
Rule name: SG-Block
Type: Regular rule
Inspect: Originates from a country in
Country codes: Singapore - SG
Source IP address 선택
Action: Block
룰 설정 결과 확인
룰을 설정하였으니, 웹사이트에 접속을 시도해보자. 적용이 정상적으로 되었다면, 트래픽이 차단되기 때문에 웹사이트에 접속할 수 없다.
>403 Foribidden 확인
단순히, 특정 국가 유발 트래픽을 차단하는 것을 넘어서서, 특정 조건들을 더 줘보자.
복잡한 규칙의 경우, JSON 편집기를 사용하여 ACL을 적용하는 것이 가장 쉬운 방법이다.
JSON 기반 룰을 작성하여, 특정 조건에 부합하는 트래픽을 차단하는 실습을 진행하기 앞서, 기존 룰셋을 백업하는 방법부터 알아보자.
기존 룰셋 백업하기
>AWS WAF > Web ACLs > MyWAF > Overview > Download web ACL as JSON
>백업 완료 후, 기존 룰셋 삭제하기
JSON 에디터를 사용하여 복잡한 룰셋 설정하기
>AWS WAF > Web ACLs > MyWAF > Rules > Add rules > Add my own rules and rule group
> Rule builder > Rule JSON editor
Name을 TestRule로 작성하고, 아래와 같은 조건에 부합하는 JSON 코드를 작성한다.
-공격트래픽의 대부분은 한국발이지만, 한국에서는 정상사용자도 많음
-공격트래픽은 Request Body가 비정상적으로 커서 100byte이상이거나, 헤더의 x-value값이 bot 혹은 BOT로 들어옴
위 조건의 공격 트래픽을 선별하여 정상트래픽은 수용하고, 비정상트래픽을 차단하는 코드를 작성해보자.
{ "Name": "TestRule", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "TestRule" }, "Statement": { "AndStatement": { "Statements": [ { "GeoMatchStatement": { //국가기반 일치 조건(한국 발 트래픽 중에서) "CountryCodes": [ "KR" ] } }, { "OrStatement": { "Statements": [ { "SizeConstraintStatement": { //크기 제약 조건(비정상적으로 큰 100bte 차단) "FieldToMatch": { "Body": {} }, "ComparisonOperator": "GT", //비교 연산자 "Size": 100, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ] } }, { "ByteMatchStatement": { //문자열 일치 조건(bot 또는 BOT 차단) "SearchString": "bot", "FieldToMatch": { "SingleHeader": { "Name": "x-value" } }, "TextTransformations": [ { "Priority": 0, "Type": "LOWERCASE" //bot or BOT 차단 } ], "PositionalConstraint": "EXACTLY" } } ] } } ] } } } |
>>AND문 안에 OR문 중첩의 구조로 추가 특정 조건이 더 생길경우 JSON 구문을 활용해 작성 |
AWS WAF 로깅을 확인해보자.
AWS WAF에서 발생하는 로그들을 조회하고 분석 및 활용하는 실습을 진행한다.
AWS 로깅 활성화
>S3 > 버킷 >mydvwa~ 선택 가장 하위 경로로 이동
그중 하나의 로그를 다운로드 받아서 익숙한 에디터로 실행 후, 살펴보자
우리가 설정했던 룰셋의 정보를 확인할 수 있고, httpRequest에서 유발된 트래픽의 정보에 대해 확인할 수 있다.
로그를 다운받아 분석 시, 다양한 분석에 활용 가능하다.
이번 공격테스트 실습 I~IV편에서는 원활한 실습을 위해 CloudFormation 템플릿을 실행하여 위협요인이 내재된 인프라 환경을 구성했다.
해당 템플릿을 통해 생성되는 리소스는 VPC, ALB, EC2, Kinesis Firehorse, S3 등이 있었으며
공격은 SQL Injection, XSS Attack이 있었고, 특정국가 유발 트래픽 차단, 특정 조건들에 부합하는 트래픽 차단 등의 실습을 진행했다.
마지막으로, 로깅기능을 활용하여 남겨진 로그를 분석하는 방법까지 알아보았다.
다음 포스팅에서는, 모든 실습이 종료된 후, 자원을 삭제하는 방법에 대해 다뤄보겠다.
'Cloud Service > AWS' 카테고리의 다른 글
[aws-기본] EC2 서버 생성 후 연결하기 (0) | 2022.11.13 |
---|---|
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기 V -AWS 자원 삭제하기 (0) | 2022.10.31 |
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기III -WAF 설정, 공격 차단 (0) | 2022.10.30 |
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기II -모의 웹 공격(SQL Injection, XSS Attack) (0) | 2022.10.30 |
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기I -실습 환경 구축 (0) | 2022.10.26 |