Membatasi Akses Nginx Hanya untuk Alamat IP Cloudflare
Dalam artikel ini, akan dibahas cara membatasi akses ke server Nginx hanya untuk lalu lintas yang berasal dari Cloudflare. Ini bisa berguna untuk meningkatkan keamanan server dengan memastikan bahwa semua lalu lintas yang masuk berasal dari Cloudflare.
Mengatur Nginx
Pertama, perlu mengatur Nginx untuk mengenali alamat IP asli pengguna yang datang melalui Cloudflare. Berikut adalah contoh konfigurasi yang bisa digunakan:
# Daftar alamat IP Cloudflare
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;
allow 104.16.0.0/12;
allow 172.64.0.0/13;
allow 131.0.72.0/22;
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
allow 2a06:98c0::/29;
allow 2c0f:f248::/32;
# Menggunakan header X-Forwarded-For dari Cloudflare
deny all;
Konfigurasi di atas memungkinkan Nginx untuk mengenali alamat IP asli pengguna yang datang melalui Cloudflare. Perlu diingat bahwa daftar alamat IP Cloudflare bisa berubah, jadi pastikan untuk memperbarui daftar tersebut secara berkala.
Untuk menggunakan config diatas, tambahkan configurasi diatas dengan configurasi nginx yang di inginkan untuk pembatasan akses. Dengan cara menambahkan script berikut di konfi:
include /etc/nginx/conf.d/cloudflare.conf;
Membuat Skrip untuk Memperbarui IP Cloudflare Secara Otomatis
Untuk memperbarui alamat IP Cloudflare secara otomatis, bisa membuat skrip shell. Berikut adalah contoh skrip yang bisa digunakan:
#!/bin/bash
# Lokasi file konfigurasi Nginx
NGINX_CONFIG="/etc/nginx/conf.d/cloudflare.conf"
# Membuat/membersihkan file konfigurasi
echo "" > $NGINX_CONFIG
# Mengambil daftar alamat IP Cloudflare
CLOUDFLARE_IP_RANGES=$(curl -H "Authorization: Bearer Test" -H "Content-Type:application/json" https://api.cloudflare.com/client/v4/ips | jq -r '.result.ipv4_cidrs[], .result.ipv6_cidrs[]')
# Menulis alamat IP ke file konfigurasi
for ip in $CLOUDFLARE_IP_RANGES; do
echo "allow $ip;" >> $NGINX_CONFIG
done
# Menambahkan header X-Forwarded-For
echo "deny all;" >> $NGINX_CONFIG
# Restart Nginx
service nginx restart
Skrip di atas akan mengambil daftar alamat IP Cloudflare secara dinamis dari https://api.cloudflare.com/client/v4/ips
dan menulisnya ke file konfigurasi Nginx. Kemudian, skrip akan me-restart Nginx. Skrip ini bisa dijalankan secara berkala menggunakan cron.
Mendapatkan Informasi IP Cloudflare Terbaru
Untuk mendapatkan informasi terbaru tentang alamat IP Cloudflare, bisa mengunjungi halaman IP Ranges di situs web Cloudflare. Halaman ini dimaksudkan untuk menjadi sumber definitif dari rentang IP Cloudflare saat ini.
Selain itu, juga bisa menggunakan layanan seperti Cloudflare Radar untuk informasi IP lebih lanjut.
Perlu diingat bahwa daftar alamat IP Cloudflare bisa berubah, jadi pastikan untuk memperbarui daftar tersebut secara berkala.
Mendapatkan Token dari Cloudflare
Untuk mendapatkan token dari Cloudflare, bisa mengikuti langkah-langkah berikut:
- Buka profil Cloudflare.
- Pilih API Tokens di bawah My Profile.
- Klik Create Token.
- Pilih template dari template token API yang tersedia atau buat token kustom.
- Tambahkan atau edit nama token untuk menjelaskan mengapa atau bagaimana token digunakan.
- Modifikasi izin token.
- Pilih sumber daya mana yang diizinkan token untuk diakses.
- (Opsional) Batasi bagaimana token digunakan dalam bidang Client IP Address Filtering dan TTL (time to live).
- Klik Continue to summary.
- Tinjau ringkasan token.
- Klik Create Token untuk menghasilkan rahasia token.
- Salin rahasia ke tempat yang aman. Peringatan: Rahasia token hanya ditunjukkan sekali. Jangan simpan rahasia dalam teks biasa di mana orang lain dapat mengaksesnya.
Setelah mendapatkan token, bisa menggunakan token tersebut untuk melakukan permintaan ke API Cloudflare. Misalnya, bisa menggunakan perintah berikut untuk menguji token:
curl "https://api.cloudflare.com/client/v4/user/tokens/verify" \
-H "Authorization: Bearer <API_TOKEN>"
Perintah di atas akan mengembalikan status token saat ini. Dengan ini, telah berhasil membuat token API dan dapat mulai bekerja dengan API Cloudflare.
Kesimpulan
Dengan membatasi akses ke server Nginx hanya untuk alamat IP Cloudflare, bisa meningkatkan keamanan server. Selain itu, dengan membuat skrip untuk memperbarui alamat IP Cloudflare secara otomatis, bisa memastikan bahwa server selalu up-to-date dengan alamat IP Cloudflare terbaru.
Komentar
Posting Komentar