Firewall adalah metode untuk memantau dan memfilter lalu lintas jaringan yang masuk dan keluar. Ia bekerja dengan mendefinisikan seperangkat aturan keamanan yang menentukan apakah akan mengizinkan atau memblokir lalu lintas tertentu. Firewall yang dikonfigurasi dengan benar adalah salah satu aspek terpenting dari keamanan sistem secara keseluruhan.
CentOS 8 dikirimkan dengan daemon firewall bernama firewalld. Ini adalah solusi lengkap dengan D-Bus interface yang memungkinkan Anda untuk mengelola firewall sistem secara dinamis.
Dalam tutorial ini, kita akan berbicara tentang cara mengkonfigurasi dan mengelola firewall pada CentOS 8. Kami juga akan menjelaskan konsep dasar FirewallD.
Prasyarat
Untuk mengkonfigurasi layanan firewall, Anda harus login sebagai root atau user dengan hak akses sudo.
Pengertian dan Konsep Dasar Firewalld
firewalld menggunakan konsep zones (zona) dan services (layanan). Berdasarkan zona dan layanan yang akan Anda konfigurasi, Anda dapat mengontrol lalu lintas apa yang diizinkan atau diblokir ke dan dari sistem.
Firewalld dapat dikonfigurasi dan dikelola menggunakan utilitas command-line firewall-cmd
.
Di CentOS 8, iptables digantikan oleh nftables sebagai backend firewall default untuk daemon firewalld.
Penjelasan Zones dalam Firewalld
Zones dalam Firewalld adalah seperangkat aturan yang ditentukan untuk menentukan lalu lintas apa yang harus diizinkan, kriteria ini berdasarkan tingkat kepercayaan pada jaringan yang terhubung dengan komputer.
Berikut adalah zona yang disediakan oleh FirewallD yang telah ditentukan sesuai dengan tingkat kepercayaan, tersedia zona dari tidak dipercaya hingga zona tepercaya:
- drop: Semua koneksi yang masuk akan ditolak tanpa pemberitahuan. Hanya koneksi keluar yang diizinkan.
- block: Semua koneksi yang masuk ditolak dengan pesan
icmp-host-prohibited
untuk IPv4 danicmp6-adm-prohibited
untuk IPv6n. Hanya koneksi keluar yang diizinkan. - public: Untuk digunakan di area publik yang tidak terpercaya. Anda tidak mempercayai komputer lain di jaringan, tetapi Anda dapat mengizinkan koneksi masuk yang dipilih.
- external: Untuk digunakan pada jaringan eksternal dengan NAT diaktifkan ketika sistem Anda bertindak sebagai gateway atau router. Hanya koneksi masuk terpilih yang diizinkan.
- internal: Untuk digunakan pada jaringan internal ketika sistem Anda bertindak sebagai gateway atau router. Sistem lain pada jaringan umumnya dipercaya. Hanya koneksi masuk terpilih yang diizinkan.
- dmz: Digunakan untuk komputer yang terletak di zona demiliterisasi (demilitarized zone) Anda yang akan memiliki akses terbatas ke seluruh jaringan Anda. Hanya koneksi masuk terpilih yang diizinkan.
- work: Digunakan untuk (umumnya) mesin di tempat kerja. Komputer lain di jaringan umumnya dipercaya. Hanya koneksi masuk terpilih yang diizinkan.
- home: Digunakan untuk mesin di rumah Anda. Komputer lain di jaringan umumnya dipercaya. Hanya koneksi masuk terpilih yang diizinkan.
- trusted: Semua koneksi jaringan diterima. Percayai semua komputer di jaringan.
Penjelasan services dalam Firewall
Firewalld services adalah aturan yang telah ditentukan dan berlaku dalam suatu zone dan menentukan pengaturan yang diperlukan untuk memungkinkan lalu lintas masuk untuk layanan tertentu.
Pengaturan Runtime dan Permanen di Firewalld
Firewalld menggunakan dua set konfigurasi yang terpisah, runtime dan konfigurasi permanen.
Konfigurasi runtime adalah konfigurasi yang sedang berjalan dan tidak bertahan atau hilang saat reboot. Ketika daemon firewalld dimulai, ia memuat konfigurasi permanen, yang menjadi konfigurasi runtime.
Secara default, ketika membuat perubahan pada konfigurasi Firewalld menggunakan utilitas firewall-cmd
, perubahan diterapkan pada konfigurasi runtime, untuk membuat perubahan Anda permanen, maka kita perlu menggunakan flag --permanent
.
Untuk menerapkan perubahan di kedua set konfigurasi, Anda dapat menggunakan salah satu dari dua metode berikut:
- Ubah konfigurasi runtime dan buat pengaturan tersebut permanen:
sudo firewall-cmd <options> sudo firewall-cmd --runtime-to-permanent
- Ubah konfigurasi permanen dan reload daemon firewalld:
sudo firewall-cmd --permanent <options> sudo firewall-cmd --reload
Aktifkan FirewallD
Pada CentOS 8, firewalld diinstal dan diaktifkan secara default. Jika karena alasan tertentu firewalld tidak diinstal pada sistem Anda, Anda dapat menginstal dan memulai daemon dengan mengetik:
sudo dnf install firewalld sudo systemctl enable firewalld --now
Anda dapat memeriksa status layanan firewall dengan:
sudo firewall-cmd --state
Jika firewall diaktifkan, perintah akan mencetak output running
. Kalau tidak, Anda akan melihat output not running
.
Zona Firewalld
Jika Anda belum mengubahnya, zona default diatur ke public
, dan semua interface jaringan ditugaskan ke zona ini.
Zona default adalah zona yang digunakan untuk segala sesuatu yang tidak secara eksplisit ditetapkan ke zona lain.
Anda dapat melihat zona default dengan mengetik:
sudo firewall-cmd --get-default-zone
public
Untuk mendapatkan daftar semua zona yang tersedia, ketik:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
Untuk memeriksa zona apa yang digunakan oleh interface jaringan Anda, gunakan perintah berikut :
sudo firewall-cmd --get-active-zones
output :
public interfaces: eth0 eth1
Output berikut memberitahu kita bahwa kedua interface eth0
dan eth1
ditugaskan ke zona public
.
Untuk memeriksa jenis pengaturan konfigurasi zona dmz:
sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Dari output di atas, kita dapat melihat bahwa zona public telah aktif dan ditetapkan sebagai default, zona public tersebut digunakan oleh interfaceeth0
dan eth1
. Juga koneksi yang terkait dengan klien DHCP dan SSH diperbolehkan.
Jika Anda ingin memeriksa konfigurasi semua tipe zona yang tersedia:
sudo firewall-cmd --list-all-zones
Perintah akan mencetak daftar besar pengaturan semua zona yang tersedia.
Mengubah Interface Zone
Target menentukan perilaku default zona untuk lalu lintas masuk yang tidak ditentukan. Itu dapat diatur ke salah satu opsi berikut: default
, ACCEPT
, REJECT
, dan DROP
.
Untuk menetapkan zona target, tentukan zona dengan opsi --zone
dan target dengan opsi --set-target
.
Misalnya, untuk mengubah target zona public
ke DROP
Anda akan menjalankan:
sudo firewall-cmd --zone=public --set-target=DROP
Menetapkan interface ke zona yang berbeda
Anda dapat membuat serangkaian aturan khusus untuk zona yang berbeda dan menetapkan antarmuka yang berbeda untuknya. Ini sangat berguna ketika Anda memiliki banyak interface pada mesin Anda.
Untuk menetapkan interface ke zona yang berbeda, tentukan zona dengan opsi --zone
dan interface dengan opsi --change-interface
.
Misalnya, perintah berikut memberikan interface eth1 ke zona work
:
sudo firewall-cmd --zone=work --change-interface=eth1
Verifikasi perubahan dengan mengetik:
sudo firewall-cmd --get-active-zones
work interfaces: eth1 public interfaces: eth0
Mengubah Zona Default
Untuk mengubah zona default, gunakan opsi --set-default-zone
diikuti oleh nama zona yang ingin Anda jadikan default.
Misalnya, untuk mengubah zona default ke home
, Anda akan menjalankan perintah berikut:
sudo firewall-cmd --set-default-zone=home
Verifikasi perubahan dengan:
sudo firewall-cmd --get-default-zone
home
Membuat Zona baru
Firewalld juga memungkinkan Anda untuk membuat zona Anda sendiri. Ini berguna saat Anda ingin membuat aturan per-aplikasi.
Dalam contoh berikut ini kami akan membuat zona baru bernama memcached
, buka port 11211
dan izinkan akses hanya dari alamat IP 192.168.100.30
:
- Membuat zone baru :
sudo firewall-cmd --new-zone=memcached --permanent
- Tambahkan aturan ke zona:
sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
- Reload daemon firewalld untuk mengaktifkan perubahan::
sudo firewall-cmd --reload
Layanan Firewalld
Dengan firewalld Anda dapat mengizinkan lalu lintas untuk port dan / atau sumber tertentu berdasarkan aturan yang telah ditentukan yang disebut layanan.
Untuk mendapatkan daftar semua layanan standar yang tersedia, ketik:
sudo firewall-cmd --get-services
Anda dapat menemukan informasi lebih lanjut tentang setiap layanan dengan membuka file .xml terkait di direktori /usr/lib/firewalld/services
. Misalnya, layanan HTTP didefinisikan seperti ini:
sudo nano /usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?> <service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description> <port protocol="tcp" port="80"/> </service>
Untuk mengizinkan lalu lintas HTTP (port 80) untuk interface di zona publik, hanya untuk sesi saat ini (konfigurasi runtime) ketik:
sudo firewall-cmd --zone=public --add-service=http
Untuk memverifikasi bahwa layanan telah ditambahkan dengan sukses, gunakan opsi --list-services
:
sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http
Agar port 80 tetap terbuka setelah reboot jalankan perintah yang sama sekali lagi dengan opsi --permanent
, atau jalankan:
sudo firewall-cmd --runtime-to-permanent
Gunakan --list-services
bersama dengan opsi --permanent
untuk memverifikasi perubahan Anda:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http
Sintaks untuk menghapus layanan sama dengan ketika menambahkan. Cukup gunakan --remove-service
daripada --add-service
.
sudo firewall-cmd --zone=public --remove-service=http --permanent
Perintah di atas menghapus layanan http
dari konfigurasi permanen zona publik.
Membuat Layanan FirewallD baru
Seperti yang telah kami sebutkan, layanan default disimpan di direktori /usr/lib/firewalld/services
. Cara termudah untuk membuat layanan baru adalah menyalin file services yang ada ke direktori /etc/firewalld/services
Misalnya, untuk membuat definisi layanan untuk Server Media Plex kita dapat menggunakan file layanan HTTP:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
Buka file plexmediaserver.xml
yang baru dibuat dan ubah bagian nama untuk short dan description untuk layanan di dalam tag <short>
dan <description>
. Tag yang paling penting yang perlu Anda ubah adalah tag port yang menentukan nomor port dan protokol yang ingin Anda buka.
Dalam contoh berikut, kami membuka port 1900
UDP dan 32400
TCP.
sudo nano /etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?> <service version="1.0"> <short>plexmediaserver</short> <description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description> <port protocol="udp" port="1900"/> <port protocol="tcp" port="32400"/> </service>
Simpan file dan reload layanan FirewallD:
sudo firewall-cmd --reload
Anda sekarang dapat menggunakan layanan plexmediaserver
di zona Anda sama dengan layanan lainnya.
Membuka Port dan Sumber IP
Firewalld juga memungkinkan Anda untuk dengan cepat mengaktifkan semua lalu lintas dari alamat IP tepercaya atau pada port tertentu tanpa membuat definisi layanan.
Membuka IP sumber
Untuk mengizinkan semua lalu lintas masuk dari alamat IP tertentu (atau rentang IP), tentukan zona dengan opsi --zone
dan IP sumber dengan opsi --add-source
.
Misalnya, untuk mengizinkan semua lalu lintas masuk dari 192.168.1.10
di zona public
, jalankan:
sudo firewall-cmd --zone=public --add-source=192.168.1.10
Buat aturan baru permanen meski reboot:
sudo firewall-cmd --runtime-to-permanent
Verifikasi perubahan menggunakan perintah berikut:
sudo firewall-cmd --zone=public --list-sources
192.168.1.10
Sintaks untuk menghapus IP source sama dengan ketika menambahkan. Cukup gunakan --remove-source
alih-alih opsi --add-source
:
sudo firewall-cmd --zone=public --remove-source=192.168.1.10
Membuka port sumber
Untuk mengizinkan semua lalu lintas masuk pada port yang diberikan, tentukan zone dengan opsi --zone
dan port serta protokol dengan opsi --add-port
.
Misalnya, untuk membuka port 8080
di public zone untuk sesi saat ini Anda dapat menjalankan:
sudo firewall-cmd --zone=public --add-port=8080/tcp
Protokol dapat berupa tcp
,udp
, sctp
, ataudccp
.
verifikasi perubahan dengan :
sudo firewall-cmd --zone=public --list-ports
8080
Agar port 8080 tetap terbuka setelah reboot, tambahkan aturan agar menjadi permanen dengan menjalankan perintah yang sama, namun dengan menambahkan flag --permanent
.
sudo firewall-cmd --runtime-to-permanent
Sintaks untuk menghapus port sama dengan ketika menambahkan port. Cukup gunakan --remove-port
alih-alih flag --add-port.
.
sudo firewall-cmd --zone=public --remove-port=8080/tcp
Cara Port Forwarding dengan Firewall
Untuk forward (meneruskan) lalu lintas dari satu port ke port atau alamat lain, pertama-tama aktifkan penyamaran untuk zona yang diinginkan menggunakan switch--add-masquerade
. Misalnya untuk mengaktifkan masquerading (penyamaran) untuk tipe zona external
:
sudo firewall-cmd --zone=external --add-masquerade
Meneruskan lalu lintas ke port yang berbeda di server yang sama
Dalam contoh berikut ini, kita akan meneruskan lalu lintas dari port 80
ke port 8080
di server yang sama:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
Meneruskan lalu lintas ke IP yang berbeda
Dalam contoh berikut ini, kita meneruskan lalu lintas dari port 80
ke port 80
di server lain dengan IP 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2
Meneruskan lalu lintas ke server lain di port yang berbeda
Dalam contoh berikut ini kita meneruskan lalu lintas dari port 80
ke port 8080
pada server dengan IP 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2
Untuk membuat aturan forwarding permanen, gunakan:
sudo firewall-cmd --runtime-to-permanent
Kesimpulan
Anda telah belajar cara mengonfigurasi dan mengelola layanan FirewallD pada sistem CentOS 8 Anda.
Pastikan untuk mengizinkan semua koneksi yang masuk yang diperlukan untuk memfungsikan sistem Anda, sambil membatasi semua koneksi yang tidak perlu.