
PENJELASAN TENTANG FIREWALLD.
Firewalld menyediakan firewall yang dikelola secara dinamis dengan dukungan untuk zona jaringan / firewall yang menentukan tingkatan kepercayanan koneksi jaringan atau antarmuka jaringan.
System ini juga memiliki dukungan untuk IPv4, pengaturan firewall IPv6, ethernet bridge dan IP sets. Juga tersedia pemisahaan antara opsi konfigurasi runtime dan permanen.
Selain itu tersedia juga antarmuka untuk layanan atau aplikasi untuk menambahkan aturan firewall secara langsung.
Model firewall lama contohnya iptables dengan antarmuka sistem-config-firewall / lokkit adalah statis dan setiap perubahan memerlukan pemuatan ulang firewall secara penuh.
Termasuk dengan cara mengosongkan modul kernel netfilter dan memuat modul-modul lain yang diperlukan untuk konfigurasi baru.
Mengosongkan modul merusak firewall stateful dan koneksi yang telah berjalan.
Berbeda dengan firewalld yang mengelola firewall secara dinamis dan menerapkan perubahan tanpa memulai ulang seluruh firewall.Karenanya tidak perlu memuat ulang semua modul kernel firewall.
Tetapi menggunakan firewalld mengharuskan semua modifikasi firewall dilakukan dibelakang layar dan untuk memastikan bahwa keadaan di daemon dan firewall di kernel sudah sinkron.
Firewalld tidak dapat menguraikan aturan firewall yang ditambahkan oleh baris-baris perintah melalui iptables dan ebtables.
Selain itu firewalld juga menyediakan informasi tentang pengaturan firewall aktif saat ini melalui D-BUS dan juga menerima perubahan melalui D-BUS menggunakan metode otentikasi PolicyKit.
Jadi, firewalld adalah firewall yang menggunakan system zona dan services serta mengabaikan chain dan rule untuk melakukan operasi dan dapat mengelola aturan secara dinamis yang memungkinkan pembaruan dan modifikasi tanpa memutus sesi dan koneksi yang ada.
Di artikel ini saya akan menjelaskan metode atau cara untuk membatasi akses ke server yang melalui jaringan publik terutama akses ke service seperti SSH dan MYSQL, akan tetapi saya tetap memperbolehkan akses dari jaringan publik ke services HTTP/HTTPS.
Untuk melakukannya disini saya menggunakan 2 macam metode yaitu dengan firewalld Rich Rule dan metode IPset.
Pengecekan zona firewall
Firewalld membagi zona menjadi beberapa bagian dan kitapun bisa menambahkan custom zona sendiri, tapi biasanya zona yang telah ada sudah mencukupi kebutuhan firewall dari yang sederhana sampai tingkat menengah.
PERINGATAN: Pastikan ketika melakukan tutorial ini anda dapat mengakses server anda secara fisik atau melalui vmware console (jika ini adalah mesin virtual), karena ada kemungkinan jika anda melakukan typo atau salah pengetikan mengakibatkan ter-lockout atau terblokir oleh firewall rule yang salah.
Melihat zona yang ada di system.
$ sudo firewall-cmd --get-zones block dmz drop external home internal public trusted work
Kita akan menggunakan 2 zona yang akan di aktifkan yaitu zona DROP dan zona TRUSTED.
Kondisi saat ini hanya zona PUBLIC yang aktif dan sudah ada service yang aktif di zona tersebut.
$ sudo firewall-cmd --list-all --zone=public public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: dhcpv6-client http https mysql ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Berikut adalah status zona drop dan trusted.
$ sudo firewall-cmd --zone=drop --list-all && sudo firewall-cmd --zone=trusted --list-all drop target: DROP icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: trusted target: ACCEPT icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Seperti yang terlihat kedua zona tidak aktif dan tidak ada service yg berjalan di zona-zona tersebut.
Saatnya memindahkan zona aktif dari public ke drop.
$ sudo firewall-cmd --set-default-zone=drop
Semoga setelah menjalankan perintah di atas anda masih bisa mengakses ssh shell melalui jaringan ha..ha..
Setelah melakukan perubahan zona default maka zona drop menjadi aktif dan zona public non aktif.
Pastikan tidk ada service yang berjalan di zona drop jika masih ada silahkan di hapus terlebih dahulu karena akan mengganggu aturan firewall yang akan kita buat, hapus dengan perintah.
$ sudo firewall-cmd --zone=drop --remove-service=nama_service
Metode firewalld rich rules
Zona drop secara default akan memblokir semua koneksi dari luar, oleh karena nya kita akan membuatkan 3 buah aturan rich rule yang memperbolehkan semua koneksi dari luar untuk bisa mengakses web server dalam hal ini port 80 dan 443 dan shell ssh di port 22.
Perintahkan adalah sebagai berikut.
$ sudo firewall-cmd --zone=drop --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="http" accept' $ sudo firewall-cmd --zone=drop --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="https" accept' $ sudo firewall-cmd --zone=drop --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="ssh" accept'
Lihat kembali status dari zona drop apakah rich rule yang kita tambahkan diatas sudah masuk ke dalam zona tersebut.
$ sudo firewall-cmd --list-all --zone=drop drop (active) target: DROP icmp-block-inversion: no interfaces: ens160 sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="0.0.0.0/0" service name="http" accept rule family="ipv4" source address="0.0.0.0/0" service name="https" accept rule family="ipv4" source address="0.0.0.0/0" service name="ssh" accept
Sampai disini seharusnya web server sudah bisa di akses dari ip manapun.
Kita simpan konfigurasi runtime secara permanen, dengan cara.
$ sudo firewall-cmd --runtime-to-permanent
Metode firewalld dengan ipset
Rule firewalld dengan rich rules sudah berjalan dengan sukses, tersisa akses ssh dan mysql yang akan kita sedikit amankan dengan metode IPset.
Kalau kita lihat log ssh server banyak sekali proses otentikasi yang gagal ini di sebabkan banyaknya bot internet yang mencoba masuk dan melakukan bruteforce ke service ssh, dan jika kita lihat rata-rata ip pelakunya berasal dari luar negeri karena saya tahu para hacker dan cracker indonesia baik-baik, jikalau sedikit nakal pun main nya di luar tidak di negara sendiri.
Langkah awal adalah mengumpulkan data ip address country indonesia (ID), cara nya sudah pernah saya bagikan di artikel saya beberapa tahun yang lalu, silahkan di baca ambil ip address indonesia di sini.
Jika sudah didapat list ip nya,rubah nama berkas iptables-whitelist.txt menjadi idip.txt.
Pindahkan berkas idip.txt ke direktory /var/lib/firewalld/, setelah itu mulai buat table ipset baru dengan nama indoip.
$ sudo firewall-cmd --permanent --new-ipset=indoip --type=hash:net --option=family=inet
Daftarkan isi berkas /var/lib/firewalld/idip.txt ke dalam table ipset indoip.
firewall-cmd --permanent --ipset=indoip --add-entries-from-file=/var/lib/firewalld/idip.txt
Kemudian daftarkan lagi ipset indoip sebagai source ip ke dalam zona trusted, kenapa harus ke zona trusted karena di zona ini default nya adalah semua koneksi akan di ACCEPT.
$ sudo firewall-cmd --permanent --zone=trusted --add-source=ipset:indoip
Rule ipset tidak akan aktif sebelum kita melakukan reload firewall dan proses reload akan memakan waktu lumayan lama dikarenakan banyak nya ip address yang diproses.
Silahkan lakukan reload.
$ sudo firewall-cmd --reload
Saya melakukan remote ssh dari ip indonesia harusnya koneksi ssh tidak terblokir.
Saatnya untuk membuang rich rule ssh di zona drop,
$ sudo firewall-cmd --permanent --zone=drop --remove-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="ssh" accept'
Lakukan reload terakhir kali.
$ sudo firewall-cmd --reload
Saat ini menurut teory koneksi dari luar negeri yang mengakses ssh dan mysql di server kita akan di tolak kecuali koneksi dari indonesia, cara mengecek nya adalah dengan melakukan port scanner ke port ssh (22) dan mysql (3306).
Kita bisa gunakan online scanner jika hasilnya adalah filtered maka bisa di nyatakan berhasil, port scanner online https://www.ipvoid.com/port-scan/

Wasalam.