Cloudflare dan WAF untuk Website Bisnis: Apa yang Dilindungi Paket Gratis, Setup yang Benar, dan Kesalahan yang Sering Terjadi

Banyak website di Indonesia sudah memakai Cloudflare, tetapi setup-nya sering setengah jalan: SSL Flexible, IP server yang masih terbuka, atau Bot Fight Mode yang memblokir webhook payment gateway. Artikel ini membahas apa yang bisa dan tidak bisa dicegah WAF, isi paket Free, Pro, dan Business, checklist setup, custom rule yang layak dipasang, dan persiapan kalau Cloudflare sendiri sedang down.

Dipublikasikan 13 menit baca
Titik-titik cahaya yang saling terhubung oleh jalinan garis tipis

Mengaktifkan Cloudflare cukup sepuluh menit: ganti nameserver, tunggu sebentar, dan website langsung berada di belakang jaringan global dengan proteksi DDoS dan gembok di browser. Justru karena semudah itu, banyak setup berhenti di tengah jalan. Kami cukup sering menemukan website yang sudah pakai Cloudflare, tetapi IP servernya masih bisa diakses langsung, trafik ke servernya sama sekali tidak dienkripsi, atau callback pembayarannya gagal karena filter bot dinyalakan tanpa dicek dulu. Artikel ini membahas apa yang sebenarnya dikerjakan Cloudflare dan web application firewall-nya, paket mana yang cocok untuk jenis website apa, dan cara setup supaya proteksinya bukan sekadar di atas kertas.

Apa yang Terjadi Saat Website Dipasang di Belakang Cloudflare

Setelah nameserver domain diarahkan ke Cloudflare, setiap record DNS berstatus Proxied (awan oranye) akan mengirim pengunjung ke Cloudflare lebih dulu. Cloudflare lalu meneruskan request ke server Anda, yang mereka sebut origin. Record berstatus DNS only (awan abu-abu) sama sekali tidak dilindungi, karena hanya mengembalikan alamat IP server Anda. Subdomain untuk email, SSH, dan FTP biasanya memang dibiarkan DNS only, dan itu tidak masalah selama Anda paham apa yang terbuka karenanya.

Karena semua trafik lewat Cloudflare, beberapa pekerjaan bisa dilakukan sekaligus: menyimpan cache file statis di dekat pengunjung, menyerap serangan DDoS, menangani HTTPS, menyaring request lewat WAF, dan menantang bot yang mencurigakan. Cloudflare punya titik layanan di Jakarta dan terhubung dengan banyak jaringan lokal, jadi bagi pengunjung di Indonesia lompatan tambahan ini biasanya hampir tidak terasa, dan halaman yang sudah di-cache sering justru lebih cepat dibanding langsung dari origin.

Apa yang Dikerjakan WAF, dan Apa yang Tidak Bisa

Web application firewall membaca setiap request HTTP, termasuk URL, header, cookie, dan body, lalu mencocokkannya dengan sekumpulan aturan. Request yang terlihat seperti SQL injection, cross-site scripting, path traversal, atau exploit untuk celah yang sudah diketahui akan diblokir atau ditantang sebelum sampai ke aplikasi. Firewall jaringan seperti iptables atau security group di AWS hanya melihat alamat IP dan port, jadi tidak bisa membedakan login biasa dengan login yang membawa payload SQL injection.

Hal paling berharga dari WAF terkelola bagi tim kecil adalah waktu. Saat React2Shell (CVE-2025-55182), celah remote code execution di React Server Components, diumumkan pada Desember 2025, Cloudflare menambahkan aturan blokir ke managed ruleset mereka dalam waktu sehari, termasuk Free Managed Ruleset yang otomatis aktif di paket gratis. Website di belakangnya sudah terlindungi selagi developernya masih meng-upgrade React dan Next.js. Cara ini biasa disebut virtual patching.

Yang tidak dipahami WAF adalah logika bisnis Anda. WAF tidak tahu bahwa user A tidak boleh membuka invoice milik user B hanya dengan mengganti ID di URL, bahwa kode voucher hanya boleh dipakai sekali, atau bahwa akun staf tidak boleh mengakses endpoint admin. Celah kontrol akses seperti ini adalah temuan serius yang paling sering muncul saat pentest, dan hanya bisa diperbaiki di aplikasi. Managed rule juga masih bisa dilewati dengan payload yang tidak biasa, dan hanya memeriksa sebagian dari body request yang sangat besar.

WAF memberi Anda waktu antara hari sebuah celah diumumkan dan hari Anda selesai menambalnya. WAF tidak menggantikan patch, dan tidak menggantikan perbaikan kode Anda sendiri.

Free, Pro, Business, Enterprise: Isi Tiap Paket

FiturFreeProBusinessEnterprise
Harga per domain per bulan$0$20 kalau bayar tahunan, $25 kalau bulanan$200 kalau bayar tahunan, $250 kalau bulananKontrak khusus
Managed rule WAFFree Managed Ruleset untuk celah kritis yang banyak dieksploitasiCloudflare Managed Ruleset dan OWASP Core RulesetRuleset yang sama dengan ProSemua ruleset, plus add-on seperti API Shield
Custom rule WAF520100, bisa memakai regex1.000
Rule rate limiting1 rule, dihitung per IP dalam 10 detik2 rule, jendela waktu sampai 1 menit5 rule, jendela waktu sampai 10 menitSampai 100 rule, dengan pilihan penghitungan lebih banyak
Proteksi botBot Fight Mode untuk bot sederhanaSuper Bot Fight ModeSuper Bot Fight Mode dengan analitik botBot Management dengan skor bot per request
Deteksi kredensial bocorMengecek apakah password termasuk yang pernah bocorMengecek pasangan username dan passwordPengecekan sama dengan ProDeteksi tambahan dan lokasi kustom
Support dan SLAForum komunitas, tanpa SLATiket email, tanpa SLATiket dan chat, SLA uptime 100%Telepon, chat, dan tiket 24/7, SLA dengan kompensasi lebih besar

Harga dihitung per domain, jadi tiga website di paket Pro biayanya tiga kali lipat. Proteksi DDoS tidak dibatasi di semua paket, termasuk Free, artinya Anda tidak ditagih tambahan atau diputus karena sedang diserang. Angka di atas kami ambil dari halaman paket dan dokumentasi Cloudflare per November 2026. Cloudflare cukup sering mengubah isi paketnya, jadi cek lagi halaman resminya sebelum menyusun anggaran.

Paket Mana untuk Website Seperti Apa

  • Free sudah cukup untuk company profile, blog, landing page, dan tool internal kecil. Anda tetap mendapat proteksi DDoS, Free Managed Ruleset, lima custom rule, satu rule rate limiting, Turnstile sebagai pengganti CAPTCHA, dan Cloudflare Tunnel.
  • Pro layak diambil begitu website punya fitur login, form yang menulis ke database, atau toko online, dan untuk website WordPress dengan banyak plugin. Cloudflare Managed Ruleset dan OWASP Core Ruleset menangkap jauh lebih banyak pola serangan dibanding ruleset gratis, dan $20 per bulan lebih murah daripada satu jam membersihkan website yang kena retas.
  • Business masuk akal kalau Anda butuh SLA uptime, support lewat chat, regex di dalam rule, jendela rate limiting yang lebih panjang, atau bantuan memenuhi persyaratan PCI DSS untuk pembayaran kartu.
  • Enterprise untuk bank, fintech, dan platform besar yang butuh bot management tingkat lanjut, kontak support khusus, ketentuan kontrak soal lokasi data, atau laporan untuk OJK dan auditor.

Cara Setup Cloudflare yang Benar

  1. 1Tambahkan domain dan biarkan Cloudflare mengimpor record DNS yang sudah ada. Sebelum mengganti nameserver, bandingkan hasilnya baris per baris dengan zona DNS lama, terutama record MX dan record TXT untuk SPF, DKIM, DMARC, dan verifikasi domain. Record yang tertinggal biasanya baru ketahuan saat email tiba-tiba tidak masuk.
  2. 2Ganti nameserver di registrar. Untuk domain .id, caranya lewat panel registrar tempat Anda membeli domain. Perubahan biasanya berlaku dalam beberapa jam.
  3. 3Tentukan record mana yang di-proxy. Record website seperti domain utama, www, dan app sebaiknya Proxied. Host untuk email, SSH, FTP, dan database dibiarkan DNS only, karena proxy Cloudflare hanya menangani HTTP dan HTTPS di port tertentu.
  4. 4Atur mode SSL/TLS ke Full (strict) dan pasang sertifikat yang valid di origin, bisa sertifikat gratis dari Let's Encrypt atau Cloudflare Origin CA. Sertifikat Origin CA bisa berlaku sampai 15 tahun, tetapi hanya dipercaya oleh Cloudflare, bukan oleh browser. Setelah itu aktifkan Always Use HTTPS.
  5. 5Kembalikan IP asli pengunjung di server. Tanpa langkah ini, access log, fail2ban, dan rate limiting di aplikasi hanya melihat alamat Cloudflare. Di Nginx, tambahkan baris set_real_ip_from untuk setiap rentang IP Cloudflare dan atur real_ip_header CF-Connecting-IP.
  6. 6Kunci origin. Izinkan port 80 dan 443 hanya dari rentang IP Cloudflare yang dipublikasikan di cloudflare.com/ips, lewat firewall server atau security group di cloud. Opsi yang lebih rapi adalah Cloudflare Tunnel: agen cloudflared membuka koneksi keluar ke Cloudflare, jadi server tidak perlu membuka port web untuk koneksi masuk sama sekali. Authenticated Origin Pulls menambahkan pengecekan sertifikat klien di atasnya.
  7. 7Periksa pengaturan WAF. Di paket Free, pastikan Free Managed Ruleset aktif. Di Pro ke atas, aktifkan Cloudflare Managed Ruleset dan OWASP Core Ruleset. Mulai OWASP ruleset dengan paranoia level rendah dan ambang anomaly score yang tinggi, lalu perketat setelah Anda tahu seperti apa trafik normalnya.
  8. 8Baca Security Events setiap hari di minggu pertama. Di sini terlihat request mana yang diblokir dan alasannya, dan hanya dari sini Anda bisa menangkap rule yang ternyata memblokir pelanggan sungguhan.

Custom Rule yang Layak Dipasang

Paket gratis hanya punya lima custom rule, jadi pakai untuk hal yang paling penting. Rule ditulis sebagai expression di dashboard. Contoh di bawah memakai bahasa rule Cloudflare, dan path serta alamat IP-nya perlu disesuaikan dengan aplikasi Anda.

  • Lindungi halaman login admin. Untuk WordPress: (http.request.uri.path contains "/wp-login.php" or (http.request.uri.path contains "/wp-admin" and not http.request.uri.path contains "/admin-ajax.php")) and not ip.src in {203.0.113.10}, dengan action Managed Challenge atau Block. Pengecualian admin-ajax.php penting, karena banyak tema dan plugin memanggilnya dari halaman publik.
  • Blokir xmlrpc.php kalau tidak dipakai: http.request.uri.path eq "/xmlrpc.php", action Block. File ini jadi sasaran favorit untuk menebak password. Cek dulu apakah Jetpack atau aplikasi mobile untuk publikasi masih membutuhkannya.
  • Batasi panel admin hanya dari Indonesia kalau semua staf ada di sini: http.request.uri.path contains "/admin" and ip.src.country ne "ID", action Managed Challenge. Penyerang yang serius masih bisa memakai VPN lokal, tetapi sebagian besar serangan otomatis langsung tersaring.
  • Blokir percobaan akses ke file yang tidak boleh publik: http.request.uri.path contains "/.env" or http.request.uri.path contains "/.git", action Block. Bot memindai file ini sepanjang hari, dan satu file .env yang terbuka bisa membocorkan kredensial database dan API.
  • Tantang login yang memakai password bocor. Setelah deteksi kredensial bocor diaktifkan, rule di path login dengan cf.waf.credential_check.password_leaked dan action Managed Challenge bisa memperlambat credential stuffing. Field ini tersedia di paket gratis.

Pakai satu rule rate limiting gratis untuk endpoint yang paling merugikan kalau disalahgunakan. Biasanya itu halaman login atau endpoint pengirim OTP, karena setiap OTP yang dikirim lewat SMS atau WhatsApp ada biayanya. Rule seperti lebih dari 5 request dalam 10 detik dari satu IP ke /api/auth/otp sudah cukup sebagai awal. Paket gratis hanya mengizinkan jendela 10 detik dan blokir 10 detik, jadi tetap pasang batasan di aplikasi, misalnya jumlah maksimal permintaan OTP per nomor HP per jam.

Kesalahan yang Sering Kami Temukan

  • SSL Flexible. Browser menampilkan gembok, tetapi trafik antara Cloudflare dan server berjalan sebagai HTTP biasa. Kalau server juga me-redirect HTTP ke HTTPS, website terjebak redirect tanpa ujung dengan error ERR_TOO_MANY_REDIRECTS. Gunakan Full (strict).
  • IP origin masih diketahui. Record A lama dari sebelum pakai Cloudflare, record MX yang mengarah ke server yang sama, subdomain DNS only yang terlupakan, atau mesin pemindai internet yang mengindeks sertifikat server, semuanya bisa membuka IP. Penyerang yang tahu IP-nya bisa melewati Cloudflare sepenuhnya. Kunci origin seperti dijelaskan di atas, dan kalau IP-nya sudah telanjur bocor, pindah ke IP baru.
  • Bot Fight Mode merusak webhook dan aplikasi mobile. Callback dari payment gateway, webhook WhatsApp API, dan panggilan API dari aplikasi mobile Anda sendiri bisa kena challenge, dan challenge berarti request-nya gagal. Di paket gratis, Bot Fight Mode berlaku untuk seluruh domain dan tidak bisa dilewati dengan custom rule. Hanya IP Access rule, yang dievaluasi lebih dulu, yang bisa mengecualikan IP partner yang sudah diketahui. Kalau daftar IP-nya tidak tersedia, matikan Bot Fight Mode dan andalkan custom rule yang lebih tepat sasaran.
  • Meng-cache halaman milik satu user. Rule Cache Everything di website yang punya fitur login bisa menampilkan halaman akun atau keranjang belanja seorang pelanggan ke pelanggan lain. Bypass cache untuk sesi yang sudah login, keranjang, checkout, dan semua path API.
  • Membiarkan Under Attack Mode menyala berminggu-minggu. Setiap pengunjung harus menunggu halaman pemeriksaan, konversi turun, dan klien API gagal. Nyalakan saat sedang diserang lalu matikan lagi, atau terapkan challenge hanya di path yang diserang.
  • Tidak pernah membuka Security Events. Rule OWASP bisa memblokir editor konten yang menyimpan artikel berisi HTML atau potongan kode, dan tidak ada yang sadar sampai ada yang komplain. Tinjau request yang diblokir secara rutin dan tambahkan pengecualian yang sempit, jangan mematikan seluruh ruleset.
  • Memblokir crawler AI tanpa sengaja. Sejak Juli 2025, Cloudflare memblokir crawler AI yang dikenal secara default untuk domain yang baru ditambahkan. Crawler mesin pencari seperti Googlebot tidak terpengaruh, tetapi kalau Anda ingin konten muncul di jawaban asisten AI, cek pengaturan crawler AI di dashboard.

Cloudflare Juga Bisa Jadi Titik Gagal Tunggal

Pada 18 November 2025, file konfigurasi yang bermasalah di sistem bot management Cloudflare membuat sebagian besar jaringan mereka lumpuh selama beberapa jam. Pada 5 Desember 2025, perubahan yang dibuat untuk melindungi pelanggan dari celah React justru memicu gangguan lain selama sekitar 25 menit. Di kedua kejadian itu, website di belakang Cloudflare menampilkan halaman error padahal server mereka sendiri berjalan normal.

Ini bukan alasan untuk menghindari Cloudflare, tetapi alasan untuk bersiap. Pastikan minimal dua orang bisa login ke akun Cloudflare dan registrar domain, keduanya dengan two-factor authentication. Tulis langkah untuk mengubah record utama menjadi DNS only saat darurat. Cara ini hanya berhasil kalau origin sanggup menerima trafik langsung dan punya sertifikat yang dipercaya browser, dan itu salah satu alasan memakai Let's Encrypt di origin, bukan hanya sertifikat Origin CA. Lalu pantau website dari luar Cloudflare, supaya Anda tahu gangguannya ada di sisi Anda atau di sisi mereka.

Pertimbangan lainnya adalah data. Cloudflare membuka enkripsi HTTPS supaya bisa memeriksa dan meng-cache trafik, jadi Cloudflare melihat semua yang lewat, termasuk isi form. Untuk aplikasi yang memproses data pribadi sesuai UU Pelindungan Data Pribadi, atau yang diawasi OJK, catat Cloudflare sebagai pemroses data di dokumentasi Anda dan periksa ketentuan pemrosesan datanya. Pelanggan Enterprise bisa menambahkan opsi untuk mengatur di mana trafik diperiksa dan di mana log disimpan.

Alternatif Selain WAF Cloudflare

OpsiCocok kalauCatatan biaya
AWS WAFAplikasi sudah berjalan di AWS di belakang CloudFront atau Application Load Balancer, dan rule ingin dikelola lewat Terraform$5 per web ACL dan $1 per rule setiap bulan, ditambah $0,60 per juta request. Bot Control dihitung terpisah
Google Cloud ArmorAplikasi berjalan di Google Cloud di belakang load balancer-nyaDihitung per policy, per rule, dan per request
Bunny ShieldAnda sudah memakai Bunny CDN dan ingin WAF yang lebih sederhana di dashboard yang samaDihitung per pull zone, cek paket terbarunya
Akamai, Imperva, F5Perusahaan besar dan bank yang ingin layanan terkelola dengan tim security operations di belakangnyaKontrak enterprise tahunan
OWASP CRS dengan ModSecurity atau Coraza di server sendiriTrafik tidak boleh melewati pihak ketiga, dan tim punya waktu untuk menyetel ruleSoftware-nya gratis, tetapi menyetel false positive butuh waktu engineer yang tidak sedikit

WAF yang dipasang sendiri bisa menyaring request dengan baik, tetapi tidak bisa menahan serangan DDoS besar, karena trafiknya sudah memenuhi bandwidth server sebelum sempat diperiksa WAF. ModSecurity sekarang dikelola sebagai proyek OWASP setelah Trustwave menghentikan dukungannya pada Juli 2024, sedangkan Coraza adalah engine yang lebih baru, ditulis dengan Go, dan menjalankan OWASP Core Rule Set yang sama. Untuk sebagian besar website bisnis di Indonesia, Cloudflare di depan ditambah aplikasi yang dirawat dengan baik adalah kombinasi yang paling praktis.

Tim managed service kami menyiapkan dan meninjau konfigurasi Cloudflare sebagai bagian dari pemeliharaan server dan aplikasi, termasuk mengunci origin, menyetel WAF, dan monitoring. Kalau Anda belum yakin setup yang sekarang sudah lengkap, review-nya biasanya selesai dalam waktu kurang dari sehari.

Poin penting

  • Cloudflare hanya melindungi record berstatus Proxied, dan hanya kalau server origin tidak bisa diakses langsung. Kunci origin ke rentang IP Cloudflare atau gunakan Cloudflare Tunnel.
  • Gunakan SSL/TLS Full (strict) dengan sertifikat valid di origin. SSL Flexible membuat trafik ke server tidak terenkripsi.
  • Paket gratis sudah mencakup proteksi DDoS tanpa batas, Free Managed Ruleset, lima custom rule, dan satu rule rate limiting. Website dengan login atau pembayaran biasanya lebih aman dengan Pro.
  • WAF memberi waktu untuk menambal celah yang sudah diketahui, tetapi tidak menangkap celah logika bisnis seperti user yang bisa membaca data user lain.
  • Cek Security Events secara rutin, uji webhook dan aplikasi mobile setelah mengaktifkan proteksi bot, dan siapkan rencana untuk hari ketika Cloudflare sendiri mengalami gangguan.
Bagikan artikel ini

Artikel terkait

Artikel lain tentang software development, AI, cloud, dan infrastruktur.

Gembok kombinasi di atas keyboard komputerKeamanan

12 menit baca

SSL Gratis dengan Let's Encrypt: Cara Pasang, Perpanjangan Otomatis, dan Masa Berlaku yang Makin Pendek Mulai 2027

Setiap website dan API butuh HTTPS, dan sertifikat gratis dari Let's Encrypt melindungi trafik sama baiknya dengan sertifikat berbayar. Cara kerja sertifikat SSL, perbedaan gratis dan berbayar, cara memasang Let's Encrypt dengan Certbot di Nginx, sertifikat wildcard, perubahan sepanjang 2025 dan 2026 seperti berakhirnya OCSP dan email pengingat, serta alasan perpanjangan otomatis kini wajib.

Output instalasi paket berwarna hijau di terminal gelapKeamanan

8 menit baca

Celah OpenSSH di Alpine Linux: Password yang Cukup Panjang Bisa Membuka Akun Tanpa Password

Celah pada cara sshd memeriksa password di Alpine Linux, yang dijuluki sshole, memungkinkan siapa pun masuk ke akun tanpa password hanya dengan mengetik password lebih dari 256 byte. Server dan container mana yang terdampak, cara mengeceknya dengan beberapa perintah, versi paket perbaikan untuk setiap rilis Alpine, dan langkah sementara jika belum bisa update hari ini.

Mari berdiskusi

Sedang mencari partner untuk pengembangan software?

Ceritakan proyek yang sedang Anda bangun, kebutuhan yang ingin diselesaikan, dan tantangan yang dihadapi. Kami dapat membantu membahas pendekatan teknis, scope, timeline, dan estimasi biaya.

Mulai diskusi