Peraturan firewalld yang sering dipakai

Setelah waktu yang cukup lama akhirnya bisa memenuhi request mbak Shafira untuk pembahasan firewalld yang merupakan pengganti iptables pada CentOS 7. Terus terang saya masih lebih biasa pakai iptables. 😛 Untungnya peraturan firewall itu bukan hal yang perlu sering dimodifikasi. 😀

Sama seperti tutorial iptables sebelumnya, disini saya akan menuliskan beberapa peraturan firewall yang termasuk sering dibutuhkan. Pahami dulu fungsinya dan pastikan anda membutuhkannya. Karena ini urusannya dengan filter akses ke server maka ada resiko anda sendiri yang terblokir kalau asal menerapkan.

Untuk masalah kesederhanaan memang lebih bagus firewalld karena beberapa aplikasi populer sudah dibuatkan definisinya, cuma belum diaktifkan secara default. Masih perlu dipilih – pilih mana yang diperlukan.

Mengijinkan akses SSH pada port 22

firewall-cmd --zone=public --permanent --add-service=ssh

Mengijinkan akses HTTP pada port 80

firewall-cmd --zone=public --permanent --add-service=http

Mengijinkan koneksi HTTPS pada port 443

firewall-cmd --zone=public --permanent --add-service=https

Memperbolehkan FTP pada port 21

firewall-cmd --zone=public --permanent --add-service=ftp

Memperbolehkan DNS pada port 53

firewall-cmd --zone=public --permanent --add-service=dns

Mengijinkan SMTP pada port 25

firewall-cmd --zone=public --permanent --add-service=smtp

Parameter --permanent berarti aturan yang ditambahkan akan dipasangkan secara… permanen. 😀 Sebenarnya bisa tanpa parameter tersebut, sangat sesuai kalau anda pas uji coba dan takut terjadi masalah kalau ada kesalahan.

Kurang banyak? Bisa dicek sendiri layanan apa saja yang didukung. 😀

ls /usr/lib/firewalld/services
amanda-client.xml     dns.xml                  http.xml          kpasswd.xml      mysql.xml      pop3.xml            rpc-bind.xml      squid.xml        tor-socks.xml
amanda-k5-client.xml  docker-registry.xml      imaps.xml         ldaps.xml        nfs.xml        postgresql.xml      rsyncd.xml        ssh.xml          transmission-client.xml
bacula-client.xml     dropbox-lansync.xml      imap.xml          ldap.xml         ntp.xml        privoxy.xml         samba-client.xml  synergy.xml      vdsm.xml
bacula.xml            freeipa-ldaps.xml        ipp-client.xml    libvirt-tls.xml  openvpn.xml    proxy-dhcp.xml      samba.xml         syslog-tls.xml   vnc-server.xml
ceph-mon.xml          freeipa-ldap.xml         ipp.xml           libvirt.xml      pmcd.xml       ptp.xml             sane.xml          syslog.xml       wbem-https.xml
ceph.xml              freeipa-replication.xml  ipsec.xml         mdns.xml         pmproxy.xml    pulseaudio.xml      smtps.xml         telnet.xml       xmpp-bosh.xml
dhcpv6-client.xml     ftp.xml                  iscsi-target.xml  mosh.xml         pmwebapis.xml  puppetmaster.xml    smtp.xml          tftp-client.xml  xmpp-client.xml
dhcpv6.xml            high-availability.xml    kadmin.xml        mountd.xml       pmwebapi.xml   radius.xml          snmptrap.xml      tftp.xml         xmpp-local.xml
dhcp.xml              https.xml                kerberos.xml      ms-wbt.xml       pop3s.xml      RH-Satellite-6.xml  snmp.xml          tinc.xml         xmpp-server.xml

Ingat, tidak semuanya perlu diaktifkan.

Bagaimana kalau yang nama aplikasi/protokolnya tidak ada dalam daftar? Solusinya ya kita buat sendiri. Anggap saja port SSH yang diganti ke 2615:

firewall-cmd --add-port=2615/tcp --permanent

Setiap kali anda menerapkan peraturan baru jangan lupa prosesnya direload agar konfigurasi terbaca dan diterapkan:

firewall-cmd --reload

Sedangkan soal peraturan default, firewalld ini berkebalikan dengan iptables dimana semuanya diblokir apabila tidak ada aturannya. Jadi secara implisit ya lebih aman.

Terakhir, misal kita ingin tahu peraturan firewalld apa saja yang aktif untuk service bisa pakai ini:

firewall-cmd --list-service

Dan ini untuk port

firewall-cmd --list-port

Semoga bermanfaat. 🙂

12 pemikiran pada “Peraturan firewalld yang sering dipakai

  1. trims berat mas chandra, tahapan ini yang saya tunggu sebelum migrasi ke centos 7 🙂
    berarti tinggal pengaturan fail2ban buat firewalld 🙂
    hmm buat komen agak sulit dengan captcha 🙁

    • Saya lupa, tapi rasanya fail2ban memang kompatibel dengan CentOS 7. Mungkin sudah diupdate supaya bisa kerja dengan firewalld dan systemd. 2 perubahan terbesar kalau pindah dari CentOS 6. 😀

      Terpaksa mbak, banyak spam masuk dan capek ngecekin satu – satu apakah ada komen yang valid. 🙁

  2. lihat satu2 port di file /usr/lib/firewalld/services jadi paham dan ternyata lebih gampang karna sudah ada penjelasannya didalam 🙂
    nah kalau di iptables setelah masukin semua pengaturan biasanya saya tutup semua koneksi dengan perintah :

    iptables -P OUTPUT ACCEPT 
    iptables -P FORWARD DROP
    iptables -P INPUT DROP

    kalau dicentos 7 nggak perlu ya mas? karna saya baca komen mas chandra :

    Sedangkan soal peraturan default, firewalld ini berkebalikan dengan iptables dimana semuanya diblokir apabila tidak ada aturannya. Jadi secara implisit ya lebih aman.

  3. sedikit tips biar nggak capek ketik satu2 pengaturan firewalld, di iptables biasanya saya buat satu script.sh yg isinya pengaturan iptables.
    buat scriptnya:

    vi /usr/local/bin/setfirewall.sh

    beri hak akses filenya biar bisa dieksekusi:

    chmod 775 /usr/local/bin/setfirewall.sh

    jalankan scriptnya:

    /usr/local/bin/setfirewall.sh

    jangan lupa dihapus :

    rm -f /usr/local/bin/setfirewall.sh

    berikut penampakannya di centos 7:
    https://goo.gl/sXUh15
    semoga membantu 🙂

    • Maksudnya mbak buat custom script starter aturan firewalld untuk CentOS 7 ya? 😀

      Eh mbak, kalau diaktifkan sesuai yang dibicarakan maksudnya service – service tersebut bisa diakses dari luar lho. Selain HTTP/HTTPS/SMTP/FTP kok rasanya riskan bisa dibuka publik. Seperti MySQL, Telnet, PostgreSQL dan lain sebagainya.

      Satu tips lagi, kita bisa menambahkan beberapa service sekaligus dalam satu baris:

      firewall-cmd --zone=public --permanent --add-service={ssh,http,https}

      Ini jarang dibahas pas saya mendalami dokumentasinya.

      • wah,,trims infonya mas,, malah lebih cepat lagi cukup satu baris sudah masuk semua peraturannya.

        saya nggak ngerti maksudnya mas, itu riskan dimananya ya? kan kita buka port yang dibutuhkan saja kan mas.

      • Rasanya lebih rapi kalau setiap mau merubah dibuatkan file .xml-nya. Ada nama, deskripsi dan bisa lihat portnya. 😀

        Rentan karena portnya bisa diakses dari luar. Kan ini database MySQL satu lokasi dengan web server kan? Jadi tidak perlu dibuka untuk selain localhost.

  4. Iya betul juga mas, berarti selama ini pengaturan iptables saya salah 😀 pikir saya harus buka port 3306 dll biar bisa diakses ternyata nggak perlu karna sudah default untk localhost, berarti yg perlu dibuka port 587 karna port itu yg dipakai sendgrid, mohon koreksinya mas, sepertinya perlu rekues lagi port yg seharusnya dibuka atau ditutup 😀

    • Pertanyaan bagus mbak. Saya juga baru kepikiran, ini kan port 587 dari SendGridnya, bukan dari server kita. Apa perlu port yang sama dari pemanggil (asal) ke yang dipanggil (tujuan). Apa hubunganya 1 ke 1 gitu.

      Kalau tebakan saya, tidak perlu dibuka karena VPS kita yang memulai koneksi dan langsung menargetkan ke port 587 di host tujuan.

      Belum sempat trial bener ga nya. 😀

  5. dear admin servernesia.
    saya pemula di vps/ubuntu.
    saya sering membaca-baca di blog ini.

    saya menggunakan easy engine. apakah firewalld ini wajib juga di pasang?
    karena saya sendiri belum begitu memahami fungsinya walaupun sudah browsing kesana sini.

    terima kasih

Tinggalkan komentar