Cara Setting Firewall dengan FirewallD di CentOS 8
FirewallD adalah perangkat lunak untuk mengelola firewall di Linux yang mendukung fitur zones (zona jaringan) untuk menentukan tingkat kepercayaan koneksi.
FirewallD sudah terinstall dan aktif secara default di CentOS 8. Hal tersebut dapat kita verifikasi dengan mengecek service dan statusnya.
1 2 | systemctl status firewalld firewall-cmd --state |
0.Install FirewallD
Jika FirewallD belum terinstall jalankan perintah berikut.
1 | dnf install firewalld |
Aktifkan servicenya dan jalankan.
1 2 3 | systemctl start firewalld systemctl enable firewalld systemctl status firewalld |
Kemudian periksa statusnya apakah sudah running.
1 | firewall-cmd --state |
1.FirewallD Zones
FirewallD memiliki zones, secara sederhannya seperti profile konfigurasi yang sudah ditetapkan, masing-masing memiliki rule tersendiri. Zones ada yang sudah disediakan, tapi kita bisa juga membuat custom zones.
Menampilkan semua nama zones.
1 2 3 | firewall-cmd --get-zones block dmz drop external home internal public trusted work |
Menampilkan semua zones dan konfigurasinya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | firewall-cmd --list-all-zones ... public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: ... work target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules |
Hasil perintah di atas terlihat bahwa public zone merupakan zone yang aktif digunakan.
Bisa juga dengan menggunakan parameter tersendiri untuk menampilkan active zone dan default zone.
1 2 3 4 5 6 7 8 | firewall-cmd --get-active-zones public interfaces: enp0s3 enp0s8 firewall-cmd --get-default-zone public |
Menampilkan konfigurasi satu zone, misalnya public.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
2.Mengijinkan Services
Konfigurasi public zone di atas hanya mengijinkan service yang terdaftar yaitu cockpit, dhcpv6-client, dan ssh. Jadi ketika ingin mengakses service lain misalnya http atau https tidak akan bisa.
Menambahkan service http ke public zone.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --reload firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: cockpit dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
Menampilkan nama service yang bisa dimasukkan ke dalam zone.
1 2 3 | firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns 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 proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client 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 |
Menghapus service dari zone gunakan remove.
1 | firewall-cmd --zone=public --remove-service=http |
3.Mengijinkan Nomor Port
Kalau service yang ingin kita masukkan tidak tersedia nama servicenya atau servicenya tidak menggunakan nomor default port, kita bisa mengijinkan akses ke service tersebut dengan memasukkan nomor portnya.
Misalnya kita ingin mengijinkan akses ke port nomor 5000 untuk protokol TCP dan UDP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | firewall-cmd --zone=public --add-port=5000/tcp --permanent firewall-cmd --zone=public --add-port=5000/udp --permanent firewall-cmd --reload firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: cockpit dhcpv6-client http ssh ports: 5000/tcp 5000/udp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: firewall-cmd --zone=public --list-ports 5000/tcp 5000/udp |
Menghapus port dari public zone.
1 2 3 | firewall-cmd --zone=public --remove-port=5000/tcp --permanent firewall-cmd --zone=public --remove-port=5000/udp --permanent firewall-cmd --reload |
Selamat mencoba 🙂