

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
<a name="aws-waf-restrict-access-geolocation"></a>

*Louis Hourcade, Amazon Web Services*

## Ringkasan
<a name="aws-waf-restrict-access-geolocation-summary"></a>

[AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)adalah 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)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) 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](https://docs.aws.amazon.com/waf/latest/developerguide/how-aws-waf-works.html).

Anda dapat mengaitkan jenis aturan berikut ke AWS WAF web Anda ACLs:
+ [Grup aturan AWS terkelola](https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-rule-groups.html) — 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](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) [dan grup aturan khusus](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html) — 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)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)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
<a name="aws-waf-restrict-access-geolocation-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ [Izin](https://docs.aws.amazon.com/waf/latest/developerguide/security-iam.html) untuk menyebarkan sumber daya AWS WAF 
+ AWS CDK, [diinstal dan dikonfigurasi](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) di akun Anda
+ Git, [diinstal](https://github.com/git-guides/install-git)

**Batasan**
+ Anda dapat menggunakan pola ini hanya di Wilayah AWS tempat AWS WAF yang tersedia. Untuk ketersediaan Wilayah, lihat [Layanan AWS berdasarkan Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Alat
<a name="aws-waf-restrict-access-geolocation-tools"></a>

**Layanan AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)adalah kerangka pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan AWS Cloud infrastruktur dalam kode.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html)adalah 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](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk) repositori. Kode ini menyebarkan dua AWS WAF web ACLs. Yang pertama adalah ACL web regional yang ditujukan untuk sumber daya [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html). Yang kedua adalah ACL web global untuk CloudFront sumber daya [Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html). Kedua web ACLs berisi aturan kustom berikut:
+ `IPMatch`memblokir permintaan dari alamat IP yang tidak diizinkan.
+ `GeoMatch`memblokir permintaan dari negara yang tidak diizinkan.

Selama penerapan, Anda dapat secara opsional melampirkan semua grup aturan terkelola berikut ke web Anda: ACLs
+ [Core rule set (CRS)](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-crs) - Grup aturan ini berisi aturan yang umumnya berlaku untuk aplikasi web. [Ini membantu melindungi terhadap eksploitasi berbagai kerentanan, termasuk beberapa risiko tinggi dan kerentanan yang umum terjadi yang dijelaskan dalam publikasi OWASP, seperti OWASP Top 10.](https://owasp.org/www-project-top-ten/)
+ [Perlindungan admin](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-admin) - Grup aturan ini berisi aturan yang membantu Anda memblokir akses eksternal ke halaman administratif yang terbuka.
+ [Masukan buruk yang diketahui](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-known-bad-inputs) - Grup aturan ini membantu memblokir pola permintaan yang diketahui tidak valid dan terkait dengan eksploitasi atau penemuan kerentanan.
+ [Daftar reputasi IP Amazon](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-amazon) - Grup aturan ini berisi aturan yang didasarkan pada intelijen ancaman internal Amazon. Ini membantu Anda memblokir alamat IP yang biasanya terkait dengan bot atau ancaman lainnya.
+ [Grup aturan terkelola sistem operasi Linux](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-linux-os) - Grup aturan ini membantu memblokir pola permintaan yang terkait dengan eksploitasi kerentanan Linux, termasuk serangan Local File Inclusion (LFI) khusus Linux.
+ [Grup aturan terkelola database SQL](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-sql-db) - Grup aturan ini membantu memblokir pola permintaan yang terkait dengan eksploitasi database SQL, seperti serangan injeksi SQL.

## Epik
<a name="aws-waf-restrict-access-geolocation-epics"></a>

### Konfigurasikan AWS WAF web ACLs
<a name="configure-the-waf-web-acls"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repositori. | Masukkan perintah berikut untuk mengkloning [pembatasan IP dan geolokasi dengan AWS WAF](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk) repositori ke workstation lokal Anda:<pre>git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git</pre> | Git | 
| Konfigurasikan aturan. | 1. **Di repositori kloning, buka file app.py.**<br />2. Ubah nilai variabel berikut untuk menyesuaikan aturan:<pre>aws_acccount = "AWS_ACCOUNT"<br />region = "AWS_REGION"<br />ip_list = ["CIDR_RANGE_1", "CIDR_RANGE_2"]<br />geo_list = ["COUNTRY_CODE_1", "COUNTRY_CODE_2"]<br />aws_managed_rules = True</pre><br />Di mana:`aws_account`adalah ID target Akun AWS.`region`adalah target Wilayah AWS untuk ACL web untuk sumber daya API Gateway.ACL web untuk CloudFront sumber daya bersifat global dan akan digunakan di Wilayah. `us-east-1``ip_list`adalah daftar rentang CIDR yang diizinkan akses.`geo_list`adalah daftar negara yang diizinkan mengakses. Untuk nilai yang valid, lihat [AWS WAF dokumentasi](https://docs.aws.amazon.com/waf/latest/APIReference/API_GeoMatchStatement.html).`aws_managed_rules`mengontrol apakah grup aturan terkelola ditambahkan ke ACL web. Jika nilai ini`True`, mereka ditambahkan. Jika nilai ini`False`, mereka dikecualikan.<br />3. Simpan dan tutup file **app.py**. | AWS Umum, Python | 

### Bootstrap dan terapkan kode
<a name="bootstrap-and-deploy-the-code"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Bootstrap AWS lingkungan Anda. | Jika belum selesai, Anda perlu [bootstrap](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping-env.html) AWS lingkungan Anda sebelum Anda dapat menyebarkan AWS CDK aplikasi.1. Di AWS CDK CLI, masukkan perintah berikut untuk bootstrap Wilayah: `us-east-1`<pre>cdk bootstrap aws://<account-id>/us-east-1</pre><br />2. Jika Anda menerapkan ACL web untuk API Gateway di Wilayah selain`us-east-1`, masukkan perintah berikut untuk mem-bootstrap Wilayah target:<pre>cdk bootstrap aws://<account-id>/<region></pre> | AWS Umum | 
| Menyebarkan AWS CDK aplikasi. | 1. Masukkan perintah berikut untuk menyebarkan AWS CDK aplikasi:<pre>cdk deploy --all</pre><br />2. Tunggu hingga penerapan AWS CloudFormation tumpukan selesai. | AWS Umum | 

### Validasi penerapan
<a name="validate-the-deployment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfirmasikan bahwa web ACLs berhasil digunakan. | 1. Masuk ke Konsol Manajemen AWS, lalu buka [AWS WAF konsol](https://console.aws.amazon.com/wafv2/).<br />2. Di panel navigasi, pilih **Web ACLs**.<br />3. Dalam daftar Wilayah AWS, pilih **Global (CloudFront)**.<br />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 adalah`WebACLCloudfront-<ID>`.<br />5. Dalam daftar Wilayah AWS, pilih Wilayah tempat Anda menerapkan tumpukan.<br />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 adalah`WebACLApiGW-<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](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html).AWS](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html) Sebagai contoh, lihat [class CfnWeb ACLAssociation (construct)](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACLAssociation.html) dalam AWS CDK dokumentasi. | AWS Umum | 

### Pembersihan sumber daya
<a name="clean-up-resources"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus tumpukan. | 1. Putuskan hubungan ACL web dari sumber daya apa pun AWS . Untuk instruksi, lihat [AWS WAF dokumentasi](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html).<br />2. Di AWS CDK CLI, masukkan perintah berikut untuk menghapus aplikasi. AWS CDK <pre>cdk destroy --all</pre> | AWS Umum | 

## Sumber daya terkait
<a name="aws-waf-restrict-access-geolocation-resources"></a>
+ [Referensi API](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) (AWS CDK dokumentasi)
+ [aws-cdk-lib.aws\_wafv2](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2-readme.html) modul (dokumentasi)AWS CDK 
+ [Bekerja dengan web ACLs](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-working-with.html) (AWS WAF dokumentasi)
+ [Mengelola grup aturan Anda sendiri](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html) (AWS WAF dokumentasi)
+ [Aturan](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) (AWS WAF dokumentasi)