*FirewallD* adalah perangkat lunak untuk mengelola firewall di Linux yang mendukung fitur zones (zona jaringan) untuk menentukan tingkat kepercayaan koneksi.
-Konsep FirewallD-
FirewallD menggunakan zones dan services, dibandingkan dengan iptables yang menggunakan chain dan rules. Berdasarkan pada zones dan services, kita dapat mengontrol koneksi jaringan apa yang diizinkan dan tidak diizinkan masuk atau keluar dari sistem.
FirewallD Zones
Zones adalah kumpulan aturan yang telah ditetapkan, koneksi jaringan apa yang harusnya diizinkan berdasarkan tingkat kepercayaan pada jaringan yang terhubung ke sistem. Kita dapat menetapkan nama interface jaringan dan sumber jaringan ke dalam zones.
Di bawah ini zones yang tersedia pada FirewallD yang disusun berdasarkan tingkat kepercayaan dari tidak terpercaya ke terpercaya.
1. *drop:* Semua koneksi jaringan yang masuk didrop tanpa adanya notifikasi atau pesan error. Hanya koneksi jaringan yang keluar dari sistem yang diizinkan. 2. *block:* Semua koneksi jaringan yang masuk direject dengan pesan /icmp-host-prohibited/ untuk IPv4 dan /icmp6-adm-prohibited/ untuk IPv6. Hanya koneksi jaringan yang keluar yang diizinkan. 3. *public:* Jaringan publik, jaringan yang tidak bisa dipercaya. Kita dapat memilih koneksi jaringan apa yang diizinkan. 4. *external:* Jaringan eksternal, jika kita menggunakan Linux sebagai gateway atau router. Dikonfigurasi sebagai NAT masquerading. Hanya trafik yang dipilih yang diizinkan. 5. *internal:* Digunakan pada jaringan internal, saat Linux berfungsi sebagai gateway atau router. Sistem lain pada jaringan internal secara umum dapat dipercaya, hanya koneksi jaringan yang dipilih yang diizinkan. 6. *dmz:* Demilitarized zone, jika kita ingin memberikan akses terhadap services ke jaringan publik. Hanya koneksi jaringan yang dipilih saja yang diizinkan. 7. *work:* Zona yang diperuntukkan jaringan internal kantor. Semua sistem dalam jaringan kantor dapat dipercaya, hanya koneksi jaringan yang dipilih yang diizinkan. 8. *home:* Zona yang diperuntukkan jaringan internal rumah. Semua sistem dalam jaringan kantor dapat dipercaya, hanya koneksi jaringan yang dipilih yang diizinkan. 9. *trusted:* Zona yang paling terbuka, semua sistem pada jaringan dipercaya, dan semua koneksi jaringan diizinkan.
-Install FirewallD-
Secara default FirewallD sudah terinstall di CentOS 7, tetapi jika belum terinstall jalankan perintah di bawah ini untuk install.
[INPUT]1 yum install firewalld
Aktifkan service FirewallD pada saat boot lalu jalankan
[INPUT]1 2 3 systemctl start firewalld systemctl enable firewalld systemctl status firewalld
Mengecek status firewall
[INPUT]1 firewall-cmd –state
Hasilnya adalah /running/ atau /not running/.
-Konfigurasi Zones-
Menampilkan semua zones
[INPUT]1 firewall-cmd –get-zones
Hasilnya
[INPUT]1 block dmz drop external home internal public trusted work
Membuat zone baru
[INPUT]1 firewall-cmd –permanent –new-zone=namazone
Menghapus zone
[INPUT]1 firewall-cmd –permanent –delete-zone=namazone
Melihat seluruh zone beserta konfigurasinya
[INPUT]1 firewall-cmd –list-all-zones
Hasilnya
[INPUT]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 31 32 33 34 35 36 37 38 39 40 41 42 … external target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: protocols: masquerade: yes forward-ports: source-ports: icmp-blocks: rich rules: trusted (active) target: ACCEPT icmp-block-inversion: no interfaces: eth0 sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: work target: default icmp-block-inversion: no interfaces: sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Hanya menampilkan konfigurasi satu zone, misalnya zone /public/.
[INPUT]1 firewall-cmd –zone=public –list-all
Menampilan default zone
[INPUT]1 firewall-cmd –get-default-zone
Hasil dari CentOS yang saya gunakan adalah /trusted/.
Mengganti default zone
[INPUT]1 firewall-cmd –set-default-zone=public
Menampilkan zones yang aktif
[INPUT]1 firewall-cmd –get-active-zone
Hasilnya
[INPUT]1 2 public interfaces: eth0
Zone yang aktif bisa lebih dari satu zone, setiap zone minimal ada satu interface jaringan.
[INPUT]1 2 3 4 home interfaces: eth0 public interfaces: eth1
Menambahkan interface pada zone
[INPUT]1 firewall-cmd –zone=public –add-interface=eth0
Mengubah interface pada zone
[INPUT]1 firewall-cmd –zone=public –change-interface=eth1
Menampilkan zone dari interface
[INPUT]1 firewall-cmd –get-zone-of-interface=eth0
-Konfigurasi Services-
Menampilkan nama services yang didukung oleh FirewallD
[INPUT]1 firewall-cmd –get-services
Hasilnya
[INPUT]1 RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nfs3 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
Menampilkan services pada zone
[INPUT]1 firewall-cmd –zone=public –list-services
Hasilnya
[INPUT]1 ssh dhcpv6-client
Menambahkan service pada zone
[INPUT]1 firewall-cmd –zone=public –add-service=http
Tambahkan opsi /–permanent/ agar service yang sudah ditambahkan tetap ada setelah reboot
[INPUT]1 firewall-cmd –permanent –zone=public –add-service=http
Reload konfigurasi firewall setelah melakukan konfigurasi, tapi jika tanpa opsi /–permanent/ konfigurasi itu akan hilang setelah reload.
[INPUT]1 firewall-cmd –reload
Menghapus service
[INPUT]1 firewall-cmd –zone=public –remove-service=http
Jika nama services yang ingin dimasukkan pada zone tidak tersedia secara default, kita dapat menggunakan nomor port dari service tersebut atau membuat nama service baru.
File deskripsi services berada di direktori //usr/lib/firewalld/services// dengan ektensi file /xml/.
Membuka isi file /ssh.xml/
[INPUT]1 nano /usr/lib/firewalld/services/ssh.xml
Isinya
[INPUT]1 2 3 4 5 6
Membuat deskripsi service baru dengan mengcopy file service.xml yang sudah ada
[INPUT]1 cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml
Contoh isinya
[INPUT]1 2 3 4 5 6 7
Reload dan cek services
[INPUT]1 2 firewall-cmd –reload firewall-cmd –get-services
-Konfigurasi Port-
Menampilkan port pada satu zone
[INPUT]1 firewall-cmd –zone=public –list-ports
Menambahkan port dari protokol TCP atau UDP
[INPUT]1 2 firewall-cmd –zone=public –add-port=5000/tcp firewall-cmd –zone=public –add-port=5000/udp
Menambahkan range port
[INPUT]1 firewall-cmd –zone=public –add-port=4990-4999/udp
Menghapus port
[INPUT]1 firewall-cmd –zone=public –remove-port=5000/tcp
-Port Forwarding-
Port Forwarding adalah mengalihkan koneksi dari satu port ke port lainnya, misalnya client mengakses port 80 kemudian diteruskan ke port 12345.
[INPUT]1 firewall-cmd –zone=public –add-forward-port=port=80:proto=tcp:toport=12345
Forward port ke server lain
Aktifkan /masquerade/ pada zone, lalu tambahkan rule forward.
[INPUT]1 2 firewall-cmd –zone=public –add-masquerade firewall-cmd –zone=public –add-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9
Jika ingin menghapus /masquerade/ ubah opsi /–add-masquerade/ menjadi /–remove-masquerade/
-Rich Rules-
Rich Rules adalah rule firewall yang lebih luas tidak hanya memasukkan nama services saja tetapi juga IP address.
Menampilkan rich-rules
[INPUT]1 firewall-cmd –list-rich-rules
Izinkan koneksi jaringan dari IP 192.168.0.14
[INPUT]1 firewall-cmd –zone=public –add-rich-rule ‘rule family=ipv4 source address=192.168.0.14 accept’
Tolak koneksi jaringan dari IP 192.168.1.10 pada port 22
[INPUT]1 firewall-cmd –zone=public –add-rich-rule ‘rule family=ipv4 source address=192.168.1.10 port port=22 protocol=tcp reject’
Izinkan koneksi TCP dari IP 10.1.0.3 untuk mengakses port 80 yang kemudian diteruskan ke port 6532
[INPUT]1 firewall-cmd –zone=public –add-rich-rule ‘rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=6532’
Izinkan koneksi TCP pada port 80 yang diteruskan ke IP 172.31.4.2 port 8080 (Masquerade harus aktif pada zone)
[INPUT]1 firewall-cmd –zone=public –add-rich-rule ‘rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=172.31.4.2’
Izinkan network 192.168.0.0/24 mengakses https
[INPUT]1 firewall-cmd –zone=public –add-rich-rule ‘rule family=ipv4 source address=192.168.0.0/24 service name=https accept’
Tambahkan opsi /–permanent/ agar rule tetap ada setelah reload dan reboot sistem. Jika ingin menghapus rich rule, ganti opsi /–add-rich-rule/ menjadi /–remove-rich-rule/.
-IP Set-
IP Set adalah sekumpulan IP address yang digunakan sebagai source rule firewall.
Menampilkan IP Set
[INPUT]1 firewall-cmd –get-ipsets
Membuat IP Set baru dengan nama blacklist
[INPUT]1 2 firewall-cmd –permanent –new-ipset=blacklist –type=hash:ip firewall-cmd –reload
Menambah IP address pada IP Set blacklist
[INPUT]1 2 firewall-cmd –ipset=blacklist –add-entry=192.168.1.11 firewall-cmd –ipset=blacklist –add-entry=192.168.1.12
Menghapus IP address dari IP Set
[INPUT]1 firewall-cmd –ipset=blacklist –remove-entry=192.168.1.12
Menampilkan info IP Set
[INPUT]1 firewall-cmd –info-ipset=blacklist
Menampilkan IP address dari IP Set
[INPUT]1 firewall-cmd –ipset=blacklist –get-entries
IP Set yang sudah dibuat kemudian dimasukkan ke rule sebagai source
[INPUT]1 firewall-cmd –add-rich-rule=’rule source ipset=blacklist drop’
Menghapus IP Set
[INPUT]1 2 firewall-cmd –permanent –delete-ipset=blacklist firewall-cmd –reload
IP Set juga dapat berisi 2 atau lebih network yang berbeda
[INPUT]1 2 3 4 firewall-cmd –permanent –new-ipset=netlist –type=hash:ip firewall-cmd –reload firewall-cmd –ipset=netlist –add-entry=192.168.1.0/24 firewall-cmd –ipset=netlist –add-entry=192.168.2.0/24
selamat mencoba ð