Artikel ini menjelaskan cara memblokir lalu lintas yang berasal dari IP negara tertentu, seperti menggunakan database GeoIP dan iptables Linux®. Anda juga dapat menggunakannya untuk mencegah serangan DOS dan DDoS yang berasal dari negara tertentu.
Prasyarat
Pastikan modul GeoIP diinstal dengan iptables-addons.
GeoIP adalah kumpulan alamat IP yang sesuai dengan lokasi geografis yang dipetakan dengan alamat IP yang dialokasikan untuk organisasi, kota, negara bagian, dan negara tertentu.
iptables
adalah utilitas firewall baris perintah yang menggunakan rantai kebijakan untuk mengizinkan atau memblokir lalu lintas. Ketika koneksi mencoba membangun dirinya sendiri di sistem Anda, iptables mencari aturan yang cocok dalam daftarnya. Jika tidak menemukannya, ia menggunakan tindakan default.
Juga, dengan bantuan modul bernama xt_geoip , yang terdiri dari iptables
ekstensi (xtables-addon ) dan GeoIP database, kami dapat melakukan pemfilteran lalu lintas berbasis negara untuk membantu memblokir atau mengizinkan lalu lintas dari negara tertentu.
Tingkatkan dan instal dependensi
Anda perlu memutakhirkan sistem Linux Anda dan menginstal dependensi xtables-addons yang diperlukan. Jalankan perintah berikut yang sesuai dengan distribusi yang Anda jalankan di mesin Anda.
Sistem berbasis Debian (Debian®, sistem operasi Ubuntu®)
apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config# ./configure
Sistem berbasis RedHat (CentOS®, RHEL®, Fedora®)
yum update # yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS# make
Instal xtables-addons
Selanjutnya, instal xtables-addons pada mesin Anda. Unduh tarball terbaru dari situs proyek xtables-addons resmi menggunakan wget
.
Setelah Anda down file, ekstrak tarball. Kemudian kompilasi dan instal di mesin Anda.
# wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz
# tar xf xtables-addons-2.13.tar.xz
# cd xtables-addons-2.13
# ./configure
# make
# make install
Izinkan SeLinux dari memuat modul (Sistem berbasis RedHat)
Distribusi Linux berbasis RedHat® (seperti CentOS, RHEL, Fedora) memiliki selinux
diaktifkan secara default, tetapi Anda harus menyesuaikan selinux
aturan. Jika Anda tidak menjalankan perintah berikut, seLinux
mencegah iptables
dari memuat xt_geoip modul.
# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR --type=lib_t /lib64/xtables/*.so
Instal database GeoIP
Modul bernama xt_geoip dilengkapi dengan xtables-addons ekstensi, yang mengunduh GeoIP database dari MaxMind® dan mengubahnya menjadi susunan biner yang dikenali oleh xt_geoip . Anda harus membangun dan pindah ke jalur yang diperlukan. Dalam contoh ini, jalurnya adalah /usr/share/xt_geoip/
# cd geoip
# ./xt_geoip_dl
# ./xt_geoip_build GeoIPCountryWhois.csv
# mkdir -p /usr/share/xt_geoip/
# cp -r {BE,LE} /usr/share/xt_geoip/
Blokir lalu lintas ke dan dari suatu negara
Sekarang Anda dapat menggunakan geoip
modul dengan salah satu program utilitas firewall Anda, iptables
, atau firewalld
.
Menggunakan Iptables
Bagian ini menyediakan sintaks dasar untuk menggunakan iptables
dan geoip
modul untuk memblokir lalu lintas yang berasal dari atau ditujukan ke suatu negara. Anda harus menggunakan kode ISO3166 dua huruf sebagai ganti negara. Misalnya, gunakan RU
untuk Federasi Rusia, US
untuk Amerika Serikat, IN
untuk India,BR
untuk Brasil, dan seterusnya.
# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
Untuk memblokir lalu lintas masuk dari Kanada (CA) dan Amerika Serikat (AS), gunakan iptables
berikut perintah:
# iptables -I INPUT -m geoip --src-cc CA,US -j DROP
Untuk memblokir semua lalu lintas non-AS yang masuk di server Anda, jalankan perintah berikut:
# iptables -I INPUT -m geoip ! --src-cc US -j DROP
Untuk memblokir lalu lintas keluar yang ditujukan ke China (CN), jalankan perintah berikut:
# iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
Menggunakan firewalld
Jika Anda menjalankan systemd
-sistem berbasis dan memiliki firewalld
sebagai pengontrol frontend untuk iptables
, Anda dapat menggunakan firewalld
berikut ini perintah untuk memblokir lalu lintas:
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc CA,US -j DROP
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP
# firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CN -j DROP