특정 도메인을 차단하거나 허용하려면 네트워크 방화벽 규칙을 어떻게 구성해야 하나요?

8분 분량
0

AWS Network Firewall을 사용하여 Amazon Virtual Cloud(Amazon VPC)의 자원에서 나가는 웹 트래픽을 필터링하려고 합니다.

간단한 설명

네트워크 방화벽 정책 및 규칙 그룹은 기본 작업 순서 또는 엄격한 평가 순서로 되어 있는 규칙 평가 순서에 따라 정의됩니다. 기본 작업 순서로 구성된 방화벽 정책은 전달, 삭제, 거부, 알림의 순서로 규칙을 평가합니다. 기본 정책의 상태 저장 기본 작업은 전달입니다.

엄격한 평가 순서에 따라 규칙 그룹은 우선 순위가 가장 낮은 순위에서 가장 높은 순서로 평가됩니다. 그런 다음, 그룹 내의 규칙은 그것들이 구성된 순서대로 평가됩니다. 엄격한 순서 정책에 대한 상태 저장 기본 작업은 거부 설정을 구성하는 것과 같이 구성할 수 있습니다. 기본 규칙 그룹이 기본 작업 순서 정책과 연결되어 있다면, 엄격한 순서 규칙 그룹은 엄격한 평가 순서 정책과 연결되어 있습니다.

특정 도메인에 대한 액세스를 허용하거나 차단하도록 네트워크 방화벽을 구성할 수 있습니다. 이 작업은 다음 중 하나를 사용하여 기본 작업 순서 또는 엄격한 평가 순서를 사용하는 정책 또는 규칙에 대해 수행할 수 있습니다.

  • 상태 저장 도메인 목록 규칙 그룹
  • Suricata 호환 IPS 규칙

상태 저장 도메인 이름 검사는 HTTP와 HTTPS 프로토콜용으로 구성할 수 있습니다. HTTP의 경우, 요청은 암호화되지 않았고 네트워크 방화벽에서는 HTTP 호스트 헤더의 호스트 이름값을 볼 수 있습니다. HTTPS의 경우, 네트워크 방화벽은 TLS 핸드셰이크의 Server Name Indication(SNI) 확장을 사용하여 호스트 이름을 결정합니다. 그런 다음 방화벽은 호스트 이름(또는 도메인 이름)을 이미 구성된 HTTP 또는 TLS 규칙과 비교합니다.

도메인 허용 항목 목록을 사용하면 방화벽은 HTTP 또는 HTTPS 요청을 지정된 도메인에만 전달합니다. 다른 모든 도메인에 대한 요청은 삭제됩니다.

해결 방법

기본 작업 순서

기본 작업 순서를 사용한 정책의 경우, 특정 도메인에 대한 HTTP와 HTTPS 요청을 허용하도록 도메인 목록 규칙 그룹을 구성합니다.

1.    Amazon VPC 콘솔을 엽니다.

2.    방화벽을 생성합니다.

3.    탐색 창의네트워크 방화벽에서 방화벽 정책을 선택합니다.

4.    사용자가 편집하려는 기본 작업 순서 방화벽 정책을 선택합니다.

5.    상태 저장 규칙 그룹에서, 작업을 선택한 다음, 상태 저장 규칙 그룹 생성을 선택합니다.

6.    고유한 규칙 그룹 이름을 입력합니다.

7.    용량 예약의 경우, 목록에 포함될 예상 도메인 수를 입력합니다. 규칙 그룹을 생성한 후에는 이 값을 변경할 수 없습니다.

8.    상태 저장 규칙 그룹 옵션에서, 도메인 목록을 선택합니다.
참고: 상태 저장 규칙 순서는 정책에서 상속되므로 변경할 수 없습니다. 규칙 순서기본값으로 표시됩니다.

9.    도메인 목록에서 도메인 이름 소스에 사용자가 일치시키려는 도메인 이름을 입력합니다. 도메인은abc.example.com과 같이 정확히 일치하는 도메인으로 정의할 수 있습니다. 또한 .example.com과 같은 와일드카드로 정의할 수 있습니다.

10.    소스 IP 유형에서 소스 IP가 방화벽과 동일한 VPC에 있는 경우 기본값을 선택합니다. 소스 IP가 원격 VPC에 있는 경우 정의됨을 선택합니다. 정의됨을 선택하는 경우 소스 IP CIDR 범위에 방화벽이 검사할 소스 서브넷을 입력합니다.

11.    프로토콜에서 HTTP 및 HTTPS를 선택합니다.

12.    작업에서 허용을 선택합니다.

13.    생성 및 정책에 추가를 선택합니다.

HTTP와 HTTPS에 대한 Suricata 호환 IPS 규칙을 수동으로 정의하려면,규칙 그룹에 기본 작업 순서 Suricata 호환 IPS 규칙을 구성하세요.

1.    Amazon VPC 콘솔을 엽니다.

2.    방화벽을 생성합니다.

3.    탐색 창의네트워크 방화벽에서 방화벽 정책을 선택합니다.

4.    사용자가 편집하려는 기본 작업 순서 방화벽 정책을 선택합니다.

5.    상태 저장 규칙 그룹에서, 작업을 선택한 다음, 상태 저장 규칙 그룹 생성을 선택합니다.

6.    고유한 규칙 그룹 이름을 입력합니다.

7.    용량 예약의 경우, 목록에 포함될 예상 규칙 수를 입력합니다. 규칙 그룹을 생성한 후에는 이 값을 변경할 수 없습니다.

8.    상태 저장 규칙 그룹 옵션의 경우, Suricata 호환 IPS 규칙을 선택하세요.
참고: 상태 저장 규칙 순서는 정책에서 상속되므로 변경할 수 없습니다. 규칙 순서기본값으로 표시됩니다.

9.    (선택 사항) Suricata 서명에 사용할 사용자 지정 규칙 변수를 정의합니다.

10.    (선택 사항) Suricata 서명에 사용할 IP 세트 참조를 정의합니다.

11.    Suricata 호환 IPS 규칙에서 다음 규칙을 입력합니다. 사용자가 주소를 지정하려는 특정 도메인으로 도메인을 변경합니다.

pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)
drop http $HOME_NET any -> $EXTERNAL_NET any (http.header_names; content:"|0d 0a|"; startswith; msg:"not matching any HTTP allowlisted FQDNs"; flow:to_server, established; sid:5; rev:1;)
drop tls $HOME_NET any -> $EXTERNAL_NET any (msg:"not matching any TLS allowlisted FQDNs"; flow:to_server, established; sid:6; rev:1;)

12.    생성 및 정책에 추가를 선택합니다.
**참고:**설정된 흐름 키워드는 도메인 규칙에서 일반적으로 사용되지만, 흐름 외 패킷 교환 극단적 경우를 모두 설명하지는 않을 수 있습니다. 예제 규칙 목록을 사용하기 전에, 규칙을 테스트하여 예상대로 작동하는지 확인하세요.

엄격한 평가 순서

엄격한 평가 순서를 사용하는 정책의 경우, 도메인 목록 규칙 그룹을 구성하여 특정 도메인에 대한 HTTP와 HTTPS 요청을 허용하세요.

1.    Amazon VPC 콘솔을 엽니다.

2.    방화벽을 생성합니다.

3.    탐색 창의네트워크 방화벽에서 방화벽 정책을 선택합니다.

4.    사용자가 편집하려는 엄격한 평가 순서 방화벽 정책을 선택합니다.

5.    상태 저장 규칙 그룹에서, 작업을 선택한 다음, 상태 저장 규칙 그룹 생성을 선택합니다.

6.    고유한 규칙 그룹 이름을 입력합니다.

7.    용량 예약의 경우, 목록에 포함될 예상 도메인 수를 입력합니다. 규칙 그룹을 생성한 후에는 이 값을 변경할 수 없습니다.

8.    상태 저장 규칙 그룹 옵션에서, 도메인 목록을 선택합니다.
참고: 상태 저장 규칙 순서는 정책에서 상속되므로 변경할 수 없습니다. 규칙 순서엄격으로 표시됩니다.

9.    도메인 목록에서 도메인 이름 소스에 사용자가 일치시키려는 도메인 이름을 입력합니다. 도메인은abc.example.com과 같이 정확히 일치하는 도메인으로 정의할 수 있습니다. 또한 .example.com과 같은 와일드카드로 정의할 수 있습니다.

10.    소스 IP 유형에서 소스 IP가 방화벽과 동일한 VPC에 있는 경우 기본값을 선택합니다. 소스 IP가 원격 VPC에 있는 경우 정의됨을 선택합니다. 정의됨을 선택하는 경우 소스 IP CIDR 범위에 방화벽이 검사할 소스 서브넷을 입력합니다.

11.    프로토콜의 경우, HTTP 및 HTTPS를 선택합니다.

12.    작업에서 허용을 선택합니다.

13.    생성 및 정책에 추가를 선택합니다.

14.    탐색 창의네트워크 방화벽에서 방화벽 정책을 선택합니다.

15.이 규칙 그룹이 추가된 엄격한 순서 정책을 선택합니다.

16.    상태 저장 규칙 평가 순서 및 기본 작업의 경우, 편집을 선택합니다.

17.    기본 작업에서 삭제 설정됨을 선택합니다. 그런 다음 저장을 선택합니다.

HTTP와 HTTPS에 대한 Suricata 호환 IPS 규칙을 수동으로 정의하려면, 규칙 그룹에 엄격한 평가 순서의 Suricata 호환 IPS 규칙을 구성하세요.

1.    Amazon VPC 콘솔을 엽니다.

2.    방화벽을 생성합니다.

3.    탐색 창의네트워크 방화벽에서 방화벽 정책을 선택합니다.

4.    사용자가 편집하려는 엄격한 평가 순서 방화벽 정책을 선택합니다.

5.    상태 저장 규칙 그룹에서, 작업을 선택한 다음, 상태 저장 규칙 그룹 생성을 선택합니다.

6.    고유한 규칙 그룹 이름을 입력합니다.

7.    용량 예약의 경우, 목록에 포함될 예상 규칙 수를 입력합니다. 규칙 그룹을 생성한 후에는 이 값을 변경할 수 없습니다.

8.    상태 저장 규칙 그룹 옵션의 경우, Suricata 호환 IPS 규칙을 선택하세요.
참고: 상태 저장 규칙 순서는 정책에서 상속되므로 변경할 수 없습니다. 규칙 순서엄격으로 표시됩니다.

9.    (선택 사항) 사용자가 정의한 Suricata 서명에 사용할 사용자 지정 규칙 변수를 정의하세요.

10.    (선택 사항) 사용자가 정의한 Suricata 서명에 사용할 IP 세트 참조를 정의하세요.

11.    Suricata 호환 IPS 규칙에서 다음 규칙을 입력합니다. 사용자가 주소를 지정하려는 특정 도메인으로 도메인을 변경합니다.

pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)

12.    생성 및 정책에 추가를 선택합니다.

13.    탐색 창의네트워크 방화벽에서 방화벽 정책을 선택합니다.

14.이 규칙 그룹이 추가된 엄격한 순서 정책을 선택합니다.

15.    상태 저장 규칙 평가 순서 및 기본 작업의 경우, 편집을 선택합니다.

16.    기본 작업에서 삭제 설정됨을 선택합니다. 그런 다음 저장을 선택합니다.

**참고:**설정된 흐름 키워드는 도메인 규칙에서 일반적으로 사용되지만, 흐름 외 패킷 교환 극단적 경우를 모두 설명하지는 않을 수 있습니다. 예제 규칙 목록을 사용하기 전에, 규칙을 테스트하여 예상대로 작동하는지 확인하세요.

확인

사용자는 지정된 도메인에 테스트 명령을 실행하여 구성을 기반으로 도메인이 올바르게 처리되는지 확인할 수 있습니다.

다음 예에서는 도메인 https://example.com이 허용되어 있고 , 200 OK 응답이 클라이언트에 반환됩니다.

curl -v --silent https://example.com --stderr - | grep 200
< HTTP/2 200

다음 예에서는 HTTP 도메인 http://www.google.com이 차단되었습니다.

curl -v http://www.google.com
* Trying 172.253.115.99:80...
* Connected to www.google.com (http://www.google.com/) (172.253.115.99) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.com (http://www.google.com/)
> User-Agent: curl/7.79.1
> Accept: /

다음 예에서는 HTTPS 도메인 https://www.google.com이 차단되었습니다.

curl -v https://www.google.com
* Trying 172.253.115.147:443...
* Connected to www.google.com (http://www.google.com/) (172.253.115.147) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
* CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):

관련 정보

네트워크 방화벽의 방화벽 정책

상태 저장 규칙 그룹 생성

네트워크 방화벽의 상태 저장 규칙의 예

상태 저장 규칙 그룹의 평가 순서

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