Salah satu cara efektif untuk melindungi server dari ancaman adalah dengan membatasi akses hanya kepada entitas tepercaya. Misalnya, jika kamu menggunakan layanan proxy seperti Cloudflare, kamu dapat mengonfigurasi firewall server agar hanya menerima permintaan dari IP Cloudflare untuk layanan HTTP (port 80) dan HTTPS (port 443). Artikel ini akan membahas langkah-langkah praktis untuk mencapai hal tersebut menggunakan firewalld.

Mengapa Memilih Konfigurasi Ini?

Cloudflare bertindak sebagai proxy antara pengguna dan server. Dengan membatasi akses hanya kepada IP Cloudflare, permintaan langsung dari sumber lain (yang tidak melewati Cloudflare) akan ditolak oleh firewall, sehingga mencegah potensi serangan seperti DDoS.

Langkah-Langkah Konfigurasi

Untuk mempermudah manajemen, kita akan membuat zona khusus bernama cloudflare di firewalld. Zona ini akan digunakan untuk mengelompokkan semua aturan terkait IP Cloudflare.

sudo firewall-cmd --new-zone=cloudflare --permanent
sudo firewall-cmd --reload

Selanjutnya, tambahkan semua IP Cloudflare (baik IPv4 maupun IPv6) ke zona cloudflare. Gunakan perintah berikut:

for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
    sudo firewall-cmd --zone=cloudflare --add-source=$ip --permanent
done

for ip in $(curl -s https://www.cloudflare.com/ips-v6); do
    sudo firewall-cmd --zone=cloudflare --add-source=$ip --permanent
done

Perintah di atas akan otomatis menambahkan semua IP Cloudflare ke zona cloudflare.

Setelah IP Cloudflare ditambahkan, izinkan port HTTP (80) dan HTTPS (443) di zona cloudflare:

sudo firewall-cmd --zone=cloudflare --add-service=http --permanent
sudo firewall-cmd --zone=cloudflare --add-service=https --permanent

Untuk memastikan bahwa hanya IP Cloudflare yang dapat mengakses layanan HTTP dan HTTPS, blokir akses dari zona default (public):

sudo firewall-cmd --zone=public --remove-service=http --permanent
sudo firewall-cmd --zone=public --remove-service=https --permanent

Setelah semua konfigurasi selesai, muat ulang firewalld untuk menerapkan perubahan:

sudo firewall-cmd --reload

Untuk memastikan bahwa konfigurasi telah diterapkan dengan benar, jalankan perintah berikut:

Periksa zona cloudflare:

sudo firewall-cmd --zone=cloudflare --list-all

Output harus menunjukkan bahwa hanya IP Cloudflare yang diizinkan, dan layanan HTTP/HTTPS diaktifkan.

Periksa zona public:

sudo firewall-cmd --zone=public --list-all