- 최신
- 최다 투표
- 가장 많은 댓글
Rule action on request - Count 로 설정하면, AWSManagedRulesCommonRuleSet 룰셋에서 count로 적용 되어 있는 것들은 영향을 받지 않을까요?
답변 감사합니다. scope of inspection을 통한 패킷 제외보다 위의 과정을 추천하시는 이유가 있을까요?
안녕하세요. 위의 내용을 추천한다기 보다는, 질문하신 내용에 대한 답변만 드린 것이며 다른 조건은 고려되지 않았습니다. Web ACL이 AWS 리소스에 associate 되기에, Scope of inspection 을 별도로 지정하지 않으면 전체 URI에 대해서 WAF가 불필요한 부분까지 검증 룰셋을 타게 됩니다. 공격이 예상되는 범위가 한정적이거나, 특정 URI 패턴에 대해서만 검증이 필요하다면 scope 을 지정하시어 범위를 줄이시는 것이 비용 및 관리 절감에 도움이 됩니다.
답변 감사합니다. 참고해서 상황에 맞게 사용하겠습니다.
안녕하세요.
우선 AWS WAF Rule ACL 의 동작에 대해서 이해할 필요가 있습니다. ACL은 기본적으로 Allow 또는 Block 으로 동작하며, Rule 조건에 따라 Allow, Block, Count, CAPTCHA, Challenge 동작을 할 수 있도록 만들 수 있습니다. 먼저 트래픽을 특별히 차단하거나 하실 것이 아니므로, Default 는 Allow 로 두고 시작합니다.
Rule 에서 NoUserAgent_HEADER 및 CrossSiteScripting_BODY 를 사용하려면 AWSManagedRulesCommonRuleSet 을 사용해야 합니다. 해당 관리형 Ruleset 을 첫번째 우선순위에 추가합니다. 이후 각 조건별로 Rule group 을 정의하고 위 관리형 Ruleset 다음 우선순위로 추가합니다.
[Rule1] If a request matches all the statements (AND)
- Statement 1: Has a label / Match key: awswaf:managed:aws:core-rule-set:NoUserAgent_Header
- Statement 2: Has a label / Match key: awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body
- Statement 3: URI path / aaa.com/Order
- Action: Count (해당 조건이 발생되면 카운트를 하며 차단하지 않습니다 - 로깅에서 제외를 위해 필터를 구분하는 조건으로 사용하겠습니다)
[Rule2-1] If a request matches all the statements (AND)
- Statement 1: Has a label / Match key: awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body
- Statement 2: URI path / aaa.com/Order/Order.aspx
- Action: Count (해당 조건이 발생되면 카운트를 하며 차단하지 않습니다 - 로깅에서 제외를 위해 필터를 구분하는 조건으로 사용하겠습니다)
[Rule2-2] If a request matches all the statements (AND)
- Statement 1: Has a label / Match key: awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body
- Statement 2: URI path / aaa.com/Product/Product.aspx
- Action: Count (해당 조건이 발생되면 카운트를 하며 차단하지 않습니다 - 로깅에서 제외를 위해 필터를 구분하는 조건으로 사용하겠습니다)
[Rule3] If a request matches all the statements (AND)
- Statement 1: Has a label / Match key: awswaf:managed:aws:core-rule-set:NoUserAgent_Header
- Statement 2: URI path / aaa.com/api/v1/info
- Action: Count (해당 조건이 발생되면 카운트를 하며 차단하지 않습니다 - 로깅에서 제외를 위해 필터를 구분하는 조건으로 사용하겠습니다)
마지막으로 로깅 설정에서 Filter log 부분에서 Add filter 에서 다음과 같이 설정합니다.
- Match all of the filter conditions
- Rule action on request - Count
- Filter behavior - Drop from logs
Default logging behavior 는 keep in logs 로 설정합니다.
JSON document 는 각 rule 별로 정의되고, Console UI 에서 만들어 보신 뒤 Rule JSON editor 에서 살펴보시면 이해가 되실 것입니다.
관련 콘텐츠
- 질문됨 3달 전
- 질문됨 2달 전
- AWS 공식업데이트됨 4달 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 2년 전
안녕하세요. 문의하신 내용 중에서는 매니지드 룰셋에서 Action override 조건이 어떤 지 말씀이 없으셨기에 없는 것을 가정하고 count 조건으로 간단히 설정하였습니다. 만약 count 를 다른 조건에서도 사용한다면 각 Rule 의 Action 에서 Add label 에서 로그를 남기지 않을 레이블을 지정하시고, 그 조건으로 로그 조건에서 로그를 남기지 않도록 설정하시면 될 것 같습니다.
안녕하세요. 답변 감사합니다. 매니지드 룰셋에서 로깅 예외를 원하는 NoUserAgent_HEADER 및 CrossSiteScripting_BODY 룰과 다른 대다수의 룰도 COUNT로 사용 중이라면, 각 조건별로 정의된 Rule Group을 매니지드 룰셋 상단의 우선순위로 올려야 된다고 생각합니다. 맞을까요? 그리고 로깅은 아래처럼 설정하면 해당 예외처리 그룹의 조건들은 로깅이 되지 않고, 다른 경로의 NoUserAgent_HEADER 및 CrossSiteScripting_BODY는 매니지드 룰셋을 타게 되는 것이 맞을까요? WEB ACL > Logging and metrics > Logging > Filter Logs > Add filter > logging > Match at least one of the filter conditions, Request has a label, Drop from logs, Default = keep in logs
안녕하세요. 개별 룰에서 관리형 룰셋이 지정하는 레이블로 Statement 의 Match key 에서 설정하시려면, 관리형 룰셋이 제일 처음 우선순위가 되어 규칙 레이블이 정의되어야 합니다. 관리형 룰셋 상단에 개별 룰이 위치하면 개별 룰이 판단될 때는 레이블이 없기 때문에 해당 Statement 부분은 무시될 수 있습니다. 개별 룰에 대해서만 로깅을 필터하시려면, 위에 설명드린 대로 개별 룰셋 맨 마지막 Action 부에서 Count 아래쪽 Add label - optional 에서 별도로 구분할 수 있는 레이블을 지정하시고, 해당 레이블을 기준으로 Logging 설정에서 필터하시기 바랍니다.
답변 감사합니다. 탐지 URI PATH 기준을 aaa.com/Order이라고 할 때 관리형 룰셋이 상단에 있고, COUNT로 동작중인 NoUserAgent_HEADER, CrossSiteScripting_BODY 룰에 의해 각각 개별 탐지 또는 동시에 aaa.com/Order URI PATH가 탐지된 후에도 아래에 있는 개별 룰셋이 aaa.com/Order을 각각의 조건으로 COUNT로 탐지하는 동작중일 경우, webacl의 LOGGING에서 개별 룰셋의 레이블로 Drop from logs 설정이 되어 있다면 최종적으로 로깅되지 않는다는 말씀이 맞으실까요?
안녕하세요. Rule 의 Action을 어떻게 지정하느냐가 중요합니다. https://docs.aws.amazon.com/ko_kr/waf/latest/developerguide/web-acl-rule-actions.html