Ssoon
Security Automation for AWS WAF - 1) 환경 구성 본문
CloudNet@가시다님이 진행하는 "AWS Hacking & Security Study" 1기 스터디입니다.
# [AWS Workshop Studio] Security Automation for AWS WAF 를 참조하였습니다.
< 전담 보안 팀이 없는 조직의 WAF 규칙 설정의 어려움 >
이 과정을 단순화하기 위해 일반적인 웹 기반 공격을 필터링하는 AWS WAF규칙 세트를 자동으로 배포
사전에 정의된 AWS WAF 웹 ACL 을 선택해서 배포
배포가 완료되면 AWS WAF가 웹 요청을 검사하여 Amazon CloudFront 배포 또는 Application Load Balancer를 보호
[ WAF Automation on AWS 아키텍처 ]
AWS WAF Web ACL을 활용해 모든 수신 메세지를 중앙에서
검사(inspection)및 판정(decision)을 수행
- AWS WAF 방어기능
AWS Managed Rules (A) | - 일반적인 애플리케이션 취약점 또는 원치 않는 트래픽의 악용으로부터 보호하기 위한 AWS에서 관리하는 핵심 규칙 집합. |
Manual IP lists (B, C) | - 수동으로 차단 또는 허용하려는 IP 주소를 삽입할 수 있는 두 개의 특정 AWS WAF 규칙을 생성합니다. - IP 주소 유지 및 만료된 IP 주소를 이러한 IP 목록에서 제거하기 위한 구성도 가능합니다. |
SQL Injection (D) | - 일반적인 SQL 삽입 패턴을 검사하여 웹 애플리케이션에서의 SQL 삽입 공격으로부터 보호하기 위한 AWS WAF 규칙 구성. |
XSS (E) | - URI, 쿼리 문자열 또는 요청 본문에서의 일반적인 XSS 패턴을 검사하여 크로스 사이트 스크립팅 공격으로부터 보호. |
HTTP flood (F) | - 특정 IP 주소로부터의 많은 요청으로부터 보호하기 위한 기능. 웹 레이어 DDoS 공격 또는 브루트 포스 로그인 시도와 같은 공격을 방어. - 5분 동안 100개 미만의 요청 임계값을 지원합니다. |
Scanners and Probes (G) | - 응용 프로그램 액세스 로그를 파싱하여 이상적인 오리진에서 생성된 오류의 비정상적인 양을 탐지하고 해당 IP 주소를 사용자가 정의한 시간 동안 차단합니다. |
IP Reputation Lists (H) | - IP 목록 파서 AWS Lambda 함수로, 시간당 새로운 차단 범위를 확인하기 위해 타사 IP 평판 목록을 검사합니다. |
Bad Bots (I) | - 공격을 시도하려는 시도된 공격을 유인하고 방어하기 위한 보안 메커니즘으로 honeypot을 자동으로 설정합니다. |
✅ CloudFormation 솔루션 배포
AWS CloudFormation 템플릿 : aws-waf-security-automations.template
- AWS Console에 로그인 후 위에 Launch solution 을 클릭하고 리전을 서울(ap-northeast-2) 로 변경합니다.
- 파라미터 : 적용한 Use Case에 따라서 각 파라메터를 선택하고 검토합니다.
🧿 Resource Type
- 이 웹 ACL과 연결할 리소스를 선택
- CloudFront
- AWS WAF와 통합하여 웹 애플리케이션 공격을 방지하고, 웹 애플리케이션의 가용성을 높이고 성능을 최적화하는 데 사용
- Application Load Balancer (ALB)
- AWS WAF와 통합하여 웹 공격을 탐지하고 차단하며, 로드 밸런서 뒤의 백엔드 서버로 트래픽을 분산
- 실습을 위해 ALB 를 선택합니다.
- 공격 테스트 실습중 AWS WAF를 이용한 방어 시나리오를 실행하시려면 Endpoint Type을 ALB로 선택합니다.
🧿 AWS Managed IP Reputation Rule Groups
- AWS에서 관리하는 IP 평판 규칙 그룹입니다. 악성 IP 주소 또는 악성 활동을 식별하고 차단하는 데 사용됩니다. AWS에서 제공하는 신뢰할 수 있는 소스로부터의 데이터를 기반으로 작동합니다.
- https://docs.aws.amazon.com/ko_kr/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html
- Activate Amazon IP reputation List Managed Rule Group Protection
- AWS에서 관리하는 IP 평판 목록을 사용하여 애플리케이션에 대한 요청을 차단
- Activate Anonymous IP List Managed Rule Group Protection
- 특정 사용자나 장치와 연결되지 않는 IP 주소인 익명 IP 주소로부터 애플리케이션을 보호
🧿 AWS Managed Baseline Rule Groups
- AWS에서 관리하는 기본 규칙 그룹입니다. 일반적인 웹 공격을 탐지하고 차단하는 데 사용
- https://docs.aws.amazon.com/ko_kr/waf/latest/developerguide/aws-managed-rule-groups-baseline.html
- Activate Core Rule Set Managed Rule Group Protection
- "Core Rule Set"은 웹 애플리케이션에서 일반적으로 발생하는 웹 공격을 탐지하고 차단하기 위한 미리 정의된 보안 규칙 집합
- 필요한 WCU: 700. 용량 제한을 초과하여 WebACL 스택 배포가 실패하지 않도록 계정에 충분한 WCU 용량이 있어야 합니다.
- WCU (Write Capacity Unit): WCU는 DynamoDB 테이블에 데이터를 쓰는 작업에 필요한 처리량을 나타냅니다. 쓰기 작업은 데이터를 추가하거나 업데이트하는 작업을 포함합니다.
- 필요한 WCU: 700. 용량 제한을 초과하여 WebACL 스택 배포가 실패하지 않도록 계정에 충분한 WCU 용량이 있어야 합니다.
- "Core Rule Set"은 웹 애플리케이션에서 일반적으로 발생하는 웹 공격을 탐지하고 차단하기 위한 미리 정의된 보안 규칙 집합
- Activate Admin Protection Managed Rule Group Protection
- "Admin Protection" 규칙 그룹은 웹 애플리케이션에 대한 관리자 또는 관리 인터페이스를 공격으로부터 보호하기 위한 규칙
- 필요한 WCU: 100
- "Admin Protection" 규칙 그룹은 웹 애플리케이션에 대한 관리자 또는 관리 인터페이스를 공격으로부터 보호하기 위한 규칙
- Activate Known Bad Inputs Managed Rule Group Protection
- "Known Bad Inputs" 규칙 그룹은 이미 알려진 악의적인 입력 데이터를 검출하여 웹 애플리케이션에서 사용자로부터의 해로운 입력을 차단
- 필요한 WCU: 200.
- "Known Bad Inputs" 규칙 그룹은 이미 알려진 악의적인 입력 데이터를 검출하여 웹 애플리케이션에서 사용자로부터의 해로운 입력을 차단
🧿 AWS Managed Use-case Specific Rule Groups
- AWS에서 관리하는 특정 사용 사례에 특화된 규칙 그룹
- https://docs.aws.amazon.com/ko_kr/waf/latest/developerguide/aws-managed-rule-groups-use-case.html
- Activate SQL Database Managed Rule Group Protection
- 웹 애플리케이션에서 발생할 수 있는 SQL 인젝션 공격을 탐지하고 차단
- 필요한 WCU: 200
- 웹 애플리케이션에서 발생할 수 있는 SQL 인젝션 공격을 탐지하고 차단
- Activate Linux Operating System Managed Rule Group Protection
- 웹 애플리케이션을 호스팅하는 서버에서 Linux 운영 체제를 사용할 때 관련된 보안 위협을 탐지하고 차단
- 필요한 WCU: 200
- 웹 애플리케이션을 호스팅하는 서버에서 Linux 운영 체제를 사용할 때 관련된 보안 위협을 탐지하고 차단
- Activate POSIX Operating System Managed Rule Group Protection
- 웹 애플리케이션을 호스팅하는 서버에서 POSIX 호환 운영 체제를 사용할 때 관련된 보안 위협을 탐지하고 차단
- POSIX는 "Portable Operating System Interface"의 약어로, 컴퓨터 운영 체제에서 프로그램을 작성할 때 사용되는 API (Application Programming Interface) 및 명세의 집합을 정의하는 표준
- 필요한 WCU: 100
- 웹 애플리케이션을 호스팅하는 서버에서 POSIX 호환 운영 체제를 사용할 때 관련된 보안 위협을 탐지하고 차단
- Activate Windows Operating System Managed Rule Group Protection
- 웹 애플리케이션을 호스팅하는 서버에서 Windows 운영 체제를 사용할 때 관련된 보안 위협을 탐지하고 차단
- 필요한 WCU: 200
- 웹 애플리케이션을 호스팅하는 서버에서 Windows 운영 체제를 사용할 때 관련된 보안 위협을 탐지하고 차단
- Activate PHP Application Managed Rule Group Protection
- PHP로 개발된 웹 애플리케이션에서 발생할 수 있는 보안 위협을 탐지하고 차단
- 필요한 WCU: 100
- PHP로 개발된 웹 애플리케이션에서 발생할 수 있는 보안 위협을 탐지하고 차단
- Activate WordPress Application Managed Rule Group Protection
- WordPress로 개발된 웹 사이트 또는 블로그에서 발생할 수 있는 보안 위협을 탐지하고 차단
- 필요한 WCU: 100
- WordPress로 개발된 웹 사이트 또는 블로그에서 발생할 수 있는 보안 위협을 탐지하고 차단
🧿 Custom Rule - Scanner & Probes
사용자 지정으로 만든 스캐너 및 프로브 공격을 탐지하고 차단하는 규칙 그룹
- 스캐너 및 프로브 공격은 웹 애플리케이션의 취약점을 찾기 위해 다양한 방법으로 웹 애플리케이션을 공격하는 행위입니다. 스캐너 및 프로브 공격은 다음과 같은 방법으로 수행될 수 있습니다.
- 웹 애플리케이션의 URL을 입력하여 접근 가능 여부를 확인하는 방법
- 웹 애플리케이션에 대한 요청을 보내 응답을 분석하는 방법
- 웹 애플리케이션에 대한 공격 코드를 보내 취약점을 유발하는 방법
- Activate Scanner & Probe Protection
- AWS WAF가 웹 애플리케이션에 대한 스캐너 및 프로브 공격을 감지하고 차단
- Activate Scanner & Probe Protection 의 활성화(yes)를 선택한 경우, CloudFront distribution 혹은 Application Load Balancer의 애플리케이션 액세스 로그를 저장할 S3 버킷(Application Access Log Bucket Name)의 이름을 필수로 지정해야 합니다.
- Application Access Log Bucket Name
- AWS WAF가 웹 애플리케이션의 액세스 로그를 저장할 Amazon S3 버킷의 이름을 나타냅니다.
- 액세스 로그는 웹 트래픽 및 보안 이벤트를 기록하는 데 사용됩니다.
- Application Access Log Bucket Prefix
- 액세스 로그 파일이 Amazon S3 버킷에 저장될 때 사용할 접두사
- 로그 파일을 구분하고 정리하는 데 도움
- Is bucket access logging turned on?
- Amazon S3 버킷 액세스 로깅이 활성화되었는지 여부
- 액세스 로그를 활성화하려면 AWS WAF에서 액세스 로그를 저장할 S3 버킷을 지정
- Error Threshold
- 액세스 로그를 생성할 때 발생할 수 있는 오류의 최대 수를 지정
- 오류가 이 임계치를 초과하면 경고 또는 조치
- Keep Data in Original S3 Location
- 액세스 로그가 S3 버킷의 원래 위치에 유지되어야 하는지 여부를 나타내는 설정
- 액세스 로그를 다른 위치로 이동하려면 이 설정을 "No"로 설정
🧿 Custom Rule - HTTP Flood
사용자 지정으로 만든 HTTP Flood 공격을 탐지하고 차단하는 규칙 그룹
- Activate HTTP Flood Protection
- AWS WAF가 웹 애플리케이션에 대한 HTTP Flood 공격을 감지하고 차단
- AWS WAF 비율 기반 규칙에는 100보다 큰 값이 필요 (Lambda/Athena 로그 파서 옵션을 선택한 경우 0보다 큰 값을 사용할 수 있습니다)
- AWS WAF가 웹 애플리케이션에 대한 HTTP Flood 공격을 감지하고 차단
- Default Request Threshold
- 모든 국가에 대한 기본 HTTP Flood 공격 요청 임계치
- 특정 시간 동안 받은 요청 수를 기준으로 공격을 탐지하고 차단
- 임계값은 기본 5분 주기로 계산
- Request Threshold by Country
- 국가별로 서로 다른 HTTP Flood 공격 요청 임계치를 설정
- 특정 국가에서 공격이 더 증가할 경우 해당 국가에 대한 보안 임계치를 조정
- Group By Requests in HTTP Flood Athena Query
- AWS WAF가 HTTP Flood 공격을 분석할 때, Athena 쿼리를 통해 요청을 그룹화
- 공격 패턴을 파악하고 대응하기 위한 데이터를 분석할 때 도움
- WAF Block Period
- HTTP Flood 공격을 탐지한 후 차단하는 기간을 설정
- 기간 동안 공격자의 요청을 거부하고 차단
- Athena Query Run Time Schedule (Minute)
- Athena 쿼리를 수행하여 HTTP Flood 공격 데이터를 분석하는 일정을 설정
- 정기적으로 데이터를 분석하여 보안 조치를 취할 수 있도록 도움
- 기본적으로 Athena 쿼리는 5분마다 실행
🧿 Custom Rule - Bad Bot
사용자 지정으로 만든 Bad Bot 공격을 탐지하고 차단하는 규칙 그룹
- Activate Bad Bot Protection
- 웹 애플리케이션으로 들어오는 "Bad Bot" 또는 악성 봇의 요청을 감지하고 차단
- Bad Bot은 악의적인 목적으로 웹 사이트에 액세스하는 자동화된 프로그램 또는 스크립트
- ARN of an IAM role that has write access to CloudWatch logs in your account
- AWS 계정 내에서 CloudWatch 로그에 쓰기 권한을 가진 IAM (Identity and Access Management) 역할의 Amazon Resource Name (ARN)
- AWS WAF가 악성 봇을 탐지하고 관련 데이터를 CloudWatch 로그에 기록하는 데 필요한 권한을 제공
🧿 Custom Rule - Third Party IP Reputation Lists
사용자 지정으로 만든 규칙 그룹으로, 외부 IP 주소 평판 목록을 활용하여 악성 IP 주소를 차단
- Activate Reputation List Protection
- AWS WAF가 타사 목록(spamhaus, torproject 및 emergingthreats) 에서 제공되는 IP 주소 평판 목록을 사용하여 웹 애플리케이션을 보호
- AWS WAF가 타사 목록(spamhaus, torproject 및 emergingthreats) 에서 제공되는 IP 주소 평판 목록을 사용하여 웹 애플리케이션을 보호
🧿 Legacy Custom Rules
웹 애플리케이션의 보안을 강화하기 위해 사용자가 직접 설정하고 구성할 수 있는 규칙 세트를 제공
- Activate SQL Injection Protection
- AWS WAF가 웹 애플리케이션에서 발생할 수 있는 SQL Injection (SQL 주입) 공격을 감지하고 차단
- Sensitivity Level for SQL Injection Protection
- SQL Injection 공격을 감지하는 민감도 수준
- 공격 패턴을 탐지하고 차단하는 정확성을 제어
- 높은 민감도는 더 정확한 공격 탐지를 제공하지만, 잘못된 긍정적인 결과가 발생할 가능성이 높아집니다. 즉, 정상적인 트래픽을 잘못 차단할 수 있습니다. 낮은 민감도는 잘못된 차단을 줄이지만 공격을 놓칠 수 있습니다.
- Activate Cross-site Scripting Protection
- AWS WAF가 웹 애플리케이션에서 발생할 수 있는 Cross-site Scripting (XSS) 공격을 감지하고 차단
🧿 Allowed and Denied IP Retention Settings
허용된 및 거부된 IP 주소 목록의 유지 기간 및 알림 설정을 관리하는 기능
- Retention Period (Minutes) for Allowed IP Set
- 웹 애플리케이션에 대한 액세스가 허용된 IP 주소가 얼마 동안 유지될지를 결정
- 이 값을 60으로 설정하면 특정 IP 주소가 웹 애플리케이션에 액세스를 허용한 후 60분 동안은 계속 허용됩니다. 이후에는 더 이상 액세스를 허용하지 않습니다.
- 0에서 15 사이의 숫자를 입력하면 15로 처리됩니다. IP 보존을 사용하지 않도록 설정하려면 기본값 -1로 둡니다.
- Retention Period (Minutes) for Denied IP Set
- 웹 애플리케이션에 대한 액세스가 거부된 IP 주소가 얼마 동안 유지될지를 결정
- 이 값을 30으로 설정하면 특정 IP 주소가 웹 애플리케이션에 액세스를 거부당한 후 30분 동안은 계속 거부됩니다. 이후에는 다시 액세스를 허용할 수 있습니다.
- 0에서 15 사이의 숫자를 입력하면 15로 처리됩니다. IP 보존을 사용하지 않도록 설정하려면 기본값 -1로 둡니다.
- Email for receiving notification upon Allowed or Denied IP Sets expiration
- 허용된 또는 거부된 IP 주소 목록이 만료될 때 알림을 받을 이메일 주소
- IP 주소가 만료되기 전에 알림을 받아서 필요한 조치를 취할 수 있도록 도움
- 실습을 위해 S3 버킷을 생성합니다.
- 생성한 버킷 이름을 아래와 같이 입력하고 다음을 선택합니다.
- 다음을 눌러 4번째 단계에서 아래와 같이 IAM 리소스 생성 승인, 생성 승인을 선택 > 스택을 생성합니다.
- 스택 생성 확인
- 생성된 Web ACLs 과 Rules 확인
- CloudFormation 으로 생성된 스택의 Resource 에서 ReputationListsParser 선택
- 외부에서 평판 리스트를 가져오는 Lambda funtion 을 확인
- https://www.spamhaus.org/drop/drop.txt
- Spamhaus Project에서 제공하는 신뢰할 수 있는 스팸 및 악성 웹사이트 블록 리스트 중 하나
'AWS Hacking & Security Study' 카테고리의 다른 글
Security Automation for AWS WAF - 2) 공격 테스트 실습 환경 구성 (0) | 2023.09.13 |
---|---|
Security Automation for AWS WAF - AWS WAF Log parser (0) | 2023.09.12 |
AWS IAM Workshop - EC2 인스턴스에 Role 부여 (0) | 2023.09.10 |
AWS IAM Workshop - 역할 전환(Role Switch) (0) | 2023.09.10 |
AWS IAM Workshop - 리소스 기반 정책(Resource-based policies) (0) | 2023.09.06 |
Comments