Kirim peringatan dari AWS Network Firewall ke saluran Slack - AWS Prescriptive Guidance

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

Kirim peringatan dari AWS Network Firewall ke saluran Slack

Venki Srivatsav dan Aromal Raj Jayarajan, Amazon Web Services

Ringkasan

Pola ini menjelaskan cara menerapkan firewall dengan menggunakan Amazon Web Services (AWS) Network Firewall dengan model penyebaran terdistribusi dan cara menyebarkan peringatan yang dihasilkan oleh AWS Network Firewall ke saluran Slack yang dapat dikonfigurasi. 

Standar kepatuhan seperti Payment Card Industry Data Security Standard (PCI DSS) mengharuskan Anda menginstal dan memelihara firewall untuk melindungi data pelanggan. Di AWS Cloud, virtual private cloud (VPC) dianggap sama dengan jaringan fisik dalam konteks persyaratan kepatuhan ini. Anda dapat menggunakan Network Firewall untuk memantau lalu lintas jaringan antara VPCs dan untuk melindungi beban kerja Anda yang berjalan di VPCs diatur oleh standar kepatuhan. Network Firewall memblokir akses atau menghasilkan peringatan ketika mendeteksi akses tidak sah dari orang lain VPCs di akun yang sama. Namun, Network Firewall mendukung sejumlah tujuan untuk mengirimkan peringatan. Tujuan ini mencakup bucket Amazon Simple Storage Service (Amazon S3), grup log Amazon, dan CloudWatch aliran pengiriman Amazon Data Firehose. Setiap tindakan lebih lanjut pada notifikasi ini memerlukan analisis offline dengan menggunakan Amazon Athena atau Amazon Kinesis. 

Pola ini menyediakan metode untuk menyebarkan peringatan yang dihasilkan oleh Network Firewall ke saluran Slack yang dapat dikonfigurasi untuk tindakan lebih lanjut dalam waktu dekat. Anda juga dapat memperluas fungsionalitas ke mekanisme peringatan lainnya seperti PagerDuty, Jira, dan email. (Kustomisasi tersebut berada di luar cakupan pola ini.) 

Prasyarat dan batasan

Prasyarat

  • Saluran Slack (lihat Memulai di pusat bantuan Slack)

  • Hak istimewa yang diperlukan untuk mengirim pesan ke saluran

  • URL titik akhir Slack dengan token API (pilih aplikasi Anda dan pilih webhook masuk untuk melihat URL-nya; untuk informasi selengkapnya, lihat Membuat Webhook Masuk dalam dokumentasi Slack API) 

  • Instans pengujian Amazon Elastic Compute Cloud (Amazon EC2) di subnet beban kerja

  • Aturan uji di Network Firewall

  • Lalu lintas aktual atau simulasi untuk memicu aturan pengujian

  • Bucket S3 untuk menyimpan file sumber yang akan digunakan

Batasan

  • Saat ini solusi ini hanya mendukung rentang Classless Inter-Domain Routing (CIDR) tunggal sebagai filter untuk sumber dan tujuan. IPs

Arsitektur

Tumpukan teknologi target

  • Satu VPC

  • Empat subnet (dua untuk firewall dan dua untuk beban kerja) 

  • gateway internet

  • Empat tabel rute dengan aturan 

  • Bucket S3 digunakan sebagai tujuan peringatan, dikonfigurasi dengan kebijakan bucket dan pengaturan acara untuk menjalankan fungsi Lambda

  • Fungsi Lambda dengan peran eksekusi, untuk mengirim pemberitahuan Slack

  • Rahasia AWS Secrets Manager untuk menyimpan URL Slack

  • Firewall jaringan dengan konfigurasi peringatan

  • Saluran kendur

Semua komponen kecuali untuk saluran Slack disediakan oleh CloudFormation template dan fungsi Lambda yang disediakan dengan pola ini (lihat bagian Kode).

Arsitektur target

Pola ini mengatur firewall jaringan terdesentralisasi dengan integrasi Slack. Arsitektur ini terdiri dari VPC dengan dua Availability Zones. VPC mencakup dua subnet yang dilindungi dan dua subnet firewall dengan titik akhir firewall jaringan. Semua lalu lintas yang masuk dan keluar dari subnet yang dilindungi dapat dipantau dengan membuat kebijakan dan aturan firewall. Firewall jaringan dikonfigurasi untuk menempatkan semua peringatan dalam ember S3. Bucket S3 ini dikonfigurasi untuk memanggil fungsi Lambda saat menerima put acara. Fungsi Lambda mengambil URL Slack yang dikonfigurasi dari Secrets Manager dan mengirimkan pesan notifikasi ke ruang kerja Slack.

Arsitektur target untuk firewall jaringan terdesentralisasi dengan integrasi Slack.

Untuk informasi selengkapnya tentang arsitektur ini, lihat postingan blog AWS Model penerapan untuk AWS Network Firewall.

Alat

Layanan AWS

  • AWS Network Firewall adalah firewall jaringan yang stateful, dikelola, dan layanan deteksi dan pencegahan intrusi untuk AWS Cloud VPCs . Anda dapat menggunakan Network Firewall untuk memfilter lalu lintas di perimeter VPC Anda dan melindungi beban kerja Anda di AWS.

  • AWS Secrets Manager adalah layanan untuk penyimpanan dan pengambilan kredensi. Dengan menggunakan Secrets Manager, Anda dapat mengganti kredensi hardcode dalam kode Anda, termasuk kata sandi, dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram. Pola ini menggunakan Secrets Manager untuk menyimpan URL Slack.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek. Anda dapat menggunakan Amazon S3 untuk menyimpan dan mengambil data sebanyak apa pun kapan pun, dari mana pun di web. Pola ini menggunakan Amazon S3 untuk menyimpan CloudFormation template dan skrip Python untuk fungsi Lambda. Ini juga menggunakan bucket S3 sebagai tujuan peringatan firewall jaringan.

  • AWS CloudFormation membantu Anda memodelkan dan menyiapkan sumber daya AWS Anda, menyediakannya dengan cepat dan konsisten, serta mengelolanya sepanjang siklus hidupnya. Anda dapat menggunakan template untuk mendeskripsikan sumber daya Anda dan dependensinya, dan meluncurkan dan mengonfigurasinya bersama-sama sebagai tumpukan, alih-alih mengelola sumber daya secara individual. Pola ini menggunakan AWS CloudFormation untuk secara otomatis menerapkan arsitektur terdistribusi untuk Firewall Manager.

Kode

Kode untuk pola ini tersedia di GitHub, di repositori Network Firewall Slack Integration. Di src  folder repositori, Anda akan menemukan:

  • Satu set CloudFormation file dalam format YAMAL. Anda menggunakan template ini untuk menyediakan komponen untuk pola ini.

  • File sumber Python (slack-lambda.py) untuk membuat fungsi Lambda.

  • Paket penyebaran arsip.zip (slack-lambda.py.zip) untuk mengunggah kode fungsi Lambda Anda.

Untuk menggunakan file-file ini, ikuti instruksi di bagian selanjutnya.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat ember S3.

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Pilih atau buat bucket S3 untuk meng-host kode. Nama bucket S3 unik secara global, dan namespace dibagikan oleh semua akun AWS. Nama bucket S3 tidak dapat menyertakan garis miring terdepan. Kami menyarankan Anda menggunakan awalan untuk mengatur kode untuk pola ini.

Untuk informasi selengkapnya, lihat Membuat bucket di dokumentasi Amazon S3. 

Pengembang aplikasi, Pemilik aplikasi, administrator Cloud

Unggah CloudFormation template dan kode Lambda.

  1. Unduh file-file berikut dari GitHub repositori untuk pola ini:

    • base.yml

    • igw-ingress-route.yml

    • slack-lambda.py

    • slackLambda.yml

    • decentralized-deployment.yml

    • protected-subnet-route.yml

    • slack-lambda.py.zip

  2. Unggah file ke bucket S3 yang Anda buat. 

Pengembang aplikasi, Pemilik aplikasi, administrator Cloud
TugasDeskripsiKeterampilan yang dibutuhkan

Luncurkan CloudFormation template.

Buka CloudFormation konsol AWS di Wilayah AWS yang sama dengan bucket S3 Anda dan terapkan template. base.yml Template ini membuat sumber daya AWS yang diperlukan dan fungsi Lambda untuk peringatan yang akan dikirimkan ke saluran Slack.

Untuk informasi selengkapnya tentang penerapan CloudFormation templat, lihat Membuat tumpukan di CloudFormation konsol AWS dalam CloudFormation dokumentasi.

Pengembang aplikasi, Pemilik aplikasi, administrator Cloud

Lengkapi parameter dalam template.

Tentukan nama tumpukan dan konfigurasikan nilai parameter. Untuk daftar parameter, deskripsinya, dan nilai default, lihat CloudFormation parameter di bagian Informasi tambahan.

Pengembang aplikasi, Pemilik aplikasi, administrator Cloud

Buat tumpukan.

  1. Tinjau detail tumpukan dan perbarui nilai berdasarkan persyaratan lingkungan Anda.

  2. Pilih Buat tumpukan untuk menyebarkan template.

Pengembang aplikasi, Pemilik aplikasi, administrator Cloud
TugasDeskripsiKeterampilan yang dibutuhkan

Uji penyebaran.

Gunakan CloudFormation konsol AWS atau AWS Command Line Interface (AWS CLI) Command Line Interface (AWS CLI) untuk memverifikasi bahwa sumber daya yang tercantum di bagian tumpukan teknologi Target telah dibuat.  

Jika CloudFormation template gagal diterapkan dengan sukses, periksa nilai yang Anda berikan untuk pAvailabilityZone2  parameter pAvailabilityZone1  dan. Ini harus sesuai untuk Wilayah AWS tempat Anda menerapkan solusinya. Untuk daftar Availability Zone untuk setiap Wilayah, lihat Wilayah dan Zona di EC2 dokumentasi Amazon. 

Pengembang aplikasi, Pemilik aplikasi, administrator Cloud

Fungsionalitas uji.

1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

2. Buat EC2 instance di salah satu subnet yang dilindungi. Pilih Amazon Linux 2 AMI (HVM) untuk digunakan sebagai server HTTPS. Untuk petunjuknya, lihat Meluncurkan instance di EC2 dokumentasi Amazon.

catatan

Amazon Linux 2 mendekati akhir dukungan. Untuk informasi selengkapnya, lihat Amazon Linux 2 FAQs.

3. Gunakan data pengguna berikut untuk menginstal server web pada EC2 instance:

#!/bin/bash yum install httpd -y systemctl start httpd systemctl stop firewalld cd /var/www/html echo "Hello!! this is a NFW alert test page, 200 OK" > index.html

4. Buat aturan firewall jaringan berikut:

Aturan tanpa kewarganegaraan:

Source: 0.0.0.0/0 Destination 10.0.3.65/32 (private IP of the EC2 instance) Action: Forward

Aturan stateful:

Protocol: HTTP Source ip/port: Any / Any Destination ip/port: Any /Any

5. Dapatkan IP publik dari server web yang Anda buat di langkah 3.

6. Akses IP publik di browser. Anda akan melihat pesan berikut di browser:

Hello!! this is a NFW alert test page, 200 OK

Anda juga akan mendapatkan notifikasi di saluran Slack. Pemberitahuan mungkin tertunda, tergantung pada ukuran pesan. Untuk tujuan pengujian, pertimbangkan untuk menyediakan filter CIDR yang tidak terlalu sempit (misalnya, nilai CIDR dengan/32 akan dianggap terlalu sempit, dan /8 akan terlalu luas). Untuk informasi selengkapnya, lihat bagian Memfilter perilaku di Informasi tambahan.

Pengembang aplikasi, Pemilik aplikasi, administrator Cloud

Sumber daya terkait

Informasi tambahan

CloudFormation parameter

Parameter

Deskripsi

Nilai default atau sampel

pVpcName

Nama VPC yang akan dibuat.

Inspeksi

pVpcCidr

Rentang CIDR untuk VPC untuk dibuat.

10.0.0.0/16

pVpcInstanceTenancy

Bagaimana EC2 instance didistribusikan di seluruh perangkat keras fisik. Pilihannya adalah default  (sewa bersama) atau dedicated  (sewa tunggal).

default

pAvailabilityZone1

Availability Zone pertama untuk infrastruktur. 

us-timur-2a 

pAvailabilityZone2

Availability Zone kedua untuk infrastruktur.

us-timur-2b

pNetworkFirewallSubnet1Cidr

Rentang CIDR untuk subnet firewall pertama (minimum /28).

10.0.1.0/24

pNetworkFirewallSubnet2Cidr

Rentang CIDR untuk subnet firewall kedua (minimum /28).

10.0.2.0/24

pProtectedSubnet1Cidr

Rentang CIDR untuk subnet pertama yang dilindungi (beban kerja).

10.0.3.0/24

pProtectedSubnet2Cidr

Rentang CIDR untuk subnet kedua yang dilindungi (beban kerja).

10.0.4.0/24

pS3BucketName

Nama bucket S3 yang ada tempat Anda mengunggah kode sumber Lambda.

kita-w2- yourname-lambda-functions

pS3KeyPrefix

Awalan bucket S3 tempat Anda mengunggah kode sumber Lambda.

uji aod 

pAWSSecretName4Slack

Nama rahasia yang menyimpan URL Slack.

SlackEnpoint-Cfn

pSlackChannelName

Nama saluran Slack yang Anda buat.

pemberitahuan somename

pSlackUserName

Nama pengguna Slack.

Pengguna Slack

pSecretKey

Ini bisa menjadi kunci apa saja. Kami menyarankan Anda menggunakan default.

WebHooURL

pWebHookUrl

Nilai URL Slack.

https://hooks.slack.com/services/T??? 9T?? /A031885 JRM7 /9D4Y

pAlertS3Bucket

Nama bucket S3 yang akan digunakan sebagai tujuan peringatan firewall jaringan. Ember ini akan dibuat untuk Anda.

kita-w2- yourname-security-aod-alerts

pSecretTagName

Nama tag untuk rahasianya.

AppName

pSecretTagValue

Nilai tag untuk nama tag yang ditentukan.

LambdaSlackIntegration

pdestCidr

Filter untuk rentang CIDR tujuan. Untuk informasi selengkapnya, lihat bagian selanjutnya, Filter perilaku.

10.0.0.0/16

pdestCondition

Bendera untuk menunjukkan apakah akan mengecualikan atau menyertakan kecocokan tujuan. Untuk informasi lebih lanjut, lihat bagian selanjutnya. Nilai yang valid adalah include  dan exclude.

memasukkan

psrcCidr

Filter untuk rentang CIDR sumber untuk diperingatkan. Untuk informasi lebih lanjut, lihat bagian selanjutnya. 

118.2.0.0/16

psrcCondition

Bendera untuk mengecualikan atau menyertakan kecocokan sumber. Untuk informasi lebih lanjut, lihat bagian selanjutnya.

memasukkan

Perilaku filter

Jika Anda belum mengonfigurasi filter apa pun di AWS Lambda, semua peringatan yang dihasilkan akan dikirim ke saluran Slack Anda. Sumber dan tujuan peringatan IPs yang dihasilkan dicocokkan dengan rentang CIDR yang Anda konfigurasikan saat Anda menerapkan templat. CloudFormation Jika kecocokan ditemukan, kondisi diterapkan. Jika sumber atau tujuan berada dalam rentang CIDR yang dikonfigurasi dan setidaknya salah satunya dikonfigurasi dengan kondisiinclude, peringatan akan dihasilkan. Tabel berikut memberikan contoh nilai CIDR, kondisi, dan hasil.

CIDR yang dikonfigurasi

Peringatan IP

Dikonfigurasi

Pemberitahuan

Sumber

10.0.0.0/16

10.0.0.25

memasukkan

Ya

Destinasi

100.0.0.0/16

202.0.0.13

memasukkan

CIDR yang dikonfigurasi

Peringatan IP

Dikonfigurasi

Pemberitahuan

Sumber

10.0.0.0/16

10.0.0.25

mengecualikan

Tidak

Destinasi

100.0.0.0/16

202.0.0.13

memasukkan

CIDR yang dikonfigurasi

Peringatan IP

Dikonfigurasi

Pemberitahuan

Sumber

10.0.0.0/16

10.0.0.25

memasukkan

Ya

Destinasi

100.0.0.0/16

100.0.0.13

memasukkan

CIDR yang dikonfigurasi

Peringatan IP

Dikonfigurasi

Pemberitahuan

Sumber

10.0.0.0/16

90.0.0.25

memasukkan

Ya

Destinasi

Null

202.0.0.13

memasukkan

CIDR yang dikonfigurasi

Peringatan IP

Dikonfigurasi

Pemberitahuan

Sumber

10.0.0.0/16

90.0.0.25

memasukkan

Tidak

Destinasi

100.0.0.0/16

202.0.0.13

memasukkan