DVWA 설치
위협 요인이 내재된 환경을 구성하기 위해 CloudFormation을 실행한다. CloudFormation을 통해 다음과 같은 AWS 리소스가 생성된다.
1. AWS 리전 확인
AWS 관리 콘솔로 들어가서 AWS 서울 리전을 선택하였다.
2. EC2 키페어 생성
EC2 키페어는 EC2인스턴스 생성을 위해 필요한 항목이므로, CloudFormation 템플릿을 실행하기에 앞서 EC2 키페어를 생성한다.
3. Cloud Formation 템플릿 실행
CloudFormation Stack을 생성하였다. 조금 기다리니까 CREATE_COMPLETE라고 상태가 변경되며 생성이 완료되었다!
DVWA 확인
1.DVWA 웹 페이지 접속 확인
DVWA 스택이 정상적으로 생성되었다면 템플릿을 통하여 생성된 DVWA 웹페이지에 정상적으로 접속이 되는지 확인한다.
AWS Management Console 의 EC2에 들어가 메뉴하단에 로드 밸런싱에서 로드밸런서를 클릭한다.
새로운 ALB (Application Load Balancer)가 생성된 것을 확인한 후 해당 ALB 의 DNS 이름을 이용하여 인터넷 브라우져에서 접속한다.
위와 같이 DVWA 의 로그인 페이지로 접속을 하였다. 여기서 “ID = admin”, “Password = password” 를 입력한다.
위와 같이 DVWA 에 정상적으로 로그인이 되었다.
2. DVWA 환경 설정
실습 진행과정에서 공격을 쉽게 수행하기 위해서는 DVWA 의 Security Level 설정을 변경해주어야 한다.
왼쪽 하단의 DVWA Security에 접속 후 화면 중간의 Pull Down 메뉴에서 기본값으로 설정되어 있는 “Impossible” 을 “Low” 로 변경한 후 “Submit” 버튼을 클릭한다.
CHROME EXTENTION 설치
AWS WAF 에서는 국가별 공인 IP 를 기준으로 트래픽을 허용/차단 하는 기능을 제공하고 있다. 지정된 국가를 차단하는 환경을 가상으로 구성하기위하여 Chrome 에서 사용할 수 있는 “Browsec VPN” 을 설치한다.
Chrome Store에서 위와 같이 Browsec VPN을 설치한다. 나는 이미 설치되어 있어서 넘어갔다.
User-Agent Switcher 설치
AWS WAF 에서는 웹 요청의 user-agent 헤더를 기준으로 트래픽을 허용/차단 하는 기능을 제공하고 있다. 특정 user-agent 값을 차단하는 환경을 가상으로 구성하기위하여 Chrome에서 사용할 수 있는 “User-Agent Switcher” 을 설치한다.
Chrome Store에서 위와 같이 설치해준다.
설치된 User-Agent Switcher Exntension 은 이후 실습 과정에서 브라우저의 요청 user-agent 헤더를 변경하여 AWS WAF의 헤더 필터 기능을 점검하는데 사용된다.
AWS WAF Web ACL 구성
웹 공격을 방어하기 위한 AWS WAF를 구성한다. 본 실습에서는 Web ACL 을 먼저 생성한 후 이후 모듈 3.과 모듈 4. 에서 각 공격 유형별로 Rule 을 생성하여 Web ACL 에 추가하는 방법을 따르도록 하겠다.
AWS WAF 콘솔로 이동 후 AWS WAF 메뉴에서 Web ACL 을 선택한 후 “Create Web ACL” 버튼을 클릭한다.
“Resource Type” 을 “Regional Resources” 로 선택한 후 “Region” 을 “Asia Pacific(Seoul)” 로 선택한다. Region 선택이 끝나신 후 “Name” 에 이름을 입력한다. 나는 MyWAF로 하였다.
생성되는 WebACL 에 리소스를 할당하기 위하여 “Add AWS Resources” 버튼을 클릭한다.
“Add AWS Resources” 화면에서 이전 과정에서 생성되었던 ALB 를 선택한 후 “Add” 버튼을 클릭한다.
그러면 위와 같이 ALB 가 정상적으로 추가된 것을 확인한 후 “Next” 버튼을 클릭한다.
Rule 설정은 이후 과정에서 진행할 것이므로 그대로두고 화면 하단의 “Default Action” 이 “Allow” 로 되어 있는 것을 확인한 후 “Next” 버튼을 클릭한다.
설정된 Rule 없으므로 “Next" 버튼을 클릭한다.
“Configure Metrics” 에서도 “Next” 를 클릭한다.
지금까지 설정한 내용이 모두 맞는지 확인한 후 “Create Web ACL” 버튼을 클릭한다.
위와 같이 새로운 Web ACL 이 생성되었다.
AWS WAF 로깅 활성화
AWS WAF는 Amazon Kinesis Firehose를 사용하여 로그를 저장한다. 이를 통해 Amazon S3, Amazon Redshift 또는 Amazon Elastic Search와 같은 모든 Kinesis Firehose 대상으로 로그를 전달하고 분석할 수 있다.
Amazon Data Firehose로 들어가면 위와 같이 ‘aws-waf-log-‘로 시작하는 Firehose 스트림이 생성되어있는 것을 확인한다.
다시 WAF 콘솔로 돌아와 로깅을 활성화한다.
WebACL “MyWAF” 에서 Logging and Metrics 탭으로 이동하여 Logging이 Disable되어있는 것을 확인하고 “Enable Logging”을 클릭한다.
Amazon Data Firehose Stream을 선택하고 CloudFormation으로 자동생성된 “aws-waf-logs-test”를 선택한다.
Redacted fields에서는 “Query string“을 클릭한다. 이로 인해 로그에는 Query string값이 기록되지 않는다.
설정이 끝나면 “Enable logging”을 클릭하여 저장한다.
위와 같이 Logging이 Enable된 것을 확인할 수 있다.
이제 다음 모듈부터 진행할 공격 테스트 및 차단 테스트는 모두 Firehose를 타고 S3 버킷에 쌓이게 된다.
참고자료
https://sessin.github.io/awswafhol/pre.html
AWS WAF Workshop
sessin.github.io
'2024 SWLUG > 클라우드' 카테고리의 다른 글
Command Injection (0) | 2024.10.29 |
---|---|
SQL Injection (0) | 2024.10.28 |
Stored XSS (0) | 2024.09.30 |
Reflected XSS (0) | 2024.09.30 |
AWS WAF와 AWS Cloud Formation 개념 (0) | 2024.09.23 |