Cara Blokir Akses Berdasarkan GeoIP di Rocky Linux

Image generated by ChatGPT

Panduan ini tentu tidak hanya untuk Rocky Linux saja, namun OS Linux yang lain seperti Redhat, Oracle Linux, CentOS Linux, Alma Linux, dan Redhat derivative lainnya.

Goal dari tulisan ini adalah membatasi akses ke server hanya dari IP negara (GeoIP) tertentu saja. Misalnya hanya dari IP Indonesia saja. Selain dari IP Indonesia, tidak bisa diakses

Contohnya untuk membatasi akses Zimbra Mail Server

Versi Rocky Linux yang digunakan sebagai contoh pada tulisan ini adalah versi 8. So, kita langsung saja install

1. Instalasi dependensi

yum install gcc gcc-c++ kernel-modules kernel-core kernel-headers kernel-devel perl-Net-CIDR-Lite perl-Text-CSV_XS elfutils-libelf-devel iptables-services

2. Download dan extract xtables-addons

cd /tmp/
wget -c https://inai.de/files/xtables-addons/xtables-addons-3.27.tar.xz
tar -xvf xtables-addons-3.27.tar.xz

3. Hapus semua ektension obj-$ kecuali xt_geoip

Karena hanya membutuhkan GeoIP, ektension yang lainnya dihapus

cd xtables-addons-3.27
vi extensions/Kbuild

Lihat contoh di bawah ini

[root@localhost xtables-addons-3.27]# cat extensions/Kbuild
# -*- Makefile -*-

include ${XA_ABSTOPSRCDIR}/mconfig
-include ${XA_ABSTOPSRCDIR}/mconfig.*

obj-m                    += compat_xtables.o

obj-${build_geoip}       += xt_geoip.o

-include ${M}/*.Kbuild
-include ${M}/Kbuild.*

4. Compile dan install xtables-addons

./configure
make
make install

Jika mengalami kendala pada saat compile, pastikan UEFI dinonaktifkan. Bisa dicek dengan perintah berikut

sudo mokutil --sb-state

Contoh hasilnya

[root@localhost xt_geoip]# sudo mokutil --sb-state
EFI variables are not supported on this system

Jika menggunakan VMware, ikuti panduan ini untuk menonaktifkan UEFI: https://knowledge.broadcom.com/external/article/377377/enable-or-disable-uefi-secure-boot-for-a.html

5. Aktifkan modul xt_geoip

modprobe xt_geoip

6. Buat account di https://www.maxmind.com

Setelah membuat account di maxmind.com, klik Manage License Keys dan generate a new license key. Simpan Account ID dan License Key untuk download GeoIP di tahapan berikutnya.

7. Membuat direktori GeoIP

mkdir /usr/share/xt_geoip/

8. Download GeoIP database

cd /usr/share/xt_geoip/
wget -q -O GeoLite2-Country-CSV.zip "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=INSERT-LICENSE-KEY-FROM-MAXMIND&suffix=zip"
unzip GeoLite2-Country-CSV.zip
cp GeoLite2-Country-CSV*/GeoLite2-Country-Blocks-IPv4.csv /usr/share/xt_geoip/
wget -O dbip-country-lite.csv.gz "https://download.db-ip.com/free/dbip-country-lite-$(date +'%Y-%m').csv.gz"
gunzip dbip-country-lite.csv.gz

Catatan: Silakan ganti INSERT-LICENSE-KEY-FROM-MAXMIND

9. Compile GeoIP database

/tmp/xtables-addons-3.27/geoip/xt_geoip_build -D /usr/share/xt_geoip/ GeoLite2-Country-Blocks-IPv4.csv

10. Buat rule iptables

iptables -A INPUT -s 127.0.0.0/8 -j ACCEPT
iptables -A INPUT -s IP-OF-MY-ZIMBRA -j ACCEPT
iptables -A INPUT -m geoip ! --src-cc ID -p tcp -m multiport --dport 80,110,143,443,465,587,993,995,7071 -j DROP

Jika ingin mengizinkan kode negara lain, gunakan koma. Sebagai contoh saya ingin mengizinkan akses dari Singapore juga.

iptables -A INPUT -m geoip ! --src-cc ID,SG -p tcp -m multiport --dport 80,110,143,443,465,587,993,995,7071 -j DROP

11. Iptables persistent

Agar rule iptables otomatis terload ketika booting, install iptables-services

yum install iptables-services

12. Simpan, aktifkan autostart dan restart

service iptables save
systemctl enable iptables
systemctl restart iptables

Sekarang coba akses Zimbra dari IP negara yang diizinkan dan tidak diizinkan. Atau coba test menggunakan tools untuk cek port: https://mxtoolbox.com/TCPLookup.aspx atau yang ini: https://www.yougetsignal.com/tools/open-ports/

Silakan dicoba 🙂

Ahmad Imanudin, Tinggal di Bekasi. Bekerja sebagai salah satu staff di PT. Excellent Infotama Kreasindo. Dapat dihubungi pada alamat surel ahmad [at] imanudin.com

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

You might also like
Menghapus Antrian Email yang Tidak Valid

Menghapus Antrian Email yang Tidak Valid

Cara Install Proxmox Mail Gateway pada Container LXC

Cara Install Proxmox Mail Gateway pada Container LXC

Setup LXC dengan Storage Backend LVM

Setup LXC dengan Storage Backend LVM

Stay Connected
Ramadan Challenge : Menghapal Surat Al-Mulk
Membangun Linux Active Directory Dengan Samba4 Pada Redhat/CentOS Part 5 : Konfigurasi Dynamic DNS & Kerberos
Link Download ZeXtras Migration Tools
Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 1,759 other subscribers
Categories