이번 포스팅 글은 AWS WAF 데모 테스트를 진행하면서 웹 ACL를 알아보도록 한다.
#웹 ACL이란
웹 액세스 제어 목록으로 방화벽을 운영하면서 ACL을 사용하여 웹 서비스에서 요청되는 패킷을 탐지 및 차단하여 세부적으로 제어할 수 있게된다.
1편에 소개되었던 아키텍처를 참고해서 설명하자면 아래 파란 네모박스로 표시된 룰이 웹 ACL이라고 볼 수 있다.
# AWS ACL 리스트 정리
AWS WAF에서 제공되는 그룹들을 공식홈페이지를 참고하여 간단하게 정리한다.
1. Baseline rule groups
RuleSetName : AWSManagedRulesCommonRuleSet
정책 리스트 | 세부설명 |
NoUserAgent_HEADER | HTTP user-agent 헤더 값이 없는 경우 제어 |
UserAgent_BadBots_HEADER | User-Agent 헤더 값에 불량 봇이 존재하는 경우 제어 |
SizeRestrictions_QUERYSTRING | URI 쿼리 문자열 길이가 표준 길이가 아닌 경우 제어 |
SizeRestrictions_Cookie_HEADER | 쿠키 헤더 길이가 사용되는 범위가 아닌 경우 제어 |
SizeRestrictions_BODY | 요청 본문 크기가 공통 범위가 아닌 경우 제어 |
SizeRestrictions_URIPATH | URI 경로 길이가 사양 안이 아닌 경우 제어 |
EC2MetaDataSSRF_BODY | 요청 본문에서 Amazon EC2 메타데이터를 빼내려는 시도가 있는 경우 제어 |
EC2MetaDataSSRF_COOKIE | 요청 쿠키에서 Amazon EC2 메타데이터를 빼내려는 시도가 있는 경우 제어 |
EC2MetaDataSSRF_URIPATH | 요청 URI 경로에서 Amazon EC2 메타데이터를 빼내려는 시도가 있는 경우 제어 |
EC2MetaDataSSRF_QUERYARGUMENTS | 요청 쿼리 인수에서 Amazon EC2 메타데이터를 빼내려는 시도가 있는 경우 제어 |
GenericLFI_QUERYARGUMENTS | 쿼리 인수에 로컬 파일 포함(LFI, Local File Inclusion) 도용 제어 ex) ../../../../etc/password |
GenericLFI_URIPATH | URI 경로에 로컬 파일 포함(LFI, Local File Inclusion) 도용이 있는 경우 제어 ex) ../../../../etc/password |
GenericLFI_BODY | 요청 본문에 로컬 파일 포함(LFI, Local File Inclusion) 도용이 있는 경우 제어 ex) ../../../../etc/password |
RestrictedExtensions_URIPATH | URI 경로에 클라이언트가 읽거나 실행해서는 안 되는 시스템 파일에 접근하는 경우 제어 ex) win.ini , access.log |
RestrictedExtensions_QUERYARGUMENTS | 쿼리 인수가 클라이언트가 읽거나 실행해서는 안 되는 시스템 파일에 접근하는 경우 제어 ex) win.ini , access.log |
GenericRFI_QUERYARGUMENTS | 모든 쿼리 파라미터의 값을 검사하고 웹 애플리케이션에서 원격 파일 포함 (RFI, Remote File Inclusion)을 도용하는 경우 제어 ex) :// |
GenericRFI_BODY | 요청 본문의 값을 검사하고 웹 애플리케이션에서 원격 파일 포함 (RFI, Remote File Inclusion)을 도용하는 경우 제어 ex) :// |
GenericRFI_URIPATH | URI 경로의 값을 검사하고 웹 애플리케이션에서 원격 파일 포함 (RFI, Remote File Inclusion)을 도용하는 경우 제어 ex) :// |
CrossSiteScripting_COOKIE | 쿠키 헤더 내 교차 사이트 스크립팅(XSS, cross-site scripting) 패턴 제어 |
CrossSiteScripting_QUERYARGUMENTS | 쿼리 인수의 값 내 교차 사이트 스크립팅(XSS, cross-site scripting) 패턴 제어 |
CrossSiteScripting_BODY | 요청 본문의 값 내 교차 사이트 스크립팅(XSS, cross-site scripting) 패턴 제어 |
CrossSiteScripting_URIPATH | URI 경로의 값 내 교차 사이트 스크립팅(XSS, cross-site scripting) 패턴 제어 |
RuleSetName : AWSManagedRulesAdminProtectionRuleSet
정책 리스트 | 세부설명 |
AdminProtection_URIPATH | 웹 서버 또는 애플리케이션의 관리를 위해 예약되어 있는 URI 경로에 대한 요청 제어 ex) 노출된 관리 페이지에 대한 외부 액세스를 차단 |
RuleSetName : AWSManagedRulesKnownBadInputsRuleSet
정책 리스트 | 세부설명 |
Host_localhost_HEADER | 로컬 호스트를 나타내는 패턴에 대한 요청의 호스트 헤더 제어 ex) localhost |
PROPFIND_METHOD | HEAD와 유사하지만 XML 객체를 빼내려는 의도가 추가된 PROPFIND에 대한 요청의 HTTP 메서드 제어 |
ExploitablePaths_URIPATH | URI 경로에서 도용 가능한 웹 애플리케이션 경로에 대한 액세스 시도 제어 ex) web-inf |
BadAuthToken_COOKIE_AUTHORIZATION | 요청되지 않은 JSON 웹 토큰(JWT, JSON Web Token)이 요청 제어 |
2. Use-case specific rule groups
RuleSetName : AWSManagedRulesSQLiRuleSet
정책 리스트 | 세부설명 |
SQLiExtendedPatterns_QUERYARGUMENTS | 모든 쿼리 파라미터의 값에서 악성 SQL 코드와 일치하는 패턴 제어 |
SQLi_QUERYARGUMENTS | 모든 쿼리 파라미터의 값에서 악성 SQL 코드와 일치하는 패턴 제어 |
SQLi_BODY | 본문에서 악의적인 SQL 코드와 일치하는 패턴 제어 |
SQLi_COOKIE | 요청 쿠키 헤더에서 악성 SQL 코드와 일치하는 패턴 제어 |
SQLi_URIPATH | 요청 URI 경로에서 악성 SQL 코드와 일치하는 패턴 제어 |
RuleSetName : AWSManagedRulesLinuxRuleSet (Linux operating system)
정책 리스트 | 세부설명 |
LFI_URIPATH | 로컬 파일 포함(LFI, Local File Inclusion) 취약성을 도용하려는 시도가 있는 요청 경로 제어 ex) /proc/version 등의 파일 탐지 |
LFI_QUERYARGUMENTS | 로컬 파일 포함(LFI, Local File Inclusion) 취약성을 도용하려는 시도가 있는 모든 쿼리 파라미터의 값 제어 ex) /proc/version 등의 파일 탐지 |
LFI_BODY | 로컬 파일 포함(LFI, Local File Inclusion) 취약성을 도용하려는 시도 있는 요청 본문을 제어 ex) /proc/version 등의 파일 탐지 |
RuleSetName : AWSManagedRulesUnixRuleSet (POSIX operating system)
정책 리스트 | 세부설명 |
UNIXShellCommandsVariables_QUERYARGUMENTS | Unix 시스템에서 실행되는 웹 애플리케이션에서 명령 주입, LFI 및 경로 탐색 취약성을 도용하려는 시도 있는 모든 쿼리 파라미터의 값을 제어 ex) echo $HOME 및 echo $PATH |
UNIXShellCommandsVariables_BODY | Unix 시스템에서 실행되는 웹 애플리케이션에서 명령 주입, LFI 및 경로 탐색 취약성을 도용하려는 시도 있는 요청 본문을 제어 ex) echo $HOME 및 echo $PATH |
RuleSetName : AWSManagedRulesWindowsRuleSet (Windows operating system)
정책 리스트 | 세부설명 |
PowerShellCommands_Set1_QUERYARGUMENTS | 모든 쿼리 매개 변수 및 블록의 값을 제어 ex) PowerShell 명령 주입 시도, Invoke-Expression 함수 등 |
PowerShellCommands_Set2_QUERYARGUMENTS | 모든 쿼리 파라미터의 값을 제어 ex) PowerShell 명령 주입 시도, Invoke-Expression 함수 등 |
PowerShellCommands_Set1_BODY | 요청 본문 및 블록을 제어 ex) PowerShell 명령 삽입 시도, Invoke-Expression 함수 등 |
PowerShellCommands_Set2_BODY | 요청 본문 및 블록을 제어 ex) PowerShell 명령 삽입 시도, Invoke-Expression 함수 등 |
RuleSetName : AWSManagedRulesPHPRuleSet (PHP application)
정책 리스트 | 세부설명 |
PHPHighRiskMethodsVariables_QUERYARGUMENTS | PHP 스크립트 코드 주입 시도가 있는지 모든 쿼리 파라미터의 값 제어 ex) fsockopen 함수 및 $_GET superglobal 변수 등 |
PHPHighRiskMethodsVariables_BODY | PHP 스크립트 코드 주입 시도가 있는지 요청 본문의 값 제어 ex) fsockopen 함수 및 $_GET superglobal 변수 등 |
RuleSetName : AWSManagedRulesWordPressRuleSet (WordPress application)
정책 리스트 | 세부설명 |
WordPressExploitableCommands_QUERYSTRING | WordPress 취약한 설치 또는 플러그인에서 악용될 수 있는 명령 제어 ex) do-reset-wordpress 명령 등 |
WordPressExploitablePaths_URIPATH | WordPress 다음과 같은 파일 xmlrpc.php쉽게 악용할 수 있는 취약성 제어 |
3. IP reputation rule groups
RuleSetName : AWSManagedRulesAmazonIpReputationList
정책 리스트 | 세부설명 |
AWSManagedIPReputationList_xxxx | Amazon 위협 인텔리전스에 의해 악의적인 액터 및 봇으로 식별된 IP 주소 목록 제어 |
RuleSetName : AWSManagedRulesAnonymousIpList
정책 리스트 | 세부설명 |
AnonymousIPList | TOR 노드, 임시 프록시 및 기타 마스킹 서비스 등 클라이언트 정보를 익명화하는 것으로 알려진 소스의 IP 주소 목록 제어 |
HostingProvider IPList |
최종 사용자 트래픽을 소싱할 가능성이 적은 호스팅 공급자 및 클라우드 공급자의 IP 주소 목록 제어 |
'Cloud' 카테고리의 다른 글
[AWS] 웹 방화벽(Web Application Firewall, WAF) 로깅 구성 - 3 (0) | 2021.06.07 |
---|---|
[AWS] 웹 방화벽(Web Application Firewall, WAF) 로깅 구성 - 2 (0) | 2021.06.07 |
[AWS] 웹 방화벽(Web Application Firewall, WAF) 로깅 구성 - 1 (0) | 2021.06.07 |
[AWS] 웹 방화벽(Web Application Firewall, WAF) - 3 (0) | 2021.06.06 |
[AWS] 웹 방화벽(Web Application Firewall, WAF) - 1 (0) | 2021.06.05 |