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-typesKonfigurasi IP Set #
Membuat IP Set Baru #
firewall-cmd --permanent --new-ipset=bad_ip --type=hash:ipMembuat 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_ipMenampilkan Daftar IP Set #
firewall-cmd --permanent --get-ipsetsMelihat Informasi IP Set #
firewall-cmd --permanent --info-ipset=bad_ipMenambahkan Entri ke IP Set #
firewall-cmd --permanent --ipset=bad_ip --add-entry=192.168.0.2Menambahkan banyak entri sekaligus dari file:
firewall-cmd --permanent --ipset=bad_ip --add-entries-from-file=iplist.txtMenampilkan Entri dalam IP Set #
firewall-cmd --permanent --ipset=bad_ip --get-entriesMenghapus Entri dari IP Set #
firewall-cmd --permanent --ipset=bad_ip --remove-entry=192.168.0.2Menghapus IP Set #
firewall-cmd --permanent --delete-ipset=bad_ipMenambahkan 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_ipReload firewalld agar perubahan diterapkan:
firewall-cmd --reloadMenggunakan 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 DROPReload firewalld:
firewall-cmd --reloadMenggunakan 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=blocknetExample 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.10hash: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,REDhash: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,80hash: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.20hash: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/24hash: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:55hash: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/24hash: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,eth0hash: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/8hash: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,80hash: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