Skip to main content

Manajemen IPSet melalui Firewalld

IP sets pada firewalld berfungsi sebagai source (sumber) untuk memblokir atau mengizinkan sekumpulan alamat IP atau identifier tertentu, seperti:

  • IP Address
  • Port
  • Network
  • Interface (Iface)
  • MAC Address
  • Mark

Metode yang paling direkomendasikan adalah menggunakan IP sets yang dibuat untuk firewall direct rule.

Untuk melihat jenis IP sets yang didukung.

firewall-cmd --get-ipset-types

Konfigurasi IP Set
#

Membuat IP Set Baru
#

firewall-cmd --permanent --new-ipset=bad_ip --type=hash:ip

Membuat IP Set dari File XML
#

Buat file XML, misalnya bad_ip.xml:

<?xml version="1.0" encoding="utf-8"?>
<ipset type="hash:ip">
  <entry>192.168.0.2</entry>
  <entry>192.168.0.3</entry>
  <entry>192.168.0.4</entry>
</ipset>

Kemudian jalankan:

firewall-cmd --permanent --new-ipset-from-file=bad_ip.xml --name=bad_ip

Menampilkan Daftar IP Set
#

firewall-cmd --permanent --get-ipsets

Melihat Informasi IP Set
#

firewall-cmd --permanent --info-ipset=bad_ip

Menambahkan Entri ke IP Set
#

firewall-cmd --permanent --ipset=bad_ip --add-entry=192.168.0.2

Menambahkan banyak entri sekaligus dari file:

firewall-cmd --permanent --ipset=bad_ip --add-entries-from-file=iplist.txt

Menampilkan Entri dalam IP Set
#

firewall-cmd --permanent --ipset=bad_ip --get-entries

Menghapus Entri dari IP Set
#

firewall-cmd --permanent --ipset=bad_ip --remove-entry=192.168.0.2

Menghapus IP Set
#

firewall-cmd --permanent --delete-ipset=bad_ip

Menambahkan IPset ke Zone
#

Anda dapat menambahkan IPset sebagai source ke dalam sebuah zone. Semua lalu lintas dari IP yang tercantum di dalam IPset akan diperlakukan sesuai aturan zona tersebut.

Contoh: menambahkan bad_ip ke zone drop

firewall-cmd --permanent --zone=drop --add-source=ipset:bad_ip

Reload firewalld agar perubahan diterapkan:

firewall-cmd --reload

Menggunakan IPset dengan Direct Rule
#

Selain zona, IPset juga dapat digunakan dengan direct rule untuk kontrol yang lebih spesifik.

Contoh: memblokir semua koneksi masuk dari bad_ip:

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -m set --match-set bad_ip src -j DROP

Reload firewalld:

firewall-cmd --reload

Menggunakan IPset dengan Rich Rules
#

Rich Rules menggunakan sintaks bawaan yang lebih mudah dibaca dan dikelola dibandingkan direct rules. Rich rules juga lebih terintegrasi dengan arsitektur firewalld karena tidak bergantung langsung pada aturan iptables atau nftables.

Contoh: menambahkan IPSet ke rich rules.

firewall-cmd --permanent --new-ipset=blocknet \
    --type=hash:net \
    --option=family=inet \
    --option=hashsize=4096 \
    --option=maxelem=200000

firewall-cmd --permanent --ipset=blocknet --add-entry=152.42.201.0/24

firewall-cmd --permanent \
    --add-rich-rule='rule family="ipv4" source ipset="blocknet" drop'

firewall-cmd --reload

firewall-cmd --info-ipset=blocknet

Example IPset types
#

Firewalld mendukung berbagai jenis IPset dengan kombinasi berbeda (IP, Network, Port, MAC, Iface, Mark). Berikut beberapa contoh penggunaannya:

hash:ip
#

Menyimpan daftar alamat IP individu.

firewall-cmd --permanent --new-ipset=myipset --type=hash:ip
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.1.10

hash:ip,mark
#

Menyimpan pasangan IP dengan mark.

firewall-cmd --permanent --new-ipset=myipset --type=hash:ip,mark
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.1.10,RED

hash:ip,port
#

Menyimpan pasangan IP dengan port tertentu.

firewall-cmd --permanent --new-ipset=myipset --type=hash:ip,port
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.1.10,80

hash:ip,port,ip
#

Menyimpan kombinasi IP sumber, port, dan IP tujuan.

firewall-cmd --permanent --new-ipset=myipset --type=hash:ip,port,ip
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.1.10,80,192.168.2.20

hash:ip,port,net
#

Menyimpan kombinasi IP sumber, port, dan network tujuan.

firewall-cmd --permanent --new-ipset=myipset --type=hash:ip,port,net
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.1.10,80,192.168.2.0/24

hash:mac
#

Menyimpan daftar alamat MAC.

firewall-cmd --permanent --new-ipset=myipset --type=hash:mac
firewall-cmd --permanent --ipset=myipset --add-entry=00:11:22:33:44:55

hash:net
#

Menyimpan daftar network (subnet).

firewall-cmd --permanent --new-ipset=myipset --type=hash:net
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.0.0/24

hash:net,iface
#

Menyimpan pasangan network dan interface.

firewall-cmd --permanent --new-ipset=myipset --type=hash:net,iface
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.0.0/24,eth0

hash:net,net
#

Menyimpan pasangan antar network.

firewall-cmd --permanent --new-ipset=myipset --type=hash:net,net
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.0.0/24,10.0.0.0/8

hash:net,port
#

Menyimpan kombinasi network dengan port tertentu.

firewall-cmd --permanent --new-ipset=myipset --type=hash:net,port
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.0.0/24,80

hash:net,port,net
#

Menyimpan kombinasi network sumber, port, dan network tujuan.

firewall-cmd --permanent --new-ipset=myipset --type=hash:net,port,net
firewall-cmd --permanent --ipset=myipset --add-entry=192.168.0.0/24,80,10.0.0.0/8

Related