AWS WAF에서 차단한 파일을 업로드하려면 어떻게 해야 하나요?

6분 분량
0

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

간략한 설명

AWS WAF가 POST 요청을 차단하는 이유를 이해하려면 다음 사항을 참고하세요.

  • AWS WAF _BODY 관리형 규칙은 웹 액세스 제어 목록(ACL) 의 본문 크기 제한까지만 요청 본문을 검사합니다. 제한은 리전 웹 ACL의 경우 8KB이고 Amazon CloudFront 웹 ACL의 경우 16KB입니다. CloudFront 웹 ACL의 경우 웹 ACL 구성에서 최대 64KB까지 제한을 늘릴 수 있습니다.
  • SQL 명령어 삽입 및 크로스 사이트 스크립팅(XSS) 규칙은 메타데이터에 임의의 문자가 포함된 파일에 민감합니다. 이러한 임의 문자는 AWS WAF의 실제 XSS 또는 SQL 명령어 삽입 서명과 유사하기 때문에 웹 ACL 규칙을 간접적으로 호출할 수 있습니다.

먼저 파일 업로드를 차단할 수 있는 일반 규칙을 검토하세요. 일반적인 규칙에 따른 업로드 차단이 아닌 경우 차단된 파일을 허용하는 추가 옵션을 고려해 보세요.
다음 규칙은 일반적으로 파일 업로드를 차단합니다.

  • CrossSiteScripting_BODY
  • SQLi_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 일치 조건을 사용하여 허용 목록 규칙에 추가하세요. 지침은 IP 일치 조건 사용을 참조하세요.

일치 조건이 있는 허용 목록 사용
요청을 허용하려면 문자열 또는 정규 표현식(regex) 일치 조건이 있는 허용 목록을 사용하세요. URI, HTTP 헤더 또는 AWS WAF 파일의 BODY와 관련된 구문을 기반으로 허용 목록을 생성할 수 있습니다.

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

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

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 Web ACLs을 선택합니다.
  3. 리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
    참고: 웹 ACL이 Amazon CloudFront용으로 설정되어 있는 경우 글로벌을 선택합니다.
  4. 웹 ACL을 선택합니다. 그런 다음 웹 ACL 규칙 탭에서 규칙을 선택합니다.
  5. 규칙 추가를 선택한 다음 내 규칙 및 규칙 그룹 추가를 선택합니다.
  6. 이름규칙 이름을 입력한 다음 일반 규칙을 선택합니다.
  7. 요청의 경우 **모든 문과 일치(AND)**를 선택합니다.
  8. 다음 필드를 사용하여 문 1을 작성하세요.
    검사에서 레이블 포함을 선택합니다.
    일치 범위에 대해 레이블을 선택합니다.
    매치 키에는 오탐을 생성하는 규칙의 레이블을 입력합니다. 예를 들어 CrossSiteScripting_BODY 규칙에서 오탐이 발생하면 awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body를 입력하세요.
  9. 다음 필드를 사용하여 문 2를 작성하세요.
    문 결과 부정 확인란을 선택합니다.
    검사에 대해 본문을 선택합니다.
    일치 유형에서 문자열 포함을 선택합니다.
    일치시킬 문자열에 해당 규칙에 일치시킬 값을 입력합니다.
  10. (선택 사항) 텍스트 변환에서 텍스트 변환 또는 없음을 선택합니다.
  11. 동작차단을 선택합니다. 그다음 규칙 추가를 선택합니다.
  12. 규칙 우선 순위 설정의 경우 요청을 차단하는 관리형 규칙 그룹 아래로 규칙을 이동합니다. 그러면 AWS WAF가 다음 규칙 우선 순위 내에서 레이블을 사용하기 전에 규칙 그룹의 검사를 위한 관리형 규칙 레이블이 먼저 설정됩니다.
  13. 저장을 선택합니다.

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

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

파일이 업로드될 때 HAR(HTTP 아카이브) 파일을 가져옵니다. 그런 다음 WindowsShellCommands_BODY, GenericLFI_BODY 또는 SizeRestrictions_BODY 규칙을 검토하세요. 지침은 AWS Support 사례에 대해 브라우저에서 HAR 파일을 생성하려면 어떻게 해야 하나요?를 참조하세요.

WindowsShellCommands_BODY, GenericLFI_BODY 또는 SizeRestrictions_BODY대해 오탐을 허용하려면 먼저 해당 규칙을 Count 모드로 설정하세요. 지침은 규칙 그룹의 평가 결과를 카운트로 재정의를 참조하세요.

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

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 Web ACLs을 선택합니다.
  3. 리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
    참고: 웹 ACL이 Amazon CloudFront용으로 설정되어 있는 경우 글로벌을 선택합니다.
  4. 웹 ACL을 선택합니다. 그런 다음 웹 ACL 규칙 탭에서 규칙을 선택합니다.
  5. 규칙 추가를 선택한 다음 내 규칙 및 규칙 그룹 추가를 선택합니다.
  6. 이름규칙 이름을 입력한 다음 일반 규칙을 선택합니다.
  7. 요청의 경우 **모든 문과 일치(AND)**를 선택합니다.
  8. 다음 필드를 사용하여 문 1을 작성하세요.
    검사에서 레이블 포함을 선택합니다.
    일치 범위에 대해 레이블을 선택합니다.
    매치 키에는 오탐을 생성하는 규칙의 레이블을 입력합니다. 예를 들어, WindowsShellCommands_BODY 규칙이 오탐을 생성하는 경우 awswaf:managed:aws:windows-os:WindowsShellCommands_Body를 입력하세요.
  9. 다음 필드를 사용하여 문 2를 작성하세요.
    문 결과 부정 확인란을 선택합니다.
    검사에서 URI 경로를 선택합니다.
    일치 유형에서 문자열과 정확히 일치를 선택합니다.
    일치시킬 문자열에 요청이 이루어지는 URI 경로를 입력합니다.
  10. (선택 사항) 텍스트 변환에서 텍스트 변환 또는 없음을 선택합니다.
  11. 동작차단을 선택합니다.
  12. 규칙 추가를 선택합니다.
  13. 규칙 우선 순위 설정의 경우 요청을 차단한 관리형 규칙 아래로 규칙을 이동합니다.
  14. 저장을 선택합니다.

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

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

참고: 규칙은 웹 ACL의 목록 순서와 동일한 순서로 처리됩니다. 다음 권장 사항의 경우 필요에 따라 규칙 우선 순위를 재지정해야 합니다.
사용 사례에 가장 적합한 방법을 선택하세요.

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