SQLi 및 XSS를 방지하기 위해 AWS WAF 규칙을 생성하려면 어떻게 해야 합니까?

6분 분량
0

SQL 명령어 삽입(SQLi) 및 크로스 사이트 스크립팅(XSS)을 방지하려고 합니다. SQLi 및 XSS 공격을 방지하기 위해 AWS WAF에서 제공하는 옵션은 무엇입니까?

간략한 설명

AWS WAF는 SQLi 및 XSS 공격을 방지하기 위해 다음과 같은 보호 기능을 제공합니다.

  • 기본 제공 SQLi 및 XSS 엔진
  • SQLi 및 XSS 명령어 삽입 공격에 사용할 수 있는 AWS 관리형 규칙

이러한 보호 기능을 구성하려면 AWS WAF를 설정하고 웹 ACL을 생성해야 합니다.

참고: AWS WAF는 본문, 헤더 또는 쿠키 요청 구성 요소를 검사할 때 제한을 받습니다. 자세한 내용은 본문, 헤더 및 쿠키 요청에 대한 검사를 참조하세요.

해결 방법

중요: 작업개수로 설정한 비프로덕션 환경에서 규칙을 테스트하는 것이 좋습니다. AWS WAF 샘플링된 요청 또는 AWS WAF 로그와 결합한 Amazon CloudWatch 지표를 사용하여 규칙을 평가합니다. 규칙이 원하는 대로 작동한다고 생각되면 작업차단으로 변경합니다.

기본 제공 SQLi 및 XSS 엔진 사용

HTTP 헤더, 쿼리 문자열 또는 URI와 같은 HTTP 요청의 여러 부분에서 공격을 수행할 수 있습니다. 기본 제공 완화 엔진과 비교하여 HTTP 요청의 여러 부분을 검사하도록 AWS WAF 규칙을 구성합니다.

SQLi 공격 규칙 문

SQL 명령어 삽입 공격 규칙 문을 생성하여 악성 SQL 코드를 검사합니다. SQLi 공격 규칙 문을 만들려면 다음을 수행합니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 **웹 ACL(Web ACL)**을 선택합니다.
  3. 리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
    참고: 웹 ACL이 Amazon CloudFront에 대해 설정된 경우 전역을 선택합니다.
  4. 웹 ACL을 선택합니다.
  5. **규칙(Rules)**을 선택한 후 **규칙 추가(Add Rulese)**를 선택합니다. 드롭다운에서 **자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)**를 선택합니다.
  6. **이름(Name)**에서 규칙 이름을 입력한 다음 **일반 규칙(Regular Rule)**을 선택합니다.
  7. **요청 조건(If a request)**에서 **문과 일치함(matches the statement)**을 선택합니다.
  8. **검사(Inspect)**에서 SQLi 기본 제공 완화 엔진에 대해 평가할 요청 구성 요소(Request components) 를 선택합니다.
  9. **일치 유형(Match Type)**에 대해 드롭다운에서 **SQL 명령어 삽입 공격 포함(Contains SQL injection attacks)**을 선택합니다.
  10. 텍스트 변형(Text transformation)을 선택합니다.
  11. **작업(Action)**에서 **차단(Block)**을 선택합니다.
  12. **규칙 추가(Add Rule)**를 선택합니다.
  13. **저장(Save)**을 선택합니다.

XSS 공격 규칙 문

교차 사이트 스크립팅 공격 규칙 문을 만들어 웹 요청 구성 요소에서 악성 스크립트를 검사합니다. XSS 공격 규칙 문을 만들려면 다음을 수행합니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 **웹 ACL(Web ACL)**을 선택합니다.
  3. 리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
    참고: 웹 ACL이 Amazon CloudFront에 대해 설정된 경우 전역을 선택합니다.
  4. 웹 ACL을 선택합니다.
  5. **규칙(Rules)**을 선택한 후 **규칙 추가(Add Rulese)**를 선택합니다. 드롭다운에서 **자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)**를 선택합니다.
  6. **이름(Name)**에서 규칙 이름을 입력한 다음 **일반 규칙(Regular Rule)**을 선택합니다.
  7. **요청 조건(If a request)**에서 **문과 일치함(matches the statement)**을 선택합니다.
  8. **검사(Inspect)**에서 XSS 기본 제공 완화 엔진에 대해 평가할 요청 구성 요소(Request components) 를 선택합니다.
  9. **일치 유형(Match Type)**에 대해 드롭다운에서 **XSS 명령어 삽입 공격 포함(Contains XSS injection attacks)**을 선택합니다.
  10. 텍스트 변형(Text transformation)을 선택합니다.
  11. **작업(Action)**에서 **차단(Block)**을 선택합니다.
  12. **규칙 추가(Add Rule)**를 선택합니다.
  13. **저장(Save)**을 선택합니다.

여러 요청 구성 요소에 대해 평가하는 SQLi 및 XSS 공격 규칙

여러 요청 구성 요소에 대해 평가하는 공격 규칙을 만들려면 다음을 수행합니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 **웹 ACL(Web ACL)**을 선택합니다.
  3. 리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
    참고: 웹 ACL이 Amazon CloudFront에 대해 설정된 경우 전역을 선택합니다.
  4. 웹 ACL을 선택합니다.
  5. **규칙(Rules)**을 선택한 후 **규칙 추가(Add Rulese)**를 선택합니다. 드롭다운에서 **자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)**를 선택합니다.
  6. **이름(Name)**에서 규칙 이름을 입력한 다음 **일반 규칙(Regular Rule)**을 선택합니다.
  7. **요청 조건(If a request)**에서 **하나 이상의 문과 일치함(matches at least one of the statement, OR)**을 선택합니다.
  8. **검사(Inspect)**에서 SQLi 또는 XSS 기본 제공 완화 엔진에 대해 평가할 요청 구성 요소(Request components) 를 선택합니다.
  9. **일치 유형(Match Type)**에 대해 드롭다운에서 SQLi 명령어 삽입 공격 포함(Contains SQLi injection attacks) 또는 **XSS 명령어 삽입 공격 포함(Contains XSS injection attacks)**을 선택합니다.
  10. 텍스트 변형(Text transformation)을 선택합니다.
  11. 에 대해 8~10단계를 반복합니다. 추가 규칙 평가를 위해 **다른 문 추가(Add another statement)**를 선택합니다.
  12. **작업(Action)**에서 **차단(Block)**을 선택합니다.
  13. **규칙 추가(Add Rule)**를 선택합니다.
  14. **저장(Save)**을 선택합니다.

중요: 규칙이 예상대로 작동하려면 올바른 텍스트 변환을 적용해야 합니다. 예를 들어 쿠키를 검사하는 경우 쿠키와 관련된 다음 변환을 사용합니다.

  • URL 디코드
  • HTML 엔티티 디코드
  • 소문자

SQLi 및 XSS 명령어 삽입 공격에 사용할 수 있는 AWS 관리형 규칙 사용

AWS WAF용 AWS 관리형 규칙을 사용하면 자체 규칙을 작성하지 않고도 애플리케이션 취약성이나 기타 원치 않는 트래픽으로부터 보호할 수 있습니다.

참고: 관리형 규칙은 버전 변경 및 만료에 따라 달라질 수 있습니다. 자세한 내용은 관리형 규칙 그룹 버전 처리를 위한 모범 사례를 참조하세요.

SQL 데이터베이스 관리형 규칙 그룹을 사용하여 SQL 명령어 삽입 공격으로부터 보호합니다. SQL 데이터베이스 관리형 규칙 그룹(기본 버전 1.1)에는 다음과 같은 보호 기능을 제공하는 규칙이 있습니다.

  • SQLiExtendedPatterns_QUERYARGUMENTS
  • SQLi_QUERYARGUMENTS
  • SQLi_Body
  • SQLi_COOKIE
  • SQLi_URIPATH

핵심 규칙 집합(CRS) 관리형 규칙 그룹을 사용하여 XSS 명령어 삽입 공격으로부터 보호합니다. 핵심 규칙 집합(CRS) 관리형 규칙 그룹(기본 버전 1.3)에는 보호 기능을 제공하는 다음과 같은 규칙이 있습니다.

  • CrossSiteScripting_COOKIE
  • CrossSiteScripting_QUERYARGUMENTS
  • CrossSiteScripting_BODY
  • CrossSiteScripting_URIPATH

웹 ACL에 AWS 관리형 규칙 그룹을 추가하려면

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 **웹 ACL(Web ACL)**을 선택합니다.
  3. 리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
    참고: 웹 ACL이 Amazon CloudFront에 대해 설정된 경우 전역을 선택합니다.
  4. 웹 ACL을 선택합니다.
  5. **규칙(Rules)**을 선택한 후 **규칙 추가(Add Rulese)**를 선택합니다. 드롭다운에서 **관리형 규칙 그룹 추가(Add managed rule groups)**를 선택합니다.
  6. AWS 관리형 규칙 그룹 섹션을 확장합니다.
  7. 규칙 그룹을 찾아 웹 ACL에 추가를 켭니다.
    예를 들어 SQLi 보호를 위한 SQL 데이터베이스XSS 보호를 위한 핵심 규칙 집합 모두에 대해 웹 ACL에 추가를 설정할 수 있습니다.
  8. (선택 사항) **편집(Edit)**을 선택하여 규칙 그룹에 대한 설정을 보고 수정합니다.
  9. **규칙 추가(Add rules)**를 선택합니다.
  10. **저장(Save)**을 선택합니다.

웹 ACL에서 기존 AWS 관리형 규칙 그룹을 편집하려면

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 **웹 ACL(Web ACL)**을 선택합니다.
  3. 리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
    참고: 웹 ACL이 Amazon CloudFront에 대해 설정된 경우 전역을 선택합니다.
  4. 웹 ACL을 선택합니다.
  5. **규칙(Rules)**을 선택한 다음 **편집(Edit)**을 선택하여 설정을 보고 수정합니다.
    참고: 설정 편집에 대한 자세한 내용은 관리형 규칙 그룹 작업을 참조하세요.
  6. 편집을 마쳤으면 **저장(Save)**을 선택합니다.

AWS 관리형 규칙 그룹에서 오탐지 시나리오가 발생하는 경우 AWS WAF에 대한 AWS 관리형 규칙을 참조하세요.


AWS 공식
AWS 공식업데이트됨 2년 전