Firewall yang dikonfigurasi dengan benar adalah salah satu aspek terpenting dari keamanan sistem secara keseluruhan.
FirewallMerupakan solusi firewall lengkap yang mengelola aturan iptables sistem dan menyediakan antarmuka D-Bus untuk mengoperasikannya. Dimulai dengan CentOS 7, FirewallD menggantikan iptables sebagai alat manajemen firewall default.
Dalam tutorial ini, kami menunjukkan cara menyiapkan firewall dengan FirewallD pada sistem CentOS 7 Anda dan menjelaskan konsep dasar FirewallD.
Prasyarat #
Sebelum Anda mulai dengan tutorial ini, pastikan Anda masuk ke server Anda dengan akun pengguna dengan hak sudo atau dengan pengguna root. Praktik terbaik adalah menjalankan perintah administratif sebagai pengguna sudo alih-alih root. Jika Anda tidak memiliki pengguna sudo di sistem CentOS, Anda dapat membuatnya dengan mengikuti petunjuk berikut.
Konsep Dasar Firewalld #
FirewallD menggunakan konsep zona dan layanan, bukan rantai dan aturan iptables. Berdasarkan zona dan layanan yang akan Anda konfigurasikan, Anda dapat mengontrol lalu lintas apa yang diizinkan atau tidak diizinkan ke dan dari sistem.
FirewallD dapat dikonfigurasi dan dikelola menggunakan firewall-cmd
utilitas baris perintah.
Zona Firewall #
Zona adalah kumpulan aturan yang telah ditentukan sebelumnya yang menentukan lalu lintas apa yang harus diizinkan berdasarkan tingkat kepercayaan pada 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 standar yang berlaku dalam suatu zona dan menentukan setelan yang diperlukan untuk mengizinkan lalu lintas masuk untuk layanan tertentu.
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 persisten saat reboot. Ketika layanan 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, Anda perlu menggunakan --permanent
pilihan.
Memasang dan Mengaktifkan FirewallD #
-
Firewalld diinstal secara default pada CentOS 7, tetapi jika tidak diinstal pada sistem Anda, Anda dapat menginstal paket dengan mengetik:
sudo yum install firewalld
-
Layanan Firewalld dinonaktifkan secara default. Anda dapat memeriksa status firewall dengan:
sudo firewall-cmd --state
Jika Anda baru saja menginstal atau tidak pernah mengaktifkan sebelumnya, perintah akan mencetak
not running
. Jika tidak, Anda akan melihatrunning
. -
Untuk memulai layanan FirewallD dan mengaktifkannya saat boot, ketik:
sudo systemctl start firewalld
sudo systemctl enable firewalld
Bekerja dengan Firewalld Zones #
Setelah mengaktifkan layanan FirewallD untuk pertama kalinya, public
zona ditetapkan sebagai zona default. 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
Secara default, semua antarmuka jaringan diberi zona default. Untuk memeriksa zona apa yang digunakan oleh antarmuka jaringan Anda, ketik:
sudo firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
Output di atas memberi tahu kita bahwa kedua antarmuka eth0
dan eth1
ditugaskan ke zona publik.
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 ditetapkan sebagai default, digunakan oleh kedua eth0
dan eth1
antarmuka. Juga, koneksi yang terkait dengan klien DHCP dan SSH diperbolehkan.
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 Zona Antarmuka #
Anda dapat dengan mudah mengubah Zona Antarmuka dengan menggunakan --zone
opsi dalam kombinasi dengan --change-interface
pilihan. Perintah berikut akan menetapkan eth1
antarmuka ke zona kerja:
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 ke rumah, Anda harus menjalankan perintah berikut:
sudo firewall-cmd --set-default-zone=home
Verifikasi perubahan dengan:
sudo firewall-cmd --get-default-zone
home
Membuka Port atau Layanan #
Dengan FirewallD, Anda dapat mengizinkan lalu lintas untuk port tertentu berdasarkan aturan standar 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
Jika Anda ingin port 80 tetap terbuka setelah reboot, Anda harus mengetikkan perintah yang sama sekali lagi tetapi kali ini dengan --permanent
pilihan:
sudo firewall-cmd --permanent --zone=public --add-service=http
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 menambahkan layanan. Cukup gunakan --remove-service
alih-alih --add-service
pilihan:
sudo firewall-cmd --zone=public --remove-service=http --permanent
Perintah di atas menghapus layanan http dari konfigurasi permanen zona publik.
Bagaimana jika Anda menjalankan aplikasi seperti Plex Media Server yang tidak tersedia layanan yang sesuai?
Dalam situasi seperti ini, Anda memiliki dua pilihan. Anda dapat membuka port yang sesuai atau menentukan layanan FirewallD baru.
Misalnya, Server Plex mendengarkan pada port 32400 dan menggunakan TCP, untuk membuka port di zona publik untuk sesi saat ini gunakan --add-port=
pilihan:
sudo firewall-cmd --zone=public --add-port=32400/tcp
Protokol dapat berupa tcp
atau udp
.
Untuk memverifikasi bahwa port telah berhasil ditambahkan, gunakan --list-ports
pilihan:
sudo firewall-cmd --zone=public --list-ports
32400/tcp
Untuk menjaga port 32400
buka setelah reboot, tambahkan aturan ke pengaturan permanen dengan menjalankan perintah yang sama menggunakan --permanent
pilihan.
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=32400/tcp
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 kita 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..
Meneruskan Port dengan Firewalld #
Untuk meneruskan lalu lintas dari satu port ke port atau alamat lain, pertama-tama aktifkan penyamaran untuk zona yang diinginkan menggunakan --add-masquerade
mengalihkan. Misalnya untuk mengaktifkan penyamaran untuk external
jenis zona:
sudo firewall-cmd --zone=external --add-masquerade
- Meneruskan lalu lintas dari satu port ke port lain di server yang sama
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 server 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
- Teruskan lalu lintas ke server lain di 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
Jika Anda ingin membuat penerusan permanen cukup tambahkan --permanent
pilihan.
Membuat Aturan dengan FirewallD #
Dalam contoh berikut, kami akan menunjukkan cara mengkonfigurasi firewall Anda jika Anda menjalankan server web. Kami mengasumsikan server Anda hanya memiliki satu antarmuka eth0
, dan Anda ingin mengizinkan lalu lintas masuk hanya pada port SSH, HTTP, dan HTTPS.
-
Ubah zona default menjadi dmz
Kami akan menggunakan zona dmz (demilitarized) karena secara default hanya mengizinkan lalu lintas SSH. Untuk mengubah zona default ke dmz dan menetapkannya ke
eth0
antarmuka, jalankan perintah berikut:sudo firewall-cmd --set-default-zone=dmz
sudo firewall-cmd --zone=dmz --add-interface=eth0
-
Buka port HTTP dan HTTPS:
Untuk membuka port HTTP dan HTTPS, tambahkan aturan layanan permanen ke zona dmz:
sudo firewall-cmd --permanent --zone=dmz --add-service=http
sudo firewall-cmd --permanent --zone=dmz --add-service=https
Segera lakukan perubahan yang efektif dengan memuat ulang firewall:
sudo firewall-cmd --reload
-
Verifikasi perubahan
Untuk memeriksa jenis pengaturan konfigurasi zona dmz:
sudo firewall-cmd --zone=dmz --list-all
dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Output di atas memberitahu kita bahwa dmz adalah zona default, diterapkan pada
eth0
antarmuka dan port ssh (22) http (80) dan https (443) terbuka.