
Il-kompitu li jimblokka t-traffiku minn ċerti pajjiżi jidher sempliċi, iżda l-ewwel impressjonijiet jistgħu jkunu qarrieqa. Illum se ngħidulek kif dan jista' jiġi implimentat.
preistorja
Ir-riżultati ta 'tfittxija Google dwar dan is-suġġett huma diżappuntanti: il-biċċa l-kbira tas-soluzzjonijiet ilhom "immuffati" u kultant jidher li dan is-suġġett ġie miżmum fuq l-ixkaffa u minsija għal dejjem. Għaddejna minn ħafna rekords qodma u lesti naqsmu verżjoni moderna tal-istruzzjonijiet.
Nirrakkomandaw li taqra l-artiklu kollu qabel ma tesegwixxi dawn il-kmandi.
Tħejjija tas-sistema operattiva
L-iffiltrar se jiġi kkonfigurat bl-użu tal-utilità iptables, li teħtieġ estensjoni biex taħdem mad-dejta GeoIP. Din l-estensjoni tista’ tinstab fi . xtables-addons jinstalla estensjonijiet għal iptables bħala moduli indipendenti tal-kernel, għalhekk m'hemmx bżonn li terġa 'tikkompila l-kernel tal-OS.
Fil-ħin tal-kitba, il-verżjoni attwali ta' xtables-addons hija 3.9. Madankollu, fir-repożitorji standard Ubuntu 20.04 LTS jista' jsib biss 3.8, u fir-repożitorji Ubuntu 18.04 — 3.0. Tista' tinstalla l-estensjoni mill-maniġer tal-pakketti billi tuża l-kmand li ġej:
apt install xtables-addons-common libtext-csv-xs-perlInnota li hemm differenzi żgħar iżda importanti bejn il-verżjoni 3.9 u l-istat attwali tal-proġett, li ser niddiskutu aktar tard. Biex tibni mill-kodiċi tas-sors, installa l-pakketti kollha meħtieġa:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perlIkklonja r-repożitorju:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addonsxtables-addons fih ħafna estensjonijiet, iżda aħna interessati biss fihom xt_geoip. Jekk ma tridx tkaxkar estensjonijiet mhux meħtieġa fis-sistema, tista 'teskludihom mill-bini. Biex tagħmel dan għandek bżonn teditja l-fajl mconfig. Għall-moduli kollha mixtieqa, installa y, u mmarka dawk kollha mhux meħtieġa n. Aħna niġbru:
./autogen.sh./configuremakeU installa bi drittijiet ta' superutent:
make installWaqt l-installazzjoni tal-moduli tal-kernel, jista 'jseħħ żball simili għal dan li ġej:
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 directoryDin is-sitwazzjoni tqum minħabba l-impossibbiltà li jiġu ffirmati moduli tal-qalba, minħabba li xejn x'tiffirma. Tista' ssolvi din il-problema bi ftit kmandijiet:
cd /lib/modules/(uname -r)/build/certscat <<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
EOFopenssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pemIl-modulu tal-kernel ikkumpilat huwa installat, iżda s-sistema ma tiskoprihx. Ejja nistaqsu lis-sistema biex toħloq mappa tad-dipendenza filwaqt li tqis il-modulu l-ġdid, u mbagħad tagħbijah:
depmod -amodprobe xt_geoipEjja niżguraw li xt_geoip jitgħabba fis-sistema:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tablesBarra minn hekk, kun żgur li l-estensjoni titgħabba f'iptables:
# cat /proc/net/ip_tables_matches
geoip
icmpNinsabu kuntenti b'kollox u kulma fadal hu li nżidu l-isem tal-modulu / eċċ / modulessabiex il-modulu jaħdem wara li jerġa 'jibda l-OS. Minn issa 'l quddiem, iptables jifhem il-kmandi tal-geoip, iżda m'għandux biżżejjed dejta biex jaħdem magħha. Ejja nibdew tagħbija d-database geoip.
Jkollna l-GeoIP Database
Noħolqu direttorju li fih tinħażen informazzjoni li tinftiehem mill-estensjoni iptables:
mkdir /usr/share/xt_geoipFil-bidu tal-artiklu, semmejna li hemm differenzi bejn il-verżjoni mill-kodiċi tas-sors u l-verżjoni mill-maniġer tal-pakketti. L-aktar differenza notevoli hija l-bidla fil-fornitur tad-database u l-iskrittura xt_geoip_dl, li tniżżel l-aħħar data.
Verżjoni tal-maniġer tal-pakkett
L-iskript jinsab fil-mogħdija /usr/lib/xtables-addons, iżda meta tipprova tħaddem, se tara żball mhux informattiv ħafna:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.Preċedentement, il-prodott GeoLite, issa magħruf bħala GeoLite Legacy, imqassam taħt liċenzja, kien użat bħala database kumpanija . Żewġ avvenimenti ġara ma 'dan il-prodott f'daqqa li "kissru" il-kompatibilità mal-estensjoni iptables.
L-ewwelnett, f'Jannar 2018 dwar it-terminazzjoni ta 'appoġġ għall-prodott, u fit-2019 ta' Jannar 2, il-links kollha għat-tniżżil tal-verżjoni l-antika tad-database tneħħew mill-websajt uffiċjali. Utenti ġodda huma rakkomandati li jużaw il-prodott GeoLite2 jew il-verżjoni mħallsa tiegħu GeoIPXNUMX.
It-tieni nett, minn Diċembru 2019 MaxMind dwar bidla sinifikanti fl-aċċess għad-databases tagħhom. Biex tikkonforma mal-Att dwar il-Privatezza tal-Konsumatur ta 'Kalifornja, MaxMind iddeċieda li "jkopri" d-distribuzzjoni ta' GeoLite2 bir-reġistrazzjoni.
Peress li rridu nużaw il-prodott tagħhom, aħna nirreġistraw f'din il-paġna.

Imbagħad tirċievi email li titlobek biex tissettja password. Issa li ħloqna kont, irridu noħolqu ċavetta tal-liċenzja. Fil-kont personali tiegħek insibu l-oġġett Iċ-Ċwievet tal-Liċenzja Tiegħi, u mbagħad ikklikkja fuq il-buttuna Iġġenera Liċenzja Ċavetta ġdida.
Meta noħolqu ċavetta, se nkunu mistoqsija waħda biss: se nużaw din iċ-ċavetta fil-programm ta 'Aġġornament GeoIP? Aħna nwieġbu negattivament u agħfas il-buttuna Ikkonferma. Iċ-ċavetta tintwera f'tieqa pop-up. Issejvja din iċ-ċavetta f'post sigur, peress li ladarba tagħlaq it-tieqa pop-up, ma tkunx tista' tibqa' tara ċ-ċavetta kollha.

Għandna l-abbiltà li tniżżel id-databases GeoLite2 manwalment, iżda l-format tagħhom mhuwiex kompatibbli mal-format mistenni mill-iskript xt_geoip_build. Dan huwa fejn l-iskripts GeoLite2xtables jiġu għas-salvataġġ. Biex tħaddem skripts, installa l-modulu NetAddr::IP perl:
wget https://cpan.metacpan.org/authors/id/M/MI/MIKER/NetAddr-IP-4.079.tar.gztar xvf NetAddr-IP-4.079.tar.gzcd NetAddr-IP-4.079perl Makefile.PLmakemake installSussegwentement, aħna nikklonu r-repożitorju bi skripts u niktbu ċ-ċavetta tal-liċenzja miksuba qabel f'fajl:
git clone https://github.com/mschmitt/GeoLite2xtables.gitcd GeoLite2xtablesecho YOUR_LICENSE_KEY=’123ertyui123' > geolite2.licenseEjja nħaddmu l-iskripts:
# Скачиваем данные 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.csvMaxMind jimponi limitu ta' 2000 download kuljum u, b'numru kbir ta' servers, joffri li jdaħħal fil-cache l-aġġornament fuq proxy server.
Jekk jogħġbok innota li l-fajl tal-output għandu jissejjaħ dbip-country-lite.csv... Sfortunatament, 20_convert_geolite2 ma jipproduċix fajl perfett. Iskript xt_geoip_build jistenna tliet kolonni:
- bidu tal-firxa tal-indirizzi;
- tmiem il-firxa tal-indirizzi;
- kodiċi tal-pajjiż f'iso-3166-alpha2.
U l-fajl tal-output fih sitt kolonni:
- bidu tal-firxa tal-indirizzi (rappreżentazzjoni ta' string);
- tmiem il-firxa tal-indirizzi (rappreżentazzjoni ta' string);
- bidu tal-firxa tal-indirizzi (rappreżentazzjoni numerika);
- tmiem il-firxa tal-indirizzi (rappreżentazzjoni numerika);
- kodiċi tal-pajjiż;
- l-isem tal-pajjiż.
Din id-diskrepanza hija kritika u tista' tiġi kkoreġuta b'wieħed minn żewġ modi:
- editja 20_convert_geolite2;
- editja xt_geoip_build.
Fl-ewwel każ, innaqqsu għall-format meħtieġ, u fit-tieni - aħna nibdlu l-assenjazzjoni għall-varjabbli $cc fuq $row->[4]. Wara dan tista' tibni:
/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 ZWInnota li l-awtur ma jqisx l-iskripts tiegħu lesti għall-produzzjoni u l-offerti għall-iżvilupp ta 'skripts xt_geoip_* oriġinali. Għalhekk, ejja ngħaddu għall-assemblaġġ mill-kodiċijiet tas-sors, li fihom dawn l-iskripts diġà ġew aġġornati.
Verżjoni tas-sors
Meta tinstalla minn skripts tal-kodiċi tas-sors xt_geoip_* jinsabu fil-katalgu /usr/local/libexec/xtables-addons. Din il-verżjoni tal-iskrittura tuża database . Il-liċenzja hija Creative Commons Attribution License, u mid-dejta disponibbli hemm it-tliet kolonni meħtieġa ħafna. Niżżel u għaqqad id-database:
cd /usr/share/xt_geoip//usr/local/libexec/xtables-addons/xt_geoip_dl/usr/local/libexec/xtables-addons/xt_geoip_buildWara dawn il-passi, iptables huwa lest biex jaħdem.
L-użu ta' geoip f'iptables
Modulu xt_geoip iżid biss żewġ ċwievet:
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.Il-metodi għall-ħolqien ta' regoli għall-iptables, b'mod ġenerali, jibqgħu l-istess. Biex tuża ċwievet minn moduli addizzjonali, trid tispeċifika b'mod espliċitu l-isem tal-modulu bis-swiċċ -m. Pereżempju, regola biex timblokka l-konnessjonijiet TCP deħlin fuq il-port 443 mhux mill-Istati Uniti fuq l-interfaces kollha:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROPFajls maħluqa minn xt_geoip_build jintużaw biss meta jinħolqu regoli, iżda ma jiġux ikkunsidrati meta jiġu ffiltrati. Għalhekk, biex taġġorna b'mod korrett id-database geoip, l-ewwel trid taġġorna l-fajls iv*, u mbagħad toħloq mill-ġdid ir-regoli kollha li jużaw geoip f'iptables.
Konklużjoni
L-iffiltrar tal-pakketti bbażati fuq il-pajjiżi hija strateġija kemmxejn minsija biż-żmien. Minkejja dan, qed jiġu żviluppati għodod tas-softwer għal tali filtrazzjoni u, forsi, dalwaqt verżjoni ġdida ta 'xt_geoip b'fornitur ġdid ta' data geoip se tidher fil-maniġers tal-pakketti, li se jissimplifikaw ħafna l-ħajja tal-amministraturi tas-sistema.
Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. , ta 'xejn.
Qatt użajt l-iffiltrar skont il-pajjiż?
59,1%Iva13
40,9%Nru9
Ivvutaw 22 utent. 3 utent astjenew.
Sors: www.habr.com
