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.