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