Membatasi akses berdasarkan alamat IP atau geolokasi dengan menggunakan AWS WAF - AWS Prescriptive Guidance

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

Membatasi akses berdasarkan alamat IP atau geolokasi dengan menggunakan AWS WAF

Louis Hourcade, Amazon Web Services

Ringkasan

AWS WAFadalah firewall aplikasi web yang membantu melindungi aplikasi web dan APIs terhadap eksploitasi web umum dan bot yang dapat memengaruhi ketersediaan, membahayakan keamanan, atau mengkonsumsi sumber daya yang berlebihan. Daftar kontrol akses web (web ACLs) AWS WAF memberi Anda kontrol atas bagaimana lalu lintas mencapai aplikasi Anda. Di ACL web, Anda menambahkan aturan atau grup aturan yang dirancang untuk mengizinkan lalu lintas yang sah, mengontrol lalu lintas bot, dan memblokir pola serangan umum. Untuk informasi selengkapnya, lihat Cara AWS WAF kerja.

Anda dapat mengaitkan jenis aturan berikut ke AWS WAF web Anda ACLs:

  • Grup aturan AWS terkelola — Tim dan AWS Marketplace penjual Aturan Terkelola menawarkan set aturan yang telah dikonfigurasi sebelumnya. Beberapa grup aturan terkelola dirancang untuk membantu melindungi jenis aplikasi web tertentu. Lainnya menawarkan perlindungan luas terhadap ancaman yang diketahui atau kerentanan umum.

  • Aturan kustom dan grup aturan khusus — Anda juga dapat membuat aturan dan grup aturan yang menyesuaikan akses ke aplikasi web Anda dan APIs. Misalnya, Anda dapat membatasi lalu lintas berdasarkan daftar alamat IP tertentu atau pada daftar negara.

Dengan menggunakan pola ini dan repositori kode terkait, Anda dapat menggunakan AWS Cloud Development Kit (AWS CDK)untuk menyebarkan AWS WAF web ACLs dengan aturan khusus. Aturan ini membatasi akses ke sumber daya aplikasi web berdasarkan alamat IP atau geolokasi pengguna akhir. Anda juga dapat melampirkan beberapa grup aturan terkelola secara opsional.

Prasyarat dan batasan

Prasyarat

Batasan

Alat

Layanan AWS

  • AWS Cloud Development Kit (AWS CDK)adalah kerangka pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan AWS Cloud infrastruktur dalam kode.

  • AWS WAFadalah firewall aplikasi web yang membantu Anda memantau permintaan HTTP dan HTTPS yang diteruskan ke sumber daya aplikasi web Anda yang dilindungi.

Repositori kode

Kode untuk pola ini tersedia di GitHub IP dan pembatasan geolokasi dengan AWS WAF repositori. Kode ini menyebarkan dua AWS WAF web ACLs. Yang pertama adalah ACL web regional yang ditujukan untuk sumber daya Amazon API Gateway. Yang kedua adalah ACL web global untuk CloudFront sumber daya Amazon. Kedua web ACLs berisi aturan kustom berikut:

  • IPMatchmemblokir permintaan dari alamat IP yang tidak diizinkan.

  • GeoMatchmemblokir permintaan dari negara yang tidak diizinkan.

Selama penerapan, Anda dapat secara opsional melampirkan semua grup aturan terkelola berikut ke web Anda: ACLs

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Masukkan perintah berikut untuk mengkloning pembatasan IP dan geolokasi dengan AWS WAF repositori ke workstation lokal Anda:

git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git
Git

Konfigurasikan aturan.

  1. Di repositori kloning, buka file app.py.

  2. Ubah nilai variabel berikut untuk menyesuaikan aturan:

    aws_acccount = "AWS_ACCOUNT" region = "AWS_REGION" ip_list = ["CIDR_RANGE_1", "CIDR_RANGE_2"] geo_list = ["COUNTRY_CODE_1", "COUNTRY_CODE_2"] aws_managed_rules = True

    Di mana:

    • aws_accountadalah ID target Akun AWS.

    • regionadalah target Wilayah AWS untuk ACL web untuk sumber daya API Gateway.

      catatan

      ACL web untuk CloudFront sumber daya bersifat global dan akan digunakan di Wilayah. us-east-1

    • ip_listadalah daftar rentang CIDR yang diizinkan akses.

    • geo_listadalah daftar negara yang diizinkan mengakses. Untuk nilai yang valid, lihat AWS WAF dokumentasi.

    • aws_managed_rulesmengontrol apakah grup aturan terkelola ditambahkan ke ACL web. Jika nilai iniTrue, mereka ditambahkan. Jika nilai iniFalse, mereka dikecualikan.

  3. Simpan dan tutup file app.py.

AWS Umum, Python
TugasDeskripsiKeterampilan yang dibutuhkan

Bootstrap AWS lingkungan Anda.

Jika belum selesai, Anda perlu bootstrap AWS lingkungan Anda sebelum Anda dapat menyebarkan AWS CDK aplikasi.

  1. Di AWS CDK CLI, masukkan perintah berikut untuk bootstrap Wilayah: us-east-1

    cdk bootstrap aws://<account-id>/us-east-1
  2. Jika Anda menerapkan ACL web untuk API Gateway di Wilayah selainus-east-1, masukkan perintah berikut untuk mem-bootstrap Wilayah target:

    cdk bootstrap aws://<account-id>/<region>
AWS Umum

Menyebarkan AWS CDK aplikasi.

  1. Masukkan perintah berikut untuk menyebarkan AWS CDK aplikasi:

    cdk deploy --all
  2. Tunggu hingga penerapan AWS CloudFormation tumpukan selesai.

AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

Konfirmasikan bahwa web ACLs berhasil digunakan.

  1. Masuk ke AWS Management Console, lalu buka AWS WAF konsol.

  2. Di panel navigasi, pilih Web ACLs.

  3. Dalam daftar Wilayah AWS, pilih Global (CloudFront).

  4. Verifikasi bahwa ACL CloudFront web baru telah digunakan, dan konfirmasikan bahwa ACL memiliki alamat IP dan aturan geolokasi yang Anda tentukan. Nama default dari ACL web ini adalahWebACLCloudfront-<ID>.

  5. Dalam daftar Wilayah AWS, pilih Wilayah tempat Anda menerapkan tumpukan.

  6. Verifikasi bahwa ACL web baru untuk sumber daya API Gateway telah diterapkan. Konfirmasikan bahwa ia memiliki alamat IP dan aturan geolokasi yang Anda tentukan. Nama default dari ACL web ini adalahWebACLApiGW-<ID>.

AWS Umum

(Opsional) Kaitkan web ACLs ke sumber daya Anda.

Kaitkan AWS WAF web ACLs dengan AWS sumber daya Anda, seperti Application Load Balancer, API Gateway, atau CloudFront distribusi. Untuk petunjuk, lihat Mengaitkan atau memisahkan ACL web dengan sumber daya.AWS Sebagai contoh, lihat class CfnWeb ACLAssociation (construct) dalam AWS CDK dokumentasi.

AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus tumpukan.

  1. Putuskan hubungan ACL web dari sumber daya apa pun AWS . Untuk instruksi, lihat AWS WAF dokumentasi.

  2. Di AWS CDK CLI, masukkan perintah berikut untuk menghapus aplikasi. AWS CDK

    cdk destroy --all
AWS Umum

Sumber daya terkait