Cara Setting Firewall dengan FirewallD di CentOS 7

*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   SSH   Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.   

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   Example Service   This is just an example service.  It probably shouldn’t be used on a real system.         

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 🙂

Leave a Reply

Your email address will not be published.