Firewall adalah metode untuk memantau dan menyaring 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 antarmuka D-Bus yang memungkinkan Anda mengelola firewall sistem secara dinamis.
Dalam tutorial ini, kita akan berbicara tentang cara mengkonfigurasi dan mengelola firewall di CentOS 8. Kami juga akan menjelaskan konsep dasar FirewallD.
Prasyarat #
Untuk mengonfigurasi layanan firewall, Anda harus login sebagai root atau pengguna dengan hak istimewa sudo.
Konsep Dasar Firewalld #
firewalld menggunakan konsep zona dan layanan. Berdasarkan zona dan layanan yang akan Anda konfigurasikan, Anda dapat mengontrol lalu lintas apa yang diizinkan atau diblokir ke dan dari sistem.
Firewalld dapat dikonfigurasi dan dikelola menggunakan firewall-cmd
utilitas baris perintah.
Di CentOS 8, iptables digantikan oleh nftables sebagai backend firewall default untuk daemon firewalld.
Zona Firewall #
Zona adalah kumpulan aturan yang telah ditentukan sebelumnya yang menentukan tingkat kepercayaan jaringan yang terhubung dengan komputer Anda. Anda dapat menetapkan antarmuka dan sumber jaringan ke suatu zona.
Di bawah ini adalah zona yang disediakan oleh FirewallD yang diurutkan sesuai dengan tingkat kepercayaan zona dari tidak tepercaya ke tepercaya:
- jatuhkan :Semua koneksi masuk terputus tanpa pemberitahuan apa pun. Hanya koneksi keluar yang diperbolehkan.
- blokir :Semua koneksi masuk ditolak dengan
icmp-host-prohibited
pesan untukIPv4
danicmp6-adm-prohibited
untuk IPv6n. Hanya koneksi keluar yang diperbolehkan. - publik :Untuk digunakan di tempat umum yang tidak dapat dipercaya. Anda tidak mempercayai komputer lain di jaringan, tetapi Anda dapat mengizinkan koneksi masuk yang dipilih.
- eksternal :Untuk digunakan pada jaringan eksternal dengan penyamaran NAT diaktifkan saat 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 di jaringan umumnya tepercaya. Hanya koneksi masuk terpilih yang diizinkan.
- dmz :Digunakan untuk komputer yang terletak di zona demiliterisasi Anda yang memiliki akses terbatas ke seluruh jaringan Anda. Hanya koneksi masuk terpilih yang diizinkan.
- kerja :Digunakan untuk mesin kerja. Komputer lain di jaringan umumnya tepercaya. Hanya koneksi masuk terpilih yang diizinkan.
- rumah :Digunakan untuk mesin rumah. Komputer lain di jaringan umumnya tepercaya. Hanya koneksi masuk terpilih yang diizinkan.
- tepercaya :Semua koneksi jaringan diterima. Percayai semua komputer di jaringan.
Layanan firewall #
Layanan firewalld adalah aturan yang telah ditentukan sebelumnya yang berlaku dalam suatu zona dan menentukan pengaturan yang diperlukan untuk mengizinkan lalu lintas masuk untuk layanan tertentu. Layanan ini memungkinkan Anda melakukan beberapa tugas dengan mudah dalam satu langkah.
Misalnya, layanan dapat berisi definisi tentang membuka port, meneruskan lalu lintas, dan lainnya.
Waktu Proses Firewall dan Pengaturan Permanen #
Firewalld menggunakan dua set konfigurasi terpisah, runtime, dan konfigurasi permanen.
Konfigurasi runtime adalah konfigurasi yang berjalan sebenarnya dan tidak bertahan saat reboot. Ketika daemon firewalld dimulai, ia memuat konfigurasi permanen, yang menjadi konfigurasi runtime.
Secara default, saat melakukan perubahan pada konfigurasi Firewalld menggunakan firewall-cmd
utilitas, perubahan diterapkan pada konfigurasi runtime. Untuk membuat perubahan permanen, tambahkan --permanent
opsi untuk perintah.
Untuk menerapkan perubahan di kedua set konfigurasi, Anda dapat menggunakan salah satu dari dua metode berikut:
-
Ubah konfigurasi runtime dan jadikan permanen:
sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent
-
Ubah konfigurasi permanen dan muat ulang daemon firewalld:
sudo firewall-cmd --permanent <options>
sudo firewall-cmd --reload
Mengaktifkan FirewallD #
Pada CentOS 8, firewalld diinstal dan diaktifkan secara default. Jika karena alasan tertentu 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 running
. Jika tidak, Anda akan melihat not running
.
Zona Firewall #
Jika Anda belum mengubahnya, zona default disetel ke public
, dan semua antarmuka jaringan ditetapkan 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 melihat zona aktif dan antarmuka jaringan yang ditetapkan untuknya:
sudo firewall-cmd --get-active-zones
Output di bawah ini menunjukkan bahwa antarmuka eth0
dan eth1
ditugaskan ke public
zona:
public
interfaces: eth0 eth1
Anda dapat mencetak pengaturan konfigurasi zona dengan:
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 publik aktif dan menggunakan target default, yaitu REJECT
. Keluaran juga menunjukkan bahwa zona tersebut digunakan oleh eth0
dan eth1
antarmuka dan memungkinkan klien DHCP dan lalu lintas SSH.
Jika Anda ingin memeriksa konfigurasi semua zona yang tersedia, ketik:
sudo firewall-cmd --list-all-zones
Perintah mencetak daftar besar dengan pengaturan semua zona yang tersedia.
Mengubah target zona #
Target menentukan perilaku default zona untuk lalu lintas masuk yang tidak ditentukan. Ini dapat diatur ke salah satu opsi berikut:default
, ACCEPT
, REJECT
, dan DROP
.
Untuk menetapkan target zona, tentukan zona dengan --zone
opsi dan target dengan --set-target
pilihan.
Misalnya, untuk mengubah public
target zona untuk DROP
Anda akan menjalankan:
sudo firewall-cmd --zone=public --set-target=DROP
Menetapkan antarmuka ke zona yang berbeda #
Anda dapat membuat kumpulan aturan khusus untuk zona yang berbeda dan menetapkan antarmuka yang berbeda untuk zona tersebut. Ini sangat berguna ketika Anda memiliki banyak antarmuka di mesin Anda.
Untuk menetapkan antarmuka ke zona yang berbeda, tentukan zona dengan --zone
opsi dan antarmuka dengan --change-interface
pilihan.
Misalnya, perintah berikut menetapkan eth1
antarmuka ke work
zona:
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 --set-default-zone
pilihan diikuti dengan nama zona yang ingin Anda jadikan default.
Misalnya, untuk mengubah zona default menjadi 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.
Pada contoh berikut kita akan membuat zona baru bernama memcached
, buka port 11211
dan izinkan akses hanya dari 192.168.100.30
Alamat IP:
-
Buat zona:
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
-
Muat ulang daemon firewalld untuk mengaktifkan perubahan:
sudo firewall-cmd --reload
Layanan Firewall #
Dengan firewalld, Anda dapat mengizinkan lalu lintas untuk port dan/atau sumber tertentu berdasarkan aturan yang telah ditentukan sebelumnya yang disebut layanan.
Untuk mendapatkan daftar semua jenis layanan default yang tersedia:
sudo firewall-cmd --get-services
Anda dapat menemukan informasi lebih lanjut tentang setiap layanan dengan membuka file .xml terkait dalam /usr/lib/firewalld/services
direktori. Misalnya, layanan HTTP didefinisikan seperti ini:
<?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 masuk (port 80) untuk antarmuka di zona publik, hanya untuk sesi saat ini (konfigurasi runtime) ketik:
sudo firewall-cmd --zone=public --add-service=http
Jika Anda mengubah zona default, Anda dapat mengabaikan --zone
pilihan.
Untuk memverifikasi bahwa layanan telah berhasil ditambahkan, gunakan --list-services
pilihan:
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 --permanent
opsi, atau jalankan:
sudo firewall-cmd --runtime-to-permanent
Gunakan --list-services
bersama dengan --permanent
opsi untuk memverifikasi perubahan Anda:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http
Sintaks untuk menghapus layanan sama seperti saat menambahkannya. Cukup gunakan --remove-service
alih-alih --add-service
bendera:
sudo firewall-cmd --zone=public --remove-service=http --permanent
Perintah di atas menghapus http
layanan dari konfigurasi permanen zona publik.
Membuat Layanan FirewallD baru #
Seperti yang telah kami sebutkan, layanan default disimpan di /usr/lib/firewalld/services
direktori. Cara termudah untuk membuat layanan baru adalah dengan menyalin file layanan yang ada ke /etc/firewalld/services
direktori, yang merupakan lokasi untuk layanan yang dibuat pengguna dan mengubah pengaturan file.
Misalnya, untuk membuat definisi layanan untuk Server Media Plex, Anda dapat menggunakan file layanan SSH:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
Buka plexmediaserver.xml
yang baru dibuat file dan ubah nama pendek dan deskripsi untuk layanan di dalam <short>
dan <description>
tag. Tag terpenting yang perlu Anda ubah adalah port
tag, yang menentukan nomor port dan protokol yang ingin Anda buka.
Pada contoh berikut, kita membuka port 1900
UDP dan 32400
TCP.
<?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 muat ulang layanan FirewallD:
sudo firewall-cmd --reload
Anda sekarang dapat menggunakan plexmediaserver
layanan di zona Anda sama seperti layanan lainnya.
Membuka Port dan IP Sumber #
Firewalld juga memungkinkan Anda mengaktifkan semua lalu lintas dengan cepat dari alamat IP tepercaya atau pada port tertentu tanpa membuat definisi layanan.
Membuka IP sumber #
Untuk mengizinkan semua lalu lintas masuk dari alamat IP (atau rentang) tertentu, tentukan zona dengan --zone
opsi dan IP sumber dengan --add-source
pilihan.
Misalnya, untuk mengizinkan semua lalu lintas masuk dari 192.168.1.10 di public
zona, jalankan:
sudo firewall-cmd --zone=public --add-source=192.168.1.10
Buat aturan baru tetap ada:
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 sumber sama seperti saat menambahkannya. Cukup gunakan --remove-source
alih-alih --add-source
pilihan:
sudo firewall-cmd --zone=public --remove-source=192.168.1.10
Membuka port sumber #
Untuk mengizinkan semua lalu lintas masuk pada port tertentu, tentukan zona dengan --zone
opsi dan port dan protokol dengan --add-port
pilihan.
Misalnya, untuk membuka port 8080
di zona publik untuk sesi saat ini yang Anda jalankan:
sudo firewall-cmd --zone=public --add-port=8080/tcp
Protokol dapat berupa tcp
, udp
, sctp
, atau dccp
.
Verifikasi perubahan:
sudo firewall-cmd --zone=public --list-ports
8080
Agar port tetap terbuka setelah reboot, tambahkan aturan ke pengaturan permanen dengan menjalankan perintah yang sama menggunakan --permanent
tandai atau dengan mengeksekusi:
sudo firewall-cmd --runtime-to-permanent
Sintaks untuk menghapus port sama seperti saat menambahkan port. Cukup gunakan --remove-port
alih-alih --add-port
pilihan.
sudo firewall-cmd --zone=public --remove-port=8080/tcp
Port Penerusan #
Untuk meneruskan lalu lintas dari satu port ke port lain, pertama-tama aktifkan penyamaran untuk zona yang diinginkan menggunakan --add-masquerade
pilihan. Misalnya, untuk mengaktifkan penyamaran untuk external
zona, ketik:
sudo firewall-cmd --zone=external --add-masquerade
Meneruskan lalu lintas dari satu port ke port lain pada alamat IP #
Dalam contoh berikut kami 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
Teruskan lalu lintas ke alamat IP lain #
Dalam contoh berikut kami meneruskan lalu lintas dari port 80
ke port 80
pada server 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 pada port yang berbeda #
Dalam contoh berikut kami 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 penerusan tetap, gunakan:
sudo firewall-cmd --runtime-to-permanent