Cara Memasang, Mengkonfigurasi dan Menggunakan Firewalld di CentOS dan Ubuntu


Firewalld (daemon firewall) adalah alternatif terhadap layanan iptables, untuk mengelola firewall sistem secara dinamis dengan dukungan untuk zona jaringan (atau firewall) dan menyediakan antarmuka D-Bus untuk mengelola konfigurasi. Mudah digunakan dan dikonfigurasi, dan kini menjadi alat manajemen firewall default di RHEL/CentOS, Fedora dan beberapa distribusi Linux lainnya.

Dalam artikel ini, kita akan membahas cara mengonfigurasi firewall sistem dengan firewalld dan menerapkan pemfilteran paket dasar di CentOS/RHEL 7 dan Ubuntu.

Dasar-Dasar Tentang Firewalld

Firewalld terdiri dari tiga lapisan, yaitu:

  • lapisan inti: bertanggung jawab menangani konfigurasi dan bagian belakang (tercantum di bawah).
  • Antarmuka D-Bus: sarana utama untuk mengubah dan membuat konfigurasi firewall.
  • backend: untuk berinteraksi dengan netfilter (modul kernel asli yang digunakan untuk firewall). Mereka termasuk iptables, ip6tables, ebtables, ipset, nft, linnftables; Pengelola jaringan; dan modul.

Ia mengelola aturan firewall dengan menerapkan zona jaringan/firewall yang menentukan tingkat kepercayaan koneksi atau antarmuka jaringan. Fitur firewall lain yang didukung termasuk layanan, konfigurasi langsung (digunakan untuk meneruskan sintaks iptables mentah secara langsung), IPSets, serta tipe ICMP.

Dua jenis lingkungan konfigurasi yang didukung oleh firewalld:

  • konfigurasi runtime yang hanya efektif hingga mesin di-boot ulang atau layanan firewalld telah di-restart
  • konfigurasi permanen yang disimpan dan bekerja terus-menerus.

Alat baris perintah firewall-cmd digunakan untuk mengelola runtime dan konfigurasi permanen. Alternatifnya, Anda dapat menggunakan alat konfigurasi antarmuka pengguna grafis (GUI) firewall-config untuk berinteraksi dengan daemon.

Selain itu, firewalld menawarkan antarmuka yang terdefinisi dengan baik untuk layanan atau aplikasi lokal lainnya untuk meminta perubahan pada aturan firewall secara langsung, jika dijalankan dengan hak akses root.

File konfigurasi global untuk firewalld terletak di /etc/firewalld/firewalld.conf dan fitur firewall dikonfigurasi dalam format XML.

Memahami Fitur Penting Firewall

Fitur utama firewalld adalah zona jaringan/firewall. Setiap fitur lainnya dibatasi pada suatu zona. Zona firewall menjelaskan tingkat kepercayaan untuk koneksi, antarmuka, atau pengikatan alamat sumber.

Konfigurasi default dilengkapi dengan sejumlah zona yang telah ditentukan sebelumnya yang diurutkan berdasarkan tingkat kepercayaan default zona dari tidak tepercaya hingga tepercaya: drop, blokir, publik, eksternal, dmz, kantor, rumah, internal, dan tepercaya. Mereka didefinisikan dalam file yang disimpan di direktori /usr/lib/firewalld/zones.

Anda dapat mengonfigurasi atau menambahkan zona khusus menggunakan klien CLI atau cukup membuat atau menyalin file zona di /etc/firewalld/zones dari file yang ada dan mengeditnya.

Konsep penting lainnya di bawah firewalld adalah layanan. Suatu layanan ditentukan menggunakan port dan protokol; definisi ini mewakili layanan jaringan tertentu seperti server web atau layanan akses jarak jauh. Layanan didefinisikan dalam file yang disimpan di direktori /usr/lib/firewalld/services/ atau /etc/firewalld/services/.

Jika Anda mengetahui konsep dasar iptables/ip6tables/ebtables, Anda juga dapat menggunakan antarmuka langsung (atau konfigurasi) untuk mendapatkan akses langsung ke firewall. Namun, bagi mereka yang tidak memiliki pengetahuan tentang iptables, Anda dapat menggunakan bahasa yang kaya untuk membuat aturan firewall yang lebih kompleks untuk IPv4 dan IPv6.

Cara Install Paket Firewalld di Linux

Pada CentOS 7, paket firewalld sudah diinstal sebelumnya dan Anda dapat memverifikasi menggunakan perintah berikut.

rpm -qa firewalld

Di Ubuntu 16.04 dan 18.04, Anda dapat menginstalnya menggunakan manajer paket default seperti yang ditunjukkan.

sudo apt install firewalld

Cara Mengelola Layanan Firewall di Linux

Firewalld adalah layanan systemd reguler yang dapat dikelola melalui perintah systemctl.

 
sudo systemctl start firewalld	#start the service for the mean time
sudo systemctl enable firewalld	#enable the service to auto-start at boot time
sudo systemctl status firewalld	#view service status

Setelah memulai layanan firewalld, Anda juga dapat memeriksa apakah daemon berjalan atau tidak, menggunakan alat firewall-cmd (jika tidak aktif, perintah ini akan menghasilkan output “not berlari ").

sudo firewall-cmd --state

Jika Anda menyimpan perubahan apa pun secara permanen, Anda dapat memuat ulang firewalld. Ini akan memuat ulang aturan firewall dan menyimpan informasi negara. Konfigurasi permanen saat ini akan menjadi konfigurasi runtime baru.

sudo firewall-cmd --reload

Cara Bekerja dengan Zona Firewall di Firewalld

Untuk mendapatkan daftar semua zona dan layanan firewall yang tersedia, jalankan perintah ini.

sudo firewall-cmd --get-zones
sudo firewall-cmd --get-services

Zona default adalah zona yang digunakan untuk setiap fitur firewall yang tidak dibatasi secara eksplisit ke zona lain. Anda bisa mendapatkan set zona default untuk koneksi jaringan dan antarmuka dengan menjalankan.

sudo firewall-cmd --get-default-zone

Untuk mengatur zona default, misalnya ke eksternal, gunakan perintah berikut. Perhatikan bahwa menambahkan opsi --permanent akan menyetel konfigurasi secara permanen (atau mengaktifkan kueri informasi dari lingkungan konfigurasi permanen).

sudo firewall-cmd --set-default-zone=external
OR
sudo firewall-cmd --set-default-zone=external --permanent
sudo firewall-cmd --reload 

Selanjutnya, mari kita lihat cara menambahkan antarmuka ke suatu zona. Contoh ini menunjukkan cara menambahkan adaptor jaringan nirkabel Anda (wlp1s0) ke zona asal, yang digunakan di area asal.

sudo firewall-cmd --zone=home --add-interface=wlp1s0

Antarmuka hanya dapat ditambahkan ke satu zona. Untuk memindahkannya ke zona lain, gunakan sakelar --change-interface seperti yang ditunjukkan, atau hapus dari zona sebelumnya menggunakan sakelar –remove-interface, lalu tambahkan ke zona baru.

Dengan asumsi Anda ingin terhubung ke jaringan WI-FI publik, Anda harus memindahkan antarmuka nirkabel Anda kembali ke zona publik, seperti ini:

sudo firewall-cmd --zone=public --add-interface=wlp1s0
sudo firewall-cmd --zone=public --change-interface=wlp1s0

Anda dapat menggunakan banyak zona secara bersamaan. Untuk mendapatkan daftar semua zona aktif dengan fitur yang diaktifkan seperti antarmuka, layanan, port, protokol, jalankan:

sudo firewall-cmd --get-active-zones

Sehubungan dengan poin sebelumnya, Jika Anda ingin mencari informasi lebih lanjut tentang zona tertentu, yaitu segala sesuatu yang ditambahkan atau diaktifkan di dalamnya, gunakan salah satu perintah berikut:

sudo firewall-cmd --zone=home --list-all
OR
sudo firewall-cmd --info-zone public

Opsi berguna lainnya adalah --get-target, yang menunjukkan target zona permanen. Targetnya adalah salah satu dari: default, ACCEPT, DROP, REJECT. Anda dapat memeriksa target berbagai zona:

sudo firewall-cmd --permanent --zone=public --get-target  
sudo firewall-cmd --permanent --zone=block --get-target  
sudo firewall-cmd --permanent --zone=dmz --get-target  
sudo firewall-cmd --permanent --zone=external --get-target
sudo firewall-cmd --permanent --zone=drop --get-target

Cara Membuka dan Memblokir Port di Firewalld

Untuk membuka port (atau kombinasi port/protokol) di firewall, cukup tambahkan port tersebut di zona dengan opsi --add-port. Jika Anda tidak menentukan zona secara eksplisit, zona tersebut akan diaktifkan di zona default.

Contoh berikut menunjukkan cara menambahkan port 80 dan 443 untuk mengizinkan lalu lintas web masuk melalui HTTP dan HTTPS protokol, masing-masing:

sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

Selanjutnya, muat ulang firewalld dan periksa fitur yang diaktifkan di zona publik sekali lagi, Anda seharusnya dapat melihat port yang baru saja ditambahkan.

sudo firewall-cmd --reload
sudo firewall-cmd --info-zone public

Memblokir atau menutup port di firewall juga sama mudahnya, cukup hapus port tersebut dari zona dengan opsi --remove-port. Misalnya saja untuk menutup port 80 dan 443 di zona publik.

sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

Daripada menggunakan kombinasi port atau port/protokol, Anda dapat menggunakan nama layanan yang portnya ditetapkan seperti yang dijelaskan di bagian selanjutnya.

Cara Membuka dan Memblokir Layanan di Firewalld

Untuk membuka layanan di firewall, aktifkan menggunakan opsi --add-service. Jika zona dihilangkan, zona default akan digunakan.

Perintah berikut akan mengaktifkan layanan http secara permanen di zona publik.

sudo firewall-cmd --zone=public --permanent --add-service=http 
sudo firewall-cmd --reload 

Opsi --remove-service dapat digunakan untuk menonaktifkan layanan.

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

Cara Mengaktifkan dan Menonaktifkan Penyamaran IP Menggunakan Firewalld

IP Masquerading (juga dikenal sebagai IPMASQ atau MASQ) adalah NAT (Terjemahan Alamat Jaringan) mekanisme dalam jaringan Linux yang memungkinkan host Anda di jaringan, dengan alamat IP pribadi untuk berkomunikasi dengan Internet menggunakan alamat IP publik yang ditetapkan server Linux Anda (gerbang IPMASQ).

Ini adalah pemetaan satu-ke-banyak. Lalu lintas dari host tak terlihat Anda akan muncul di komputer lain di internet seolah-olah berasal dari server Linux Anda.

Anda dapat mengaktifkan penyamaran IP di zona yang diinginkan, misalnya zona publik. Namun sebelum melakukan itu, periksa dulu apakah masquerading aktif atau tidak (tanda “tidak ” berarti dinonaktifkan dan “ya ” berarti sebaliknya).

sudo firewall-cmd --zone=public --query-masquerade
sudo firewall-cmd --zone=public --add-masquerade

Kasus penggunaan umum untuk penyamaran adalah melakukan penerusan porta. Dengan asumsi Anda ingin melakukan SSH dari mesin jarak jauh ke host di jaringan internal Anda dengan IP 10.20.1.3, di mana daemon sshd mendengarkan pada port 5000.

Anda dapat meneruskan semua koneksi ke port 22 di server Linux Anda ke port yang dituju pada host target Anda dengan mengeluarkan:

sudo firewall-cmd --zone=public --add-forward-port=port=22=proto=tcp:toport=5000:toaddr=10.20.1.3

Untuk menonaktifkan penyamaran di suatu zona, gunakan sakelar --remove-masquerade.

sudo firewall-cmd --zone=public --remove-masquerade

Cara Mengaktifkan dan Menonaktifkan Pesan IMCP di Firewalld

Pesan ICMP (Internet Control Message Protocol) berupa permintaan informasi atau balasan terhadap permintaan informasi atau dalam kondisi kesalahan.

Anda dapat mengaktifkan atau menonaktifkan pesan ICMP di firewall, tetapi sebelum itu, daftarkan terlebih dahulu semua jenis icmp yang didukung.

sudo firewall-cmd --get-icmptypes

Untuk menambah atau menghapus jenis blok yang Anda inginkan.

sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
OR
sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

Anda dapat melihat semua jenis icmp yang ditambahkan dalam suatu zona menggunakan sakelar --list-icmp-blocks.

sudo firewall-cmd --zone=home --list-icmp-blocks

Cara Menggunakan Antarmuka Langsung untuk Melewati Perintah iptables Mentah

Firewall-cmd juga menyediakan opsi langsung (--direct) bagi Anda untuk mendapatkan lebih banyak akses langsung ke firewall. Ini berguna bagi mereka yang memiliki pengetahuan dasar tentang iptables.

Penting: Anda sebaiknya hanya menggunakan opsi langsung sebagai upaya terakhir jika tidak memungkinkan untuk menggunakan opsi firewall-cmd biasa yang dijelaskan di atas.

Berikut adalah contoh cara meneruskan aturan iptables mentah, menggunakan saklar --add-rules. Anda dapat dengan mudah menghapus aturan ini dengan mengganti --add-rule dengan --remove-rule:

sudo firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 80 -j ACCEPT

Untuk informasi lebih lanjut tentang iptables, lihat panduan ini: Cara Mengatur Firewall Iptables untuk Mengaktifkan Akses Jarak Jauh ke Layanan di Linux.

Jika Anda belum terbiasa dengan sintaksis iptables, Anda dapat memilih “bahasa yang kaya ” firewalld untuk membuat aturan firewall yang lebih kompleks dengan cara yang mudah dipahami seperti yang dijelaskan selanjutnya.

Cara Menggunakan Bahasa yang Kaya di Firewalld

Bahasa kaya (juga dikenal sebagai aturan kaya) digunakan untuk menambahkan aturan firewall yang lebih kompleks untuk IPv4 dan IPv6 tanpa sepengetahuan sintaks iptables.

Ini memperluas fitur zona (layanan, port, blok icmp, masquerade, dan port depan) yang telah kami bahas. Ini mendukung alamat sumber dan tujuan, logging, tindakan dan batasan untuk log dan tindakan.

--add-rich-rule digunakan untuk menambahkan aturan kaya. Contoh ini menunjukkan cara mengizinkan koneksi IPv4 dan IPv6 baru untuk layanan http dan mencatat 1 per menit menggunakan audit:

sudo firewall-cmd --add-rich-rule='rule service name="http" audit limit value="1/m" accept'

Untuk menghapus aturan yang ditambahkan, ganti opsi --add-rich-rule dengan --remove-rich-rule.

sudo firewall-cmd --remove-rich-rule='rule service name="http" audit limit value="1/m" accept'

Fitur ini juga memungkinkan untuk memblokir atau mengizinkan lalu lintas dari alamat IP tertentu. Contoh berikut menunjukkan cara menolak koneksi dari IP 10.20.1.20.

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.254" reject'

Cara Mengaktifkan dan Menonaktifkan Mode Panik di Firewalld

Mode panik adalah mode khusus di bawah firewall yang mana semua paket masuk dan keluar akan dihapus, dan koneksi aktif akan berakhir setelah diaktifkan.
Anda dapat mengaktifkan mode ini dalam situasi darurat ketika ada ancaman terhadap lingkungan jaringan Anda.

Untuk menanyakan mode panik, gunakan opsi --query-panic.

sudo firewall-cmd --query-panic

Untuk mengaktifkan mode panik, gunakan opsi --panic-on. Anda dapat menguji apakah itu berfungsi menggunakan perintah ping seperti yang ditunjukkan. Karena paket terjatuh, nama www.google.com tidak dapat diselesaikan, sehingga muncul kesalahan.

sudo firewall-cmd --panic-on
ping -c 2 www.google.com

Untuk menonaktifkan mode panik, gunakan opsi --panic-off.

sudo firewall-cmd --panic-off

Cara Mengunci Firewalld

Ingat, kami telah menyebutkan dasar-dasar tentang firewalld bahwa aplikasi atau layanan lokal dapat mengubah konfigurasi firewall jika dijalankan dengan hak akses root. Anda dapat mengontrol aplikasi mana yang dapat meminta perubahan firewall, dengan menentukannya dalam daftar putih lockdown.

Fitur ini dinonaktifkan secara default, Anda dapat mengaktifkan atau menonaktifkannya dengan tombol --lockdown-on atau --lockdown secara reseptif.

sudo firewall-cmd --lockdown-on
OR
sudo firewall-cmd --lockdown-off

Perhatikan bahwa disarankan untuk mengaktifkan atau menonaktifkan fitur ini dengan mengedit file konfigurasi utama, karena firewall-cmd mungkin tidak ada dalam daftar putih lockdown saat Anda mengaktifkan lockdown.

sudo vim /etc/firewalld/firewalld.conf

Cari parameter Lockdown dan ubah nilainya dari no (berarti nonaktif) menjadi yes (berarti aktif).

Lockdown=yes

Untuk menjadikan pengaturan ini permanen, muat ulang firewalld.

sudo firewall-cmd --reload
Ringkasan

Firewalld adalah pengganti layanan iptables yang mudah digunakan, yang menggunakan iptables sebagai backend. Pada artikel ini, kami telah menunjukkan cara menginstal paket firewalld, menjelaskan fitur-fitur penting firewalld dan mendiskusikan cara mengonfigurasinya di lingkungan runtime dan konfigurasi permanen.

Jika Anda memiliki pertanyaan atau komentar, jangan ragu untuk menghubungi kami melalui formulir komentar di bawah. Anda dapat merujuk ke halaman manual firewalld (man firewalld) atau dokumentasi firewalld di situs proyek, untuk informasi lebih lanjut.