Apa itu Firewalld?
Firewalld adalah solusi manajemen firewall untuk banyak distribusi Linux termasuk, Ubuntu, Debian, CentOS, RHEL dan Fedora. Ini bertindak sebagai antarmuka untuk sistem penyaringan iptables yang disediakan oleh kernel Linux. Ini adalah protokol independen yang berarti mendukung IPv4, IPv6, jembatan ethernet, dan set IP.
Konsep Dasar Firewalld
FirewallD menggunakan zona dan layanan alih-alih rantai dan aturan iptables. Zona adalah seperangkat aturan yang menentukan lalu lintas apa yang harus diizinkan tergantung pada tingkat kepercayaan yang Anda miliki dalam jaringan yang terhubung dengan komputer Anda. Antarmuka jaringan menetapkan zona untuk menentukan perilaku yang harus diizinkan oleh firewall.
Firewalld dikelola menggunakan alat baris perintah firewall-cmd. Ini menyediakan antarmuka untuk mengelola runtime dan konfigurasi permanen.
Zona Firewall
Ada 9 zona yang telah ditentukan sebelumnya di Firewalld tergantung pada tingkat kepercayaan dalam urutan menaik.
Penjelasan singkat dari masing-masing zona dijelaskan di bawah ini:
- Lepaskan : Zona ini memiliki tingkat kepercayaan paling rendah dan digunakan untuk menghentikan semua lalu lintas masuk tanpa mengirimkan pengakuan apa pun kepada pengirim.
- Blokir : Zona ini sangat mirip dengan zona Drop, lalu lintas masuk ditolak dan pengirim mendapat pesan.
- Publik : Mengizinkan lalu lintas dari jaringan publik tertentu.
- Eksternal : Zona ini digunakan ketika sistem Anda bertindak sebagai gateway atau router.
- Internal : Kumpulan aturan yang berlaku untuk komputer di jaringan internal pribadi Anda.
- DMZ : Zona ini adalah tambalan komputer yang terisolasi di jaringan internal Anda yang mungkin tidak mengakses sumber daya internal lainnya.
- Kerja : Zona ini digunakan untuk mesin kerja. Tingkat kepercayaannya tinggi.
- Beranda : Sebagian besar komputer di zona ini saling percaya. Tingkat kepercayaan lebih tinggi dari pekerjaan.
- Tepercaya : Zona ini memiliki tingkat kepercayaan tertinggi. Semua komputer dalam jaringan tepercaya.
Langkah 1 – Menginstal Firewalld
Secara default, Firewalld sudah diinstal sebelumnya di sebagian besar sistem operasi. Tetapi beberapa instalasi OS minimal tidak menyertakan fiJika tidak diinstal, Anda dapat menginstalnya dengan perintah berikut:
sudo yum install firewalld # CentOS/RHEL 8/7/6 sudo dnf install firewalld # Fedora and CentOS/RHEL 8 sudo apt install firewalld # Ubuntu and Debian
Setelah menginstal firewalld, Anda harus memulai dan mengaktifkannya untuk memulai setelah sistem di-boot ulang.
sudo systemctl start firewalld sudo systemctl enable firewalld
Jalankan perintah berikut untuk memverifikasi status firewalld
systemctl status firewalld [OR] firewall-cmd --state
Langkah 2 – Bekerja dengan Zona dan Layanan
Secara default, publik adalah zona default di firewalld dan semua antarmuka jaringan dikonfigurasi dengan zona publik. Anda dapat membuat daftar zona default dengan perintah berikut:
firewall-cmd --get-default-zone
Keluaran:
public
Selanjutnya, jalankan perintah berikut untuk mendapatkan daftar zona aktif:
firewall-cmd --get-active-zones
Anda akan mendapatkan output berikut:
public interfaces: eth0 eth1
Untuk mendapatkan daftar semua zona yang tersedia, jalankan perintah berikut:
firewall-cmd --get-zones
Anda akan mendapatkan output berikut:
block dmz drop external home internal public trusted work
Anda dapat membuat daftar semua layanan yang terkait dengan zona publik dengan perintah berikut:
firewall-cmd --list-all
Anda akan mendapatkan output berikut:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Untuk mengubah zona default dari publik menjadi bekerja, jalankan perintah berikut:
firewall-cmd --set-default-zone=work
Anda sekarang dapat memverifikasi zona default Anda dengan perintah berikut:
firewall-cmd --get-default-zone
Keluaran:
work
Anda bisa mendapatkan daftar semua layanan yang tersedia di sistem Anda dengan perintah berikut:
firewall-cmd --get-services
Anda akan mendapatkan output berikut:
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
Langkah 3 – Izinkan dan Tolak Layanan di Firewalld
Anda dapat mengizinkan dan menolak lalu lintas masuk berdasarkan layanan yang telah ditentukan di firewalld.
Misalnya, untuk mengizinkan semua lalu lintas masuk untuk layanan http di zona Publik, jalankan perintah berikut:
firewall-cmd --zone=public --add-service=http
Keluaran:
success
Untuk mengizinkan lalu lintas masuk untuk layanan ftp di zona Publik, jalankan perintah berikut:
firewall-cmd --zone=public --add-service=ftp
Keluaran:
success
Perintah di atas akan menambahkan layanan http dan ftp sementara dan tidak terus-menerus saat reboot. Anda harus menggunakan --permanent
opsi untuk menjadikannya permanen seperti yang ditunjukkan di bawah ini:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=ftp
Selanjutnya, jalankan perintah berikut untuk mengimplementasikan perubahan:
firewall-cmd --reload
Anda sekarang bisa mendapatkan daftar layanan tambahan dengan perintah berikut:
firewall-cmd --permanent --zone=public --list-services
Anda akan melihat output berikut:
cockpit dhcpv6-client ftp http ssh
Anda juga dapat memeriksa informasi detail tentang zona Publik dengan perintah berikut:
firewall-cmd --info-zone public
Keluaran:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ftp http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Jika Anda ingin menghapus/menolak layanan di atas dari firewalld, gunakan --remove-service
pilihan:
firewall-cmd --permanent --zone=public --remove-service=http firewall-cmd --permanent --zone=public --remove-service=ftp
Selanjutnya, jalankan perintah berikut untuk menerapkan perubahan:
firewall-cmd --reload
Langkah 4 – Izinkan dan Tolak Port di Firewalld
Anda juga dapat mengizinkan dan menolak lalu lintas masuk berdasarkan port di firewalld.
Misalnya, izinkan semua lalu lintas masuk pada port 8080 dan 443, jalankan perintah berikut:
firewall-cmd --permanent --zone=public --add-port=443/tcp firewall-cmd --permanent --zone=public --add-port=8080/tcp
Selanjutnya, jalankan perintah berikut untuk menerapkan perubahan:
firewall-cmd --reload
Selanjutnya, verifikasi port yang ditambahkan dengan perintah berikut:
firewall-cmd --permanent --zone=public --list-ports
Keluaran:
443/tcp 8080/tcp
Demikian pula hapus/tolak port di atas dari firewalld, gunakan opsi –remove-port:
firewall-cmd --permanent --zone=public --remove-port=443/tcp firewall-cmd --permanent --zone=public --remove-port=8080/tcp
Selanjutnya, jalankan perintah berikut untuk menerapkan perubahan:
firewall-cmd --reload
Langkah 5 – Penerusan Port dengan Firewalld
Penerusan port adalah proses yang mengalihkan permintaan dari kombinasi IP/port dan mengarahkannya ke IP dan/atau port yang berbeda. Teknik ini memungkinkan mesin jarak jauh untuk terhubung ke layanan tertentu dalam jaringan pribadi.
Sebelum mengonfigurasi penerusan port, Anda harus mengaktifkan masquerade di zona yang diinginkan. Anda dapat mengaktifkannya menggunakan --add-masquerade
pilihan:
firewall-cmd --zone=public --add-masquerade
Selanjutnya, untuk meneruskan lalu lintas dari port 80 ke port 8080 di server yang sama jalankan perintah berikut:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
Jika Anda ingin meneruskan lalu lintas dari port lokal 80 ke port 8080 pada server jauh dengan alamat IP 192.168.1.200 jalankan perintah berikut:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200
Selanjutnya, jalankan perintah berikut untuk menerapkan perubahan:
firewall-cmd --reload
Jika Anda ingin menghapus aturan di atas, ganti –tambahkan dengan –hapus seperti gambar di bawah ini:
firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200 firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080
Kesimpulan
Dalam panduan di atas, Anda mempelajari konsep dasar Firewalld dan bagaimana menerapkannya pada sistem operasi Linux. Saya harap Anda sekarang dapat membatasi lalu lintas masuk yang tidak perlu dengan firewalld.