기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Network Firewall을 사용하여 아웃바운드 트래픽의 서버 이름 표시 (SNI) 에서 DNS 도메인 이름을 캡처합니다.
작성자: 키란쿠마르 찬드라셰카르 () AWS
환경: PoC 또는 파일럿 | 기술: 보안, ID, 규정 준수, 네트워킹, 웹 및 모바일 앱 | 워크로드: 기타 모든 워크로드 |
AWS서비스: AWS Lambda, 네트워크 AWS 방화벽, 아마존, 아마존 로그 VPC CloudWatch |
요약
이 패턴은 Amazon Web Services (AWS) Network Firewall을 사용하여 아웃바운드 네트워크 트래픽의 HTTPS 헤더에 있는 서버 이름 표시 (SNI) 에서 제공하는 DNS 도메인 이름을 수집하는 방법을 보여줍니다. Network Firewall은 Amazon Virtual Private Cloud (AmazonVPC) 에 대한 중요한 네트워크 보호 기능을 쉽게 배포할 수 있게 해주는 관리형 서비스입니다. 여기에는 특정 보안 요구 사항을 충족하지 못하는 패킷을 차단하는 방화벽으로 아웃바운드 트래픽을 보호하는 기능이 포함됩니다. 특정 DNS 도메인 이름으로의 아웃바운드 트래픽을 보호하는 것을 이그레스 필터링이라고 하며, 이는 한 네트워크에서 다른 네트워크로의 아웃바운드 정보 흐름을 모니터링하고 잠재적으로 제한하는 방법입니다.
Network Firewall을 통과하는 SNI 데이터를 캡처한 후에는 Amazon CloudWatch Logs 및 AWS Lambda를 사용하여 이메일 알림을 생성하는 Amazon 단순 알림 서비스 (SNSAmazon) 주제에 데이터를 게시할 수 있습니다. 이메일 알림에는 서버 이름 및 기타 관련 SNI 정보가 포함됩니다. 또한 이 패턴의 출력을 사용하여 방화벽 규칙을 사용하여 도메인 이름별로 아웃바운드 트래픽을 허용하거나 제한할 수 있습니다. SNI 자세한 내용은 Network Firewall 설명서의 AWSNetwork Firewall의 상태 저장 규칙 그룹 사용을 참조하십시오.
사전 조건 및 제한 사항
사전 조건
활성 계정 AWS
AWS명령줄 인터페이스 (AWSCLI) 버전 2, 리눅스, macOS 또는 윈도우에 설치 및 구성
Network Firewall (Amazon에서 설치 VPC 및 구성되었으며 아웃바운드 트래픽 검사에 사용 중)
참고: Network Firewall은 다음 VPC 구성 중 하나를 사용할 수 있습니다.
아키텍처
다음 다이어그램은 Network Firewall을 사용하여 아웃바운드 네트워크 트래픽에서 SNI 데이터를 수집한 다음 CloudWatch Logs and Lambda를 사용하여 해당 데이터를 SNS 주제에 게시하는 방법을 보여줍니다.
이 다이어그램은 다음 워크플로를 보여줍니다.
Network Firewall은 아웃바운드 네트워크 트래픽의 HTTPS 헤더에 있는 SNI 데이터에서 도메인 이름을 수집합니다.
CloudWatch 로그는 아웃바운드 네트워크 트래픽이 Network Firewall을 통과할 때마다 SNI 데이터를 모니터링하고 Lambda 함수를 호출합니다.
Lambda 함수는 SNI Logs에서 CloudWatch 캡처한 데이터를 읽은 다음 해당 데이터를 주제에 게시합니다. SNS
SNS주제는 데이터가 포함된 이메일 알림을 보냅니다. SNI
자동화 및 규모 조정
인프라를 코드로 사용하여 이 패턴을 만드는 AWS CloudFormation데 사용할 수 있습니다.
기술 스택
아마존 CloudWatch 로그
아마존 SNS
아마존 VPC
AWS람다
AWS Network Firewall
도구
AWS서비스
Amazon CloudWatch Logs — Amazon CloudWatch Logs를 사용하여 Amazon Elastic Compute Cloud (AmazonEC2) 인스턴스, AWS CloudTrail Amazon Route 53 및 기타 소스에서 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다.
Amazon SNS — Amazon 단순 알림 서비스 (AmazonSNS) 는 게시자로부터 구독자 (생산자 및 소비자라고도 함) 에게 메시지를 전달하는 관리형 서비스입니다.
Amazon VPC — Amazon Virtual Private Cloud (AmazonVPC) 는 논리적으로 격리된 AWS 클라우드 섹션을 프로비저닝하여 사용자가 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 확장 가능한 인프라를 사용할 수 있다는 점을 제외하면 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사합니다. AWS
AWSLambda AWS — Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 컴퓨팅 서비스입니다.
AWSNetwork Firewall — AWS Network Firewall은 모든 VPCs Amazon에 필수적인 네트워크 보호 기능을 쉽게 배포할 수 있게 해주는 관리형 서비스입니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
CloudWatch 로그 그룹 생성. |
자세한 내용은 CloudWatch 설명서의 로그 그룹 및 로그 스트림 작업을 참조하십시오. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
SNS 주제를 만듭니다. | SNS주제를 생성하려면 Amazon SNS 설명서의 지침을 따르십시오. | 클라우드 관리자 |
SNS주제에 대한 엔드포인트를 구독하십시오. | 생성한 SNS 주제의 엔드포인트로 이메일 주소를 구독하려면 Amazon SNS 설명서의 지침을 따르십시오. 프로토콜에서 이메일/이메일-을 선택합니다. JSON 참고: 요구 사항에 따라 다른 엔드포인트를 선택할 수도 있습니다. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
방화벽 로깅을 활성화합니다. |
Network Firewall의 CloudWatch 로그 대상으로 Logs를 사용하는 방법에 대한 자세한 내용은 Network Firewall 설명서의 Amazon CloudWatch Logs를 참조하십시오. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
상태 저장 규칙을 생성합니다. |
| 클라우드 관리자 |
상태 저장 규칙을 Network Firewall에 연결합니다. |
| 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Lambda 함수의 코드를 생성합니다. | 아웃바운드 트래픽에 대해 Network Firewall에서 CloudWatch Logs 이벤트를 읽을 수 있는 통합 개발 환경 (IDE) 에서 다음 Python 3 코드를 붙여넣고 원하는 값으로
이 코드 샘플은 CloudWatch 로그 콘텐츠를 파싱하고 헤더에 SNI 에서 제공하는 서버 이름을 캡처합니다. HTTPS | 앱 개발자 |
Lambda 함수를 생성합니다. | Lambda 함수를 생성하려면 Lambda 설명서의 지침을 따르고 런타임을 위한 Python 3.9를 선택하십시오. | 클라우드 관리자 |
Lambda 함수에 코드를 추가합니다. | 이전에 생성한 Lambda 함수에 Python 코드를 추가하려면 Lambda 설명서의 지침을 따르십시오. | 클라우드 관리자 |
Lambda 함수에 CloudWatch 로그를 트리거로 추가합니다. |
자세한 내용은 Lambda 설명서의 CloudWatch 로그와 함께 Lambda 사용을 참조하십시오. | 클라우드 관리자 |
게시 권한을 추가하십시오. SNS | Lambda가 메시지를 게시하기 위한 호출을 할 수 있도록 Lambda 실행 역할에 SNS:publish 권한을 추가합니다. API SNS
| 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Network Firewall을 통해 트래픽을 전송합니다. |
그런 다음 Amazon CloudWatch 설명서의 지침에 CloudWatch 따라 Amazon의 Network Firewall 알림 로그를 확인하십시오. 알림 로그는 다음 오류를 보여줍니다.
| 테스트 엔지니어 |