Tugas mblokir lalu lintas saka negara tartamtu katon prasaja, nanging kesan pisanan bisa ngapusi. Dina iki kita bakal pitutur marang kowe carane iki bisa dileksanakake.
prasejarah
Asil telusuran Google babagan topik iki nguciwani: umume solusi wis suwe "busuk" lan kadhangkala misale jek topik iki wis disimpen lan dilalekake ing salawas-lawase. Kita wis combed liwat akèh cathetan lawas lan siyap kanggo nuduhake versi modern saka instruksi.
Disaranake sampeyan maca kabeh artikel sadurunge nglakokake perintah kasebut.
Nyiapake sistem operasi
Nyaring bakal dikonfigurasi nggunakake sarana iptables, sing mbutuhake ekstensi kanggo nggarap data GeoIP. Ekstensi iki bisa ditemokake ing
Nalika nulis, versi xtables-addons saiki yaiku 3.9. Nanging, mung 20.04 sing bisa ditemokake ing repositori Ubuntu 3.8 LTS standar, lan 18.04 ing repositori Ubuntu 3.0. Sampeyan bisa nginstal ekstensi saka manajer paket kanthi printah ing ngisor iki:
apt install xtables-addons-common libtext-csv-xs-perl
Elinga yen ana beda cilik nanging penting antarane versi 3.9 lan negara proyek saiki, kang bakal kita rembugan mengko. Kanggo mbangun saka kode sumber, instal kabeh paket sing dibutuhake:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl
Kloning repositori:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addons
xtables-addons ngandhut akeh ekstensi, nanging kita mung kasengsem ing xt_geoip. Yen sampeyan ora pengin nyeret ekstensi sing ora perlu menyang sistem, sampeyan bisa ngilangi saka mbangun. Kanggo nindakake iki, sampeyan kudu ngowahi file kasebut mconfig. Kanggo kabeh modul sing dikarepake, instal y, lan tandhani kabeh sing ora perlu n. Kita ngumpulake:
./autogen.sh
./configure
make
Lan nginstal kanthi hak superuser:
make install
Sajrone instalasi modul kernel, kesalahan sing padha karo ing ngisor iki bisa kedadeyan:
INSTALL /root/xtables-addons-xtables-addons/extensions/xt_geoip.ko
At main.c:160:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:72
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:79
sign-file: certs/signing_key.pem: No such file or directory
Kahanan iki muncul amarga ora bisa mlebu modul kernel, amarga apa-apa kanggo mlebu. Sampeyan bisa ngatasi masalah iki kanthi sawetara prentah:
cd /lib/modules/(uname -r)/build/certs
cat <<EOF > x509.genkey
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
CN = Modules
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem
Modul kernel sing dikompilasi wis diinstal, nanging sistem ora ndeteksi. Ayo takon sistem nggawe peta dependensi kanthi njupuk modul anyar, banjur muat:
depmod -a
modprobe xt_geoip
Ayo priksa manawa xt_geoip dimuat menyang sistem:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tables
Kajaba iku, priksa manawa ekstensi kasebut dimuat menyang iptables:
# cat /proc/net/ip_tables_matches
geoip
icmp
We are seneng karo kabeh lan kabeh sing isih kanggo nambah jeneng modul kanggo / lsp / modulsupaya modul bisa sawise rebooting OS. Wiwit saiki, iptables ngerti prentah geoip, nanging ora duwe data sing cukup kanggo digarap. Ayo miwiti mbukak database geoip.
Njupuk Database GeoIP
Kita nggawe direktori ing ngendi informasi sing bisa dingerteni kanggo ekstensi iptables bakal disimpen:
mkdir /usr/share/xt_geoip
Ing wiwitan artikel, kita nyebutake manawa ana bedane antarane versi kode sumber lan versi saka manajer paket. Bentenipun paling ngelingke iku owah-owahan ing vendor database lan script xt_geoip_dl, sing ngundhuh data paling anyar.
Versi manajer paket
Skrip kasebut ana ing path /usr/lib/xtables-addons, nanging nalika sampeyan nyoba mbukak, sampeyan bakal weruh kesalahan sing ora informatif:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.
Sadurunge, produk GeoLite, saiki dikenal minangka GeoLite Legacy, disebarake kanthi lisensi, digunakake minangka basis data
Kaping pisanan, ing Januari 2018
Kapindho, wiwit Desember 2019 MaxMind
Amarga kita pengin nggunakake produke, kita bakal ndhaptar ing kaca iki.
Sampeyan banjur bakal nampa email sing njaluk sampeyan nyetel sandhi. Saiki kita wis nggawe akun, kita kudu nggawe kunci lisensi. Ing akun pribadi sampeyan nemokake item kasebut Kunci Lisensi Kula, banjur klik tombol kasebut Gawe Kunci Lisensi anyar.
Nalika nggawe kunci, kita bakal dijaluk mung siji pitakonan: apa kita bakal nggunakake tombol iki ing program Pembaruan GeoIP? We njawab negatif lan pencet tombol konfirmasi. Tombol bakal ditampilake ing jendela pop-up. Simpen tombol iki ing panggonan sing aman, amarga yen sampeyan nutup jendhela pop-up, sampeyan ora bakal bisa ndeleng kabeh tombol maneh.
Kita duwe kemampuan kanggo ndownload database GeoLite2 kanthi manual, nanging format kasebut ora cocog karo format sing dikarepake dening skrip xt_geoip_build. Iki ngendi skrip GeoLite2xtables teka kanggo ngluwari. Kanggo mbukak skrip, instal modul NetAddr::IP perl:
wget https://cpan.metacpan.org/authors/id/M/MI/MIKER/NetAddr-IP-4.079.tar.gz
tar xvf NetAddr-IP-4.079.tar.gz
cd NetAddr-IP-4.079
perl Makefile.PL
make
make install
Sabanjure, kita tiron repositori nganggo skrip lan nulis kunci lisensi sing dipikolehi sadurunge menyang file:
git clone https://github.com/mschmitt/GeoLite2xtables.git
cd GeoLite2xtables
echo YOUR_LICENSE_KEY=β123ertyui123' > geolite2.license
Ayo mbukak skrip:
# Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ GeoLite2
./00_download_geolite2
# Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΡΠ°Π½Π°Ρ
(Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΊΠΎΠ΄Ρ)
./10_download_countryinfo
# ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΠΌ GeoLite2 Π±Π°Π·Ρ Π² ΡΠΎΡΠΌΠ°Ρ GeoLite Legacy
cat /tmp/GeoLite2-Country-Blocks-IPv{4,6}.csv |
./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/share/xt_geoip/dbip-country-lite.csv
MaxMind nemtokke watesan 2000 download saben dina lan, karo nomer akeh server, nawakake kanggo cache nganyari ing server proxy.
Elinga yen file output kudu disebut dbip-country-lite.csv... Sayang, 20_ngowahi_geolite2 ora ngasilake file sing sampurna. Skripsi xt_geoip_build ngarepake telung kolom:
- wiwitan kisaran alamat;
- mburi sawetara alamat;
- kode negara ing iso-3166-alpha2.
Lan file output ngemot enem kolom:
- wiwitan sawetara alamat (representasi string);
- mburi sawetara alamat (representasi string);
- wiwitan sawetara alamat (representasi angka);
- mburi sawetara alamat (representasi angka);
- kode negara;
- jeneng negara.
Penyimpangan iki kritis lan bisa didandani kanthi salah siji saka rong cara:
- nyunting 20_ngowahi_geolite2;
- nyunting xt_geoip_build.
Ing kasus pisanan kita nyuda
/usr/lib/xtables-addons/xt_geoip_build -S /usr/share/xt_geoip/ -D /usr/share/xt_geoip
. . .
2239 IPv4 ranges for ZA
348 IPv6 ranges for ZA
56 IPv4 ranges for ZM
12 IPv6 ranges for ZM
56 IPv4 ranges for ZW
15 IPv6 ranges for ZW
Elinga yen penulis
Versi sumber
Nalika nginstal saka skrip kode sumber xt_geoip_* dumunung ing katalog /usr/local/libexec/xtables-addons. Versi skrip iki nggunakake basis data
cd /usr/share/xt_geoip/
/usr/local/libexec/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_build
Sawise langkah-langkah kasebut, iptables siap digunakake.
Nggunakake geoip ing iptables
Modul xt_geoip mung nambah rong tombol:
geoip match options:
[!] --src-cc, --source-country country[,country...]
Match packet coming from (one of) the specified country(ies)
[!] --dst-cc, --destination-country country[,country...]
Match packet going to (one of) the specified country(ies)
NOTE: The country is inputed by its ISO3166 code.
Cara kanggo nggawe aturan kanggo iptables, ing umum, tetep ora diganti. Kanggo nggunakake tombol saka modul tambahan, sampeyan kudu tegas nemtokake jeneng modul karo ngalih -m. Contone, aturan kanggo mblokir sambungan TCP mlebu ing port 443 ora saka AS ing kabeh antarmuka:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP
File digawe dening xt_geoip_build digunakake mung nalika nggawe aturan, nanging ora dijupuk menyang akun nalika nyaring. Dadi, kanggo nganyari database geoip kanthi bener, sampeyan kudu nganyari file iv* dhisik, banjur gawe maneh kabeh aturan sing nggunakake geoip ing iptables.
kesimpulan
Nyaring paket adhedhasar negara minangka strategi sing rada dilalekake dening wektu. Senadyan mangkono, piranti lunak kanggo nyaring kasebut lagi dikembangake lan, mbok menawa, versi anyar xt_geoip karo panyedhiya data geoip anyar bakal katon ing manajer paket, sing bakal nyederhanakake urip administrator sistem.
Mung pangguna pangguna sing bisa melu survey.
Apa sampeyan tau nggunakake nyaring miturut negara?
-
59,1%inggih13
-
40,9%No9
22 pangguna milih. 3 pangguna abstain.
Source: www.habr.com