내용으로 건너뛰기

AWS WAF가 정상적인 업로드 요청을 차단하는 이유는 무엇입니까?

5분 분량
0

AWS WAF에서 차단한 확장 프로그램을 사용하는 파일을 업로드(POST)하고 싶습니다.

간략한 설명

AWS WAF는 다음과 같은 이유 중 하나로 POST 요청을 차단할 수 있습니다.

  • 파일이 AWS WAF에서 검사할 수 있는 최대 요청 본문 크기보다 큽니다. AWS WAF에는 고정된 본문 검사 크기 할당량이 있습니다.
  • SQL 인젝션 및 크로스 사이트 스크립팅(XSS) 규칙은 메타데이터에 임의의 문자가 포함된 파일에 민감합니다. 이러한 임의의 문자는 웹 액세스 제어 목록(웹 ACL) 규칙을 간접적으로 호출할 수 있습니다. AWS WAF의 실제 XSS 또는 SQL 인젝션 서명과 유사하기 때문입니다.

먼저 파일 업로드를 차단할 수 있는 일반 규칙을 검토하십시오. 일반적인 규칙에 따른 업로드 차단이 아닌 경우 차단된 파일을 허용하는 추가 옵션을 고려해 보십시오.

다음 규칙은 일반적으로 파일 업로드를 차단합니다.

  • SQLi_BODY
  • CrossSiteScripting_BODY
  • WindowsShellCommands_BODY
  • GenericLFI_BODY
  • SizeRestrictions_BODY

해결 방법

SQLi_BODY 및CrossSiteScripting_BODY 규칙에 의해 파일 업로드가 차단됨

AWS WAF 종합 로그terminatingRuleMatchDetails 필드에서 규칙 정보를 확인하십시오.

참고: terminatingRuleMatchDetails 필드는 SQLi_BODYCrossSiteScripting_BODY 공격에 대해서만 채워집니다.

다음은 CrossSiteScripting_BODY에 대한 matchedData 예시입니다.

"terminatingRuleMatchDetails": [{        
        "conditionType": "XSS",        
        "location": "BODY",
        "matchedData": [
            "

다음은 SQLi_BODY에 대한 matchedData 예시입니다.

"terminatingRuleMatchDetails": [{        
        "conditionType": "SQL_INJECTION",        
        "location": "BODY",
        "matchedData": [
            ")",
            "*",
            "(",
            "0"
        ]

SQLi_BODY 또는 CrossSiteScripting_BODY에서 차단한 업로드를 해결하려면 다음 옵션 중 하나를 선택하십시오.

잘 알려진 IP 주소를 허용 목록에 추가

애플리케이션에 액세스하는 IP 주소 범위를 알고 있는 경우 IP 일치 조건을 사용하십시오. 이렇게 하면 IP 주소가 허용 목록 규칙에 추가됩니다.

일치 조건이 있는 허용 목록 사용

요청을 허용하려면 문자열 또는 정규식(regex) 일치 조건이 있는 허용 목록을 사용하십시오. URI, HTTP 헤더 또는 AWS WAF 파일의 본문과 관련된 구문을 기반으로 허용 목록을 생성하십시오.

허용 목록에 있는 고유 식별자를 사용하여 정상적인 것으로 간주될 수 있는 요청을 식별하십시오.

허용 목록을 생성하려면 새 사용자 지정 규칙을 생성하십시오. 이 규칙은 XSS 또는 SQLi 벡터를 차단하며 예외 조건이 있습니다. 예외 조건은 유효한 업로드 요청 속성의 일치하는 데이터를 기반으로 합니다. 관리형 규칙 그룹 내에서 오탐을 유발하는 특정 규칙의 작업을 재정의합니다. SQLi_BODYCrossSiteScripting_BODYCount로 설정합니다.

이 사용자 지정 규칙을 생성하려면 다음 단계를 완료합니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창에서 AWS WAF를 선택합니다.
  3. 리소스 및 보호 팩을 선택합니다.
  4. 보호 팩을 찾아 규칙 옆에 있는 보기 및 편집을 선택합니다.
  5. 오른쪽 창에서 규칙 추가를 선택합니다.
    사용자 지정 규칙을 선택하고 다음을 클릭합니다.
    사용자 지정 규칙을 다시 선택하고 다음을 클릭합니다.
  6. 규칙 작업BLOCK으로 업데이트합니다.
  7. 규칙 이름을 입력합니다.
  8. 요청이 다음과 같은 경우에서 드롭다운을 확장하고 **모든 문과 일치함(AND)**을 선택합니다.
  9. 스테이트먼트 1에서 다음을 완료합니다.
    검사에서 레이블 있음을 선택합니다.
    스테이트먼트에서 레이블을 선택합니다.
    매치 키에는 오탐을 생성하는 규칙의 레이블을 입력합니다. 예를 들어 CrossSiteScripting_BODY 규칙에서 오탐이 발생하면 awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body를 입력합니다.
  10. 스테이트먼트 2에서 다음을 완료합니다. 검사에서 본문을 선택합니다.
    스테이트먼트에서 크기 초과 처리를 선택하여 계속합니다.
    **Match type(일치 유형)**에서 **Contains string(문자열 포함)**을 선택합니다.
    일치시킬 문자열에 해당 규칙에 일치시킬 값을 입력합니다.
    (선택 사항) 텍스트 변환에서 텍스트 변환 또는 없음을 선택합니다.
    규칙 구성을 확장하고 **문 부정(NOT)**에서 문 결과 부정을 선택합니다.
  11. 규칙 생성을 선택합니다.
  12. 규칙 우선순위를 설정하려면 오른쪽 창에서 규칙 순서 편집을 선택하고 요청을 차단하는 관리형 규칙 그룹 아래로 이 규칙을 드래그합니다. 이렇게 하면 규칙 그룹 검사를 위한 관리형 규칙 레이블이 먼저 설정됩니다. 그러면 AWS WAF가 다음 규칙 우선 순위 내에서 레이블을 사용합니다.
  13. 규칙 순서 저장을 선택합니다.

참고: 작업카운트로 설정하여 비 프로덕션 환경에서 규칙을 테스트하는 것이 가장 좋습니다. 규칙을 평가하려면 Amazon CloudWatch 지표를 AWS WAF 샘플링된 요청 또는 AWS WAF 로그와 함께 사용하십시오. 규칙이 예상대로 실행되면 작업차단으로 변경합니다.

WindowsShellCommands_BODY, GenericLFI_BODY 또는 SizeRestrictions_BODY 규칙에 의해 파일 업로드가 차단된 경우

파일이 업로드될 때 HTTP 아카이브(HAR) 파일을 생성합니다. 그런 다음 WindowsShellCommands_BODY, GenericLFI_BODY 또는 SizeRestrictions_BODY 규칙을 검토하십시오.

WindowsShellCommands_BODY, GenericLFI_BODY 또는 SizeRestrictions_BODY에 대한 오탐을 허용하려면 먼저 차단 규칙을 Count로 설정합니다. 지침은 규칙 그룹의 평가 결과를 카운트로 재정의를 참조하십시오.

그런 다음 오탐을 유발하는 관리형 규칙에 대한 사용자 지정 규칙을 생성합니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창에서 AWS WAF를 선택합니다.
  3. 리소스 및 보호 팩을 선택합니다.
  4. 보호 팩을 찾아 규칙 옆에 있는 보기 및 편집을 선택합니다.
  5. 오른쪽 창에서 규칙 추가를 선택합니다.
    사용자 지정 규칙을 선택하고 다음을 클릭합니다.
    사용자 지정 규칙을 다시 선택하고 다음을 클릭합니다.
  6. 규칙 작업BLOCK으로 업데이트합니다.
  7. 규칙 이름을 입력합니다.
  8. 요청이 다음과 같은 경우에서 드롭다운을 확장하고 **모든 문과 일치함(AND)**을 선택합니다.
  9. 스테이트먼트 1에서 다음을 완료합니다.
    검사에서 레이블 있음을 선택합니다.
    스테이트먼트에서 레이블을 선택합니다.
    매치 키에는 오탐을 생성하는 규칙의 레이블을 입력합니다. 예를 들어, WindowsShellCommands_BODY 규칙이 오탐을 생성하는 경우 awswaf:managed:aws:windows-os:WindowsShellCommands_Body를 입력하십시오.
  10. 스테이트먼트 2에서 다음을 완료합니다.
    검사에서 URI 경로를 선택합니다. 스테이트먼트일치 유형에서 문자열과 정확히 일치를 선택합니다.
    일치시킬 문자열에 현재 요청이 전송되는 URI 경로를 입력합니다.
    (선택 사항) 텍스트 변환에서 텍스트 변환 또는 없음을 선택합니다.
    규칙 구성을 확장하고 **문 부정(NOT)**에서 문 결과 부정을 선택합니다.
  11. 규칙 생성을 선택합니다.
  12. 규칙 우선순위를 설정하려면 오른쪽 창에서 규칙 순서 편집을 선택하고 요청을 차단하는 관리형 규칙 그룹 아래로 이 규칙을 드래그합니다.
  13. 규칙 순서 저장을 선택합니다.

참고: 작업카운트로 설정하여 비 프로덕션 환경에서 규칙을 테스트하는 것이 가장 좋습니다. 규칙을 평가하려면 CloudWatch 지표를 AWS WAF 샘플링된 요청 또는 AWS WAF 로그와 함께 사용하십시오. 규칙이 예상대로 실행되면 작업차단으로 변경합니다.

차단된 파일을 허용하는 추가 옵션

참고: 규칙은 나열된 순서대로 처리됩니다. 다음 모범 사례의 경우 필요에 따라 규칙 우선순위를 재지정하십시오.

사용 사례에 가장 적합한 방법을 선택하십시오.

  • AWS WAF 문자열 일치 규칙 문 또는 AWS WAF Classic 문자열 일치 조건을 사용하여 선택적 제외를 적용합니다. 파일의 본문과 관련된 특정 문구를 허용 목록에 추가합니다. 예를 들면 다음과 같습니다. 특정 URI 경로에서 오탐이 발생하면 해당 경로를 허용 목록에 추가하십시오.
  • 파일 업로드에 별도의 도메인을 사용하십시오. 사용 사례에 맞는 비용 효율적인 옵션인지 확인하십시오.
  • 파일 및 이미지를 스캔(스크럽)하여 임베디드 코드 및 데이터를 찾습니다. 파일을 업로드하기 전에 클라이언트 측에서 이 작업을 수행할 수 있습니다. 또는 제외 규칙을 생성하면 파일을 업로드한 후 백엔드에서 이 작업을 수행할 수 있습니다.
  • 업로드하기 전에 파일을 압축하십시오.
    참고: 악성 파일을 압축하지 않도록 하십시오.
  • 알려진 IP 주소 범위에서 업로드가 이루어지는 경우 해당 IP 주소를 허용 목록에 추가하십시오.
  • AWS WAF가 이미지에 대해 XSS 또는 SQLi를 호출하지 않도록 base64 인코딩을 사용하여 모든 이미지 데이터를 인코딩합니다.
    참고: 악성 이미지를 인코딩하지 않도록 하십시오.
  • 청크 제거 또는 비트 무작위화와 같은 이미지 최적화 기법을 구현하십시오.
AWS 공식업데이트됨 8달 전