

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan Network Firewall untuk menangkap nama domain DNS dari Indikasi Nama Server untuk lalu lintas keluar
<a name="use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Ringkasan
<a name="use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic-summary"></a>

Pola ini menunjukkan cara menggunakan AWS Network Firewall untuk mengumpulkan nama domain DNS yang disediakan oleh Server Name Indication (SNI) di header HTTPS lalu lintas jaringan keluar Anda. Network Firewall adalah layanan terkelola yang memudahkan penerapan perlindungan jaringan penting untuk Amazon Virtual Private Cloud (Amazon VPC), termasuk kemampuan untuk mengamankan lalu lintas keluar dengan firewall yang memblokir paket yang gagal memenuhi persyaratan keamanan tertentu. Mengamankan lalu lintas keluar ke nama domain DNS tertentu disebut penyaringan jalan keluar, yang merupakan praktik pemantauan dan berpotensi membatasi aliran informasi keluar dari satu jaringan ke jaringan lainnya.

Setelah Anda menangkap data SNI yang melewati Network Firewall, Anda dapat menggunakan Amazon CloudWatch Logs dan AWS Lambda untuk mempublikasikan data ke topik Amazon Simple Notification Service (Amazon SNS) yang menghasilkan notifikasi email. Pemberitahuan email mencakup nama server dan informasi SNI terkait lainnya. Selain itu, Anda dapat menggunakan output dari pola ini untuk mengizinkan atau membatasi lalu lintas keluar berdasarkan nama domain di SNI dengan menggunakan aturan firewall. Untuk informasi selengkapnya, lihat [Bekerja dengan grup aturan stateful di AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/stateful-rule-groups-ips.html) dalam dokumentasi Network Firewall.

## Prasyarat dan batasan
<a name="use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif.
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)) versi 2, diinstal dan dikonfigurasi di Linux, macOS, atau Windows.
+ [Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/getting-started.html), diatur dan dikonfigurasi di Amazon VPC dan digunakan untuk memeriksa lalu lintas keluar. Anda dapat mengonfigurasi Network Firewall untuk menggunakan salah satu konfigurasi VPC berikut:
  + [Arsitektur zona tunggal sederhana dengan gateway internet](https://docs.aws.amazon.com/network-firewall/latest/developerguide/arch-single-zone-igw.html)
  + [Arsitektur multi zona dengan gateway internet](https://docs.aws.amazon.com/network-firewall/latest/developerguide/arch-two-zone-igw.html)
  + [Arsitektur dengan gateway internet dan gateway NAT](https://docs.aws.amazon.com/network-firewall/latest/developerguide/arch-igw-ngw.html)

## Arsitektur
<a name="use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic-architecture"></a>

Diagram berikut menunjukkan cara menggunakan Network Firewall untuk mengumpulkan data SNI dari lalu lintas jaringan keluar, dan kemudian mempublikasikan data tersebut ke topik SNS dengan menggunakan Log CloudWatch dan Lambda.

![\[Alur kerja antara Network Firewall, CloudWatch Log, Lambda, dan Amazon SNS.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/9eb1e9e3-f459-4ea3-8e6d-60fec6b7ea98/images/1094b5f6-33e3-42bc-8fb8-7409b5b826b0.png)


Diagram menunjukkan alur kerja berikut:

1. Network Firewall mengumpulkan nama domain dari data SNI di header HTTPS lalu lintas jaringan keluar Anda.

1. CloudWatch Log memonitor data SNI dan memanggil fungsi Lambda setiap kali lalu lintas jaringan keluar melewati Network Firewall.

1. Fungsi Lambda membaca data SNI yang diambil oleh CloudWatch Log dan kemudian menerbitkan data tersebut ke topik SNS.

1. Topik SNS mengirimi Anda notifikasi email yang menyertakan data SNI.

**Otomatisasi dan skala**
+ Anda dapat menggunakan [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) untuk membuat pola ini dengan menggunakan [infrastruktur sebagai kode](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html).

**Tumpukan teknologi**
+  CloudWatch Log Amazon
+ Amazon SNS
+ Amazon VPC
+ AWS Lambda 
+ AWS Network Firewall

## Alat
<a name="use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic-tools"></a>

**Layanan AWS**
+ [ CloudWatch Log Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) — Anda dapat menggunakan Amazon CloudWatch Logs untuk memantau, menyimpan, dan mengakses file log Anda dari instans Amazon Elastic Compute Cloud (Amazon EC2) CloudTrail, AWS, Amazon Route 53, dan sumber lainnya.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon Simple Notification Service (Amazon SNS) adalah layanan terkelola yang menyediakan pengiriman pesan dari penerbit ke pelanggan (juga dikenal sebagai produsen dan konsumen).
+ [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) — Amazon Virtual Private Cloud (Amazon VPC) menyediakan bagian AWS Cloud yang terisolasi secara logis tempat Anda dapat meluncurkan sumber daya AWS di jaringan virtual yang telah Anda tentukan. Jaringan virtual ini sangat mirip dengan jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaatnya yaitu menggunakan infrastruktur AWS yang dapat diskalakan.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — AWS Lambda adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server.
+ [AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html) — AWS Network Firewall adalah layanan terkelola yang memudahkan penerapan perlindungan jaringan penting untuk semua Amazon Anda. VPCs

## Epik
<a name="use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic-epics"></a>

### Buat grup CloudWatch log untuk Network Firewall
<a name="create-a-cloudwatch-log-group-for-network-firewall"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat grup CloudWatch log. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html)Untuk informasi selengkapnya, lihat [Bekerja dengan grup log dan aliran log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) dalam CloudWatch dokumentasi. | Administrator awan | 

### Buat topik dan langganan SNS
<a name="create-an-sns-topic-and-subscription"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Membuat sebuah topik SNS. | Untuk membuat topik SNS, ikuti petunjuk dalam dokumentasi [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html#create-topic-aws-console). | Administrator awan | 
| Berlangganan titik akhir ke topik SNS. | Untuk berlangganan alamat email sebagai titik akhir ke topik SNS yang Anda buat, ikuti petunjuk dalam dokumentasi [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html). Untuk **Protokol**, pilih [Email/Email-JSON](https://docs.aws.amazon.com/sns/latest/dg/sns-email-notifications.html). Anda juga dapat memilih titik akhir yang berbeda berdasarkan kebutuhan Anda. | Administrator awan | 

### Mengatur login di Network Firewall
<a name="set-up-logging-in-network-firewall"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Aktifkan pencatatan firewall. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html)Untuk informasi selengkapnya tentang menggunakan CloudWatch Log sebagai tujuan log untuk Network Firewall, lihat [ CloudWatch Log Amazon](https://docs.aws.amazon.com/network-firewall/latest/developerguide/logging-cw-logs.html) dalam dokumentasi Network Firewall.  | Administrator awan | 

### Siapkan aturan stateful di Network Firewall
<a name="set-up-a-stateful-rule-in-network-firewall"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat aturan stateful. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html) | Administrator awan | 
| Kaitkan aturan stateful ke Network Firewall. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html) | Administrator awan | 

### Buat fungsi Lambda untuk membaca log
<a name="create-a-lambda-function-to-read-the-logs"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat kode untuk fungsi Lambda. | Dalam lingkungan pengembangan terintegrasi (IDE) yang dapat membaca peristiwa CloudWatch Log dari Network Firewall untuk lalu lintas keluar, tempelkan kode Python 3 berikut dan `<SNS-topic-ARN>` ganti dengan nilai Anda:<pre>import json<br />import gzip<br />import base64<br />import boto3<br />sns_client = boto3.client('sns')<br />def lambda_handler(event, context):<br />    decoded_event = json.loads(gzip.decompress(base64.b64decode(event['awslogs']['data'])))<br />    body = '''<br />    {filtermatch}<br />    '''.format(<br />        loggroup=decoded_event['logGroup'],<br />        logstream=decoded_event['logStream'],<br />        filtermatch=decoded_event['logEvents'][0]['message'],<br />    )<br />    print(body)<br />    filterMatch = json.loads(body)<br />    data = []<br />    if 'http' in filterMatch['event']:<br />        data.append(filterMatch['event']['http']['hostname'])<br />    elif 'tls' in filterMatch['event']:<br />        data.append(filterMatch['event']['tls']['sni'])<br />    result = 'Domain accessed ' + 1*' ' + (data[0]) + 1*' ' 'via AWS Network Firewall ' + 1*' '  + (filterMatch['firewall_name'])<br />    print(result)<br />    message = {'ServerName': result}<br />    send_to_sns = sns_client.publish(<br />        TargetArn=<SNS-topic-ARN>,          #Replace with the SNS topic ARN<br />        Message=json.dumps({'default': json.dumps(message),<br />                        'sms': json.dumps(message),<br />                        'email': json.dumps(message)}),<br />        Subject='Server Name passed through the Network Firewall',<br />        MessageStructure='json'<br />    )</pre>Contoh kode ini mem-parsing konten CloudWatch Log dan menangkap nama server yang disediakan oleh SNI di header HTTPS. | Pengembang aplikasi | 
| Buat fungsi Lambda. | ****Untuk membuat fungsi Lambda, ikuti instruksi dalam dokumentasi [Lambda dan](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function) pilih Python 3.9 untuk Runtime.**** | Administrator awan | 
| Tambahkan kode ke fungsi Lambda. | [Untuk menambahkan kode Python Anda ke fungsi Lambda yang Anda buat sebelumnya, ikuti petunjuk dalam dokumentasi Lambda.](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html#configuration-function-update) | Administrator awan | 
| Tambahkan CloudWatch Log sebagai pemicu ke fungsi Lambda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html)Untuk informasi selengkapnya, lihat [Menggunakan Lambda dengan CloudWatch Log di dokumentasi](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchlogs.html) Lambda. | Administrator awan | 
| Tambahkan izin publikasi SNS. | Tambahkan izin **SNS:Publish** ke peran eksekusi Lambda, sehingga Lambda dapat melakukan panggilan API untuk mempublikasikan pesan ke SNS.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html)<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "AllowSNSPublish",<br />            "Effect": "Allow",<br />            "Action": [<br />                "sns:GetTopicAttributes",<br />                "sns:Subscribe",<br />                "sns:Unsubscribe",<br />                "sns:Publish"<br />            ],<br />            "Resource": "*"<br />        }<br />    ]<br />}</pre> | Administrator awan | 

### Uji fungsionalitas notifikasi SNS Anda
<a name="test-the-functionality-of-your-sns-notification"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kirim lalu lintas melalui Network Firewall. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html)<pre>{<br />    "Type": "Notification",<br />    "MessageId": "<messageID>",<br />    "TopicArn": "arn:aws:sns:us-west-2:123456789:testSNSTopic",<br />    "Subject": "Server Name passed through the Network Firewall",<br />    "Message": "{\"ServerName\": \"Domain 'aws.amazon.com' accessed via AWS Network Firewall 'AWS-Network-Firewall-Multi-AZ-firewall\"}",<br />    "Timestamp": "2022-03-22T04:10:04.217Z",<br />    "SignatureVersion": "1",<br />    "Signature": "<Signature>",<br />    "SigningCertURL": "<SigningCertUrl>",<br />    "UnsubscribeURL": "<UnsubscribeURL>"<br />}</pre>Kemudian, periksa log peringatan Network Firewall di Amazon CloudWatch dengan mengikuti instruksi dalam [ CloudWatch dokumentasi Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SearchDataFilterPattern.html). Log peringatan menunjukkan output berikut:<pre>{<br />    "firewall_name": "AWS-Network-Firewall-Multi-AZ-firewall",<br />    "availability_zone": "us-east-2b",<br />    "event_timestamp": "<event timestamp>",<br />    "event": {<br />        "timestamp": "2021-03-22T04:10:04.214222+0000",<br />        "flow_id": <flow ID>,<br />        "event_type": "alert",<br />        "src_ip": "10.1.3.76",<br />        "src_port": 22761,<br />        "dest_ip": "99.86.59.73",<br />        "dest_port": 443,<br />        "proto": "TCP",<br />        "alert": {<br />            "action": "allowed",<br />            "signature_id": 2,<br />            "rev": 0,<br />            "signature": "",<br />            "category": "",<br />            "severity": 3<br />        },<br />        "tls": {<br />            "subject": "CN=aws.amazon.com",<br />            "issuerdn": "C=US, O=Amazon, OU=Server CA 1B, CN=Amazon",<br />            "serial": "<serial number>",<br />            "fingerprint": "<fingerprint ID>",<br />            "sni": "aws.amazon.com",<br />            "version": "TLS 1.2",<br />            "notbefore": "2020-09-30T00:00:00",<br />            "notafter": "2021-09-23T12:00:00",<br />            "ja3": {},<br />            "ja3s": {}<br />        },<br />        "app_proto": "tls"<br />    }<br />}</pre> | Insinyur uji | 