Hai, Sobat Jagoan! Salah satu tindakan pencegahan mengamankan akses server dari internet adalah membatasi aksesnya berdasarkan letak geografis. Praktik ini umumnya digunakan untuk mencegah akses dari negara yang tidak relevan dengan layanan atau pengguna server, karena sering kali lalu lintas asing yang tidak dikenal bisa menjadi sumber serangan seperti brute force, spam, atau port scanning. Dengan membatasi akses hanya dari negara tertentu, kamu bisa mengurangi risiko keamanan dan memperkuat kontrol terhadap siapa saja yang bisa menjangkau server kamu.
Prasyarat
- Memiliki hosting VPS Rocky Linux aktif
- Pastikan firewalld sudah terinstal dan aktif. Lihat cara installnya pada Cara Setting Firewall di Rocky Linux
- Memiliki akses member area
Step 1: Buat Koneksi SSH VPS
Pertama, buat koneksi SSH ke VPS kamu melalui terminal. Jika menggunakan sistem operasi Windows, kamu bisa menggunakan PuTTY.
Detail informasi awal layanan kamu bisa diakses pada Informasi Awal Layanan VM
Step 2: Menginstal dan Konfigurasi xtables-addons
Install dependensi yang dibutuhkan. Tapi perbarui dulu package sistem dulu.
sudo dnf update -y
sudo dnf install epel-release -y
sudo 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 pkg-config -y
Step 3: Download dan ekstrak xtables-addons
xtables-addons adalah kumpulan modul tambahan untuk iptables. Di dalamnya tedapat xt_geoip untuk filtering berdasarkan lokasi geografis
# Masuk ke direktori /tmp untuk mengunduh file
cd /tmp/
# Mengunduh xtables-addons
wget -c https://inai.de/files/xtables-addons/xtables-addons-3.27.tar.xz
# Mengekstrak file yang diunduh
tar -xvf xtables-addons-3.27.tar.xz
# Masuk ke direktori xtables-addons-3.27
cd xtables-addons-3.27
Step 4: Edit file xt_geoip (opsional tapi disarankan)
Pada artikel ini hanya ingin mengompilasi modul xt_geoip dan mengabaikan yang lainnya, kamu bisa melakukan modifikasi pada file Kbuild. Ini bersifat opsional.
vi extensions/Kbuild
Tekan huruf ‘i’ untuk masuk mode edit. Kemudian edit menjadi seperti ini:

Simpan dan keluar dengan tekan Esc lalu ketikkan :wq dan Enter.
Step 5: Compile dan Install xtables-addons
Sebelum melanjutkan compilasi, pastikan bahwa xtables terinstal dan bisa ditemukan oleh pkg-config.
pkg-config --modversion xtables
Kalau belum terinstal, instal dulu peket yang diperlukan untuk kompilasi xtables-addons. Kamu kembali ke terminal root dulu dengan command:
#kembali ke root
cd
#install dependensi
sudo dnf install iptables-devel -y
Lalu, kamu jalankan lagi perintah cek xtables sebelumnya nanti akan ditampilkan versi xtables.
Contoh output:
[root@tutorial ~]# pkg-config –modversion xtables
1.8.5
Kalau xtables sudah terinstal, jalankan command untuk mengcompile. Pastikan sudah masuk ke direktori xtables-addons pada step ke 3 sebelumnya.
#Jalankan konfigurasi
./configure
#Kompilasi modul
make
#Install modul
make install
Kalau muncul error seperti ini saat menjankan perintah compile:
make[2]: *** /lib/modules/4.18.0-553.16.1.el8_10.x86_64/build: No such file or directory. Stop.
Itu artinya versi kernel-devel yang terinstal tidak cocok dengan kernel yang sedang digunakan. Kamu periksa versi kernel yang digunakan dengan command:
#mengecek kernel yang digunakan
uname -r
Contoh output:
kernel-devel-4.18.0-553.16.1.el8_10.x86_64
Lalu, periksa versi kernel devel (kernel yang terinstal) dengan command:
rpm -q kernel-devel
Contoh output:
kernel-devel-4.18.0-553.51.1.el8_10.x86_64
Kalau tidak sama, install kernel yang sesuai dengan versi kernel yang digunakan. Jadi, jalankan command dibawah ini agar sama dengan kernel yang digunakan.
sudo dnf install kernel-devel-4.18.0-553.16.1.el8_10.x86_64
Ingat ya, versinya harus sama persis dengan hasil uname -r
Lalu hapus kernel versi lama. Misalnya:
sudo rpm -e kernel-devel-4.18.0-553.51.1.el8_10.x86_64
Setelah itu, kembali ke direktori xtables-addons pada step ke 3 sebelumnya dan jalankan command:
make clean
Sampai di sini, kamu bisa mulai compile ulang xtables_addons.
Step 6: Aktifkan Modul xt_geoip
sudo modprobe xt_geoip
Step 7: Buat Direktori xt_geoip
sudo mkdir -p /usr/share/xt_geoip
cd /usr/share/xt_geoip
Step 8: Download Database GeoIP
- Dari MaxMind (perlu akun dan license key). Sebelumnya, MaxMind adalah penyedia database GeoIP resmi. Kamu perlu membuat akun terlebih dahulu di https://www.maxmind.com lalu generate license key.
wget -q -O GeoLite2-Country-CSV.zip "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=MASUKKAN_LICENSE_KEY&suffix=zip"
unzip GeoLite2-Country-CSV.zip
cp GeoLite2-Country-CSV*/GeoLite2-Country-Blocks-IPv4.csv .
Ganti MASUKKAN_LICENSE_KEY dengan milikmu dari maxmind.com
- Dari DB-IP (alternatif gratis). Jika kamu tidak ingin menggunakan MaxMind atau kesulitan membuat akun, kamu bisa pakai DB-IP, meskipun datanya tidak seakurat MaxMind.
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
Kemudian, compile database GeoIP.
/tmp/xtables-addons-3.27/geoip/xt_geoip_build -D /usr/share/xt_geoip/ GeoLite2-Country-Blocks-IPv4.csv
Gunakan file dbip-country-lite.csv jika kamu ingin memakai DB-IP.
Step 9: Buat Rule iptables Berdasarkan Negara
# Izinkan localhost
iptables -A INPUT -s 127.0.0.0/8 -j ACCEPT
# Izinkan IP server kamu, misalnya
iptables -A INPUT -s 203.0.0.0 -j ACCEPT
# Blokir selain dari Indonesia
iptables -A INPUT -m geoip ! --src-cc ID -p tcp -m multiport --dport 80,110,143,443,465,587,993,995,7071 -j DROP
# Contoh: Izinkan juga Singapura
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
Step 10: Simpan Rule dan Aktifkan Otomatis Ketika Booting
sudo service iptables save
sudo systemctl enable iptables
sudo systemctl restart iptables
Output:

Step 11: Cek Apakah xt_geoip Aktif
lsmod | grep xt_geoip
Outputnya:
[root@tutorial xt_geoip]# lsmod | grep xt_geoip
xt_geoip 16384 2
Step 12: Cek dan Uji Akses
Sekarang kamu bisa testing akses Zimbra dari country code yang diizinkan dan tidak diizinkan. Kamu juga bisa gunakan tools berikut untuk mengecek portnya: https://mxtoolbox.com/TCPLookup.aspx
atau yang ini https://www.yougetsignal.com/tools/open-ports/
Itulah cara memblokir akses berdasarkan GeoIP di Rocky Linux. Dengan langkah-langkah di atas, kamu bisa memperkuat keamanan server dan meminimalkan potensi ancaman dari negara-negara yang tidak perlu mengakses servermu. Pastikan untuk selalu mengecek IP yang perlu diizinkan agar layanan tetap berjalan lancar. Selamat mencoba dan semoga server kamu makin aman!
Kalau ada yang masih bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting ya, Sob!
Hai, Sob! PostgreSQL adalah database open-source yang powerful dan banyak digunakan untuk aplikasi berbasis web. Biasanya PostgreSQL di-install di Rocky Read more
Hai, Sob! SFTP (SSH File Transfer Protocol) adalah cara aman buat transfer file antara komputer lokal dan server. Berbeda dari Read more
Hai, Sob! Kalau kamu ingin menjalankan aplikasi berbasis PHP di Rocky Linux, kamu butuh dua komponen utama: PHP itu sendiri Read more
Hai, Sob! Nginx adalah web server alternatif yang ringan dan cepat dari Apache yang sering digunakan untuk melayani banyak permintaan Read more