Zenbait herrialdetako trafikoa blokeatzeko zeregina erraza dirudi, baina lehen inpresioak engainagarriak izan daitezke. Gaur hau nola gauzatu daitekeen kontatuko dizuegu.
historiaurrea
Gai honi buruzko Google-ren bilaketa baten emaitzak etsigarriak dira: irtenbide gehienak aspalditik βustelakβ dira eta batzuetan badirudi gai hau baztertu eta betiko ahaztu dela. Disko zahar asko igaro ditugu eta argibideen bertsio moderno bat partekatzeko prest gaude.
Komando hauek exekutatu aurretik artikulu osoa irakurtzea gomendatzen dugu.
Sistema eragilea prestatzea
Iragazkia utilitatearen bidez konfiguratuko da iptables, GeoIP datuekin lan egiteko luzapen bat behar duena. Luzapen hau hemen aurki daiteke
Idazteko unean, xtables-addons-en egungo bertsioa 3.9 da. Hala ere, 20.04 soilik aurki daiteke Ubuntu 3.8 LTS biltegi estandarretan, eta 18.04 Ubuntu 3.0 biltegietan. Luzapena paketeen kudeatzailetik instala dezakezu komando honekin:
apt install xtables-addons-common libtext-csv-xs-perl
Kontuan izan 3.9 bertsioaren eta proiektuaren egungo egoeraren artean desberdintasun txikiak baina garrantzitsuak daudela, geroago aztertuko ditugunak. Iturburu-kodetik eraikitzeko, instalatu beharrezko pakete guztiak:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl
Klonatu biltegia:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addons
xtables-addons-ek luzapen asko ditu, baina guri bakarrik interesatzen zaigu xt_geoip. Behar ez diren luzapenak sistemara arrastatu nahi ez badituzu, eraikuntzatik bazter ditzakezu. Horretarako fitxategia editatu behar duzu mconfig. Nahi dituzun modulu guztietarako, instalatu y, eta markatu behar ez diren guztiak n. biltzen dugu:
./autogen.sh
./configure
make
Eta instalatu supererabiltzaile eskubideekin:
make install
Nukleoko moduluak instalatzean, ondorengoaren antzeko errore bat gerta daiteke:
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
Egoera hau nukleoaren moduluak sinatzeko ezintasunagatik sortzen da, zeren sinatzeko ezer. Arazo hau komando pare batekin konpon dezakezu:
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
Konpilatutako nukleoaren modulua instalatuta dago, baina sistemak ez du detektatzen. Eskatu diezaiogun sistemari modulu berria kontuan hartuta mendekotasun-mapa bat sortzeko, eta gero kargatu:
depmod -a
modprobe xt_geoip
Ziurta dezagun xt_geoip sisteman kargatzen dela:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tables
Gainera, ziurtatu luzapena iptables-en kargatuta dagoela:
# cat /proc/net/ip_tables_matches
geoip
icmp
Guztiarekin pozik gaude eta moduluaren izena gehitzea besterik ez da geratzen / etc / modulesberaz, moduluak sistema eragilea berrabiarazi ondoren funtziona dezan. Hemendik aurrera, iptablesek geoip komandoak ulertzen ditu, baina ez du nahikoa datu lan egiteko. Has gaitezen geoip datu-basea kargatzen.
GeoIP datu-basea eskuratzea
Direktorio bat sortzen dugu eta bertan iptables luzapenerako ulergarria den informazioa gordeko da:
mkdir /usr/share/xt_geoip
Artikuluaren hasieran, iturburu kodearen bertsioaren eta paketeen kudeatzailearen bertsioaren artean desberdintasunak daudela aipatu dugu. Desberdintasunik nabarmenena datu-baseen saltzaile eta script-en aldaketa da xt_geoip_dl, azken datuak deskargatzen dituena.
Pakete kudeatzailearen bertsioa
Scripta /usr/lib/xtables-addons bidean dago, baina exekutatzen saiatzen zarenean, ez oso informazio-errore bat ikusiko duzu:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.
Aurretik, GeoLite produktua, gaur egun GeoLite Legacy izenez ezagutzen dena, lizentziapean banatua, datu-base gisa erabiltzen zen.
Lehenik eta behin, 2018ko urtarrilean
Bigarrenik, 2019ko abendutik MaxMind
Euren produktua erabili nahi dugunez, orrialde honetan erregistratuko gara.
Ondoren, mezu elektroniko bat jasoko duzu pasahitza ezartzeko eskatuz. Orain kontu bat sortu dugunean, lizentzia-gako bat sortu behar dugu. Zure kontu pertsonalean elementua aurkituko dugu Nire lizentzia-gakoak, eta gero egin klik botoian Sortu lizentzia-gako berria.
Gako bat sortzean, galdera bakarra egingo zaigu: erabiliko al dugu gako hau GeoIP Eguneratze programan? Ezezko erantzuten dugu eta botoia sakatzen dugu Berretsi. Tekla pop-up leiho batean bistaratuko da. Gorde gako hau leku seguru batean, leiho zabaleko leihoa itxi ondoren, ezingo baituzu gako osoa ikusi.
GeoLite2 datu-baseak eskuz deskargatzeko aukera dugu, baina haien formatua ez da bateragarria xt_geoip_build scriptak espero duen formatuarekin. Hemen GeoLite2xtables script-ak erreskatatu egiten dira. Scriptak exekutatzeko, instalatu NetAddr::IP perl modulua:
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
Ondoren, biltegia scriptekin klonatu eta aurretik lortutako lizentzia-gakoa fitxategi batean idatziko dugu:
git clone https://github.com/mschmitt/GeoLite2xtables.git
cd GeoLite2xtables
echo YOUR_LICENSE_KEY=β123ertyui123' > geolite2.license
Exekutatu ditzagun scriptak:
# Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ 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-ek egunean 2000 deskarga-muga ezartzen du eta, zerbitzari kopuru handiarekin, eguneratzea proxy zerbitzari batean gordetzea eskaintzen du.
Kontuan izan irteerako fitxategia deitu behar dela dbip-country-lite.csv... Zoritxarrez, 20_bihurtu_geolita2 ez du fitxategi perfekturik sortzen. Gidoia xt_geoip_build hiru zutabe espero ditu:
- helbide-barrutiaren hasiera;
- helbide-barrutiaren amaiera;
- herrialde-kodea iso-3166-alpha2-n.
Eta irteerako fitxategiak sei zutabe ditu:
- helbide-barrutiaren hasiera (kateen irudikapena);
- helbide-barrutiaren amaiera (kateen irudikapena);
- helbide-barrutiaren hasiera (zenbakizko irudikapena);
- helbide-barrutiaren amaiera (zenbakizko irudikapena);
- herrialdearen kodea;
- herrialdearen izena.
Desadostasun hori funtsezkoa da eta bi modu hauetako batean zuzen daiteke:
- editatu 20_bihurtu_geolita2;
- editatu xt_geoip_build.
Lehenengo kasuan murrizten dugu
/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
Kontuan izan egileak
Jatorrizko bertsioa
Iturburu-kodeen scriptetatik instalatzean xt_geoip_* katalogoan kokatzen dira /usr/local/libexec/xtables-addons. Scriptaren bertsio honek datu-base bat erabiltzen du
cd /usr/share/xt_geoip/
/usr/local/libexec/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_build
Urrats hauen ondoren, iptables lan egiteko prest dago.
Geoip erabiliz iptables-en
Modulua xt_geoip bi gako bakarrik gehitzen ditu:
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.
iptables-en arauak sortzeko metodoak, oro har, ez dira aldatu. Modulu gehigarrietako gakoak erabiltzeko, modu esplizituan zehaztu behar duzu moduluaren izena -m etengailuarekin. Adibidez, 443 atakan sarrerako TCP konexioak blokeatzeko araua AEBetatik ez dauden interfaze guztietan:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP
xt_geoip_build-ek sortutako fitxategiak arauak sortzean bakarrik erabiltzen dira, baina ez dira kontuan hartzen iragazketan. Horrela, geoip datu-basea behar bezala eguneratzeko, lehenik eta behin iv* fitxategiak eguneratu behar dituzu, eta gero iptables-en geoip erabiltzen duten arau guztiak birsortu.
Ondorioa
Herrialdeetan oinarritutako paketeak iragaztea denborak ahaztu samarra duen estrategia da. Hala ere, iragazketarako software-tresnak garatzen ari dira eta, agian, laster geoip datu-hornitzaile berri batekin xt_geoip-en bertsio berri bat agertuko da pakete-kudeatzaileetan, eta horrek sistema-administratzaileen bizitza asko erraztuko du.
Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan.
Erabili al duzu inoiz herrialdeka iragaztea?
-
59,1%Bai13
-
40,9%9. zenbakia
22 erabiltzailek eman dute botoa. 3 erabiltzaile abstenitu ziren.
Iturria: www.habr.com