xtables-addons: iragazi paketeak herrialdearen arabera

xtables-addons: iragazi paketeak herrialdearen arabera
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 xtables- gehigarriak. xtables-addons-ek iptables-en luzapenak instalatzen ditu nukleo-modulu independente gisa, beraz, ez dago sistema eragilearen nukleoa berriro konpilatu beharrik.

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. Creative Commons ASA 4.0 konpainiak MaxMind. Produktu honekin aldi berean bi gertaera gertatu ziren iptables luzapenarekin bateragarritasuna "hautsi" dutenak.

Lehenik eta behin, 2018ko urtarrilean iragarri du produktuaren laguntza amaitzeari buruz, eta 2019ko urtarrilaren 2an datu-basearen bertsio zaharra deskargatzeko esteka guztiak kendu ziren webgune ofizialetik. Erabiltzaile berriei GeoLite2 produktua edo bere ordainpeko GeoIPXNUMX bertsioa erabiltzea gomendatzen zaie.

Bigarrenik, 2019ko abendutik MaxMind adierazi zuen beren datu-baseetarako sarbidean aldaketa nabarmen bati buruz. Kaliforniako Kontsumitzaileen Pribatutasun Legea betetzeko, MaxMind-ek GeoLite2-ren banaketa erregistroarekin "estaltzea" erabaki zuen.

Euren produktua erabili nahi dugunez, orrialde honetan erregistratuko gara.

xtables-addons: iragazi paketeak herrialdearen arabera
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.

xtables-addons: iragazi paketeak herrialdearen arabera
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:

  1. editatu 20_bihurtu_geolita2;
  2. editatu xt_geoip_build.

Lehenengo kasuan murrizten dugu printf behar den formatura, eta bigarrenean - aldagaiari esleipena aldatzen diogu $cc on $erranka->[4]. Honen ondoren eraiki dezakezu:

/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 GeoLite2xtables ez ditu bere gidoiak ekoizteko eta eskaintzeko prest ikusten pista xt_geoip_* jatorrizko scriptak garatzeko. Beraz, pasa gaitezen iturburu-kodeetatik muntaketara, zeinetan script hauek dagoeneko eguneratuta dauden.

Jatorrizko bertsioa

Iturburu-kodeen scriptetatik instalatzean xt_geoip_* katalogoan kokatzen dira /usr/local/libexec/xtables-addons. Scriptaren bertsio honek datu-base bat erabiltzen du IPa Country Lite-ra. Lizentzia Creative Commons Aitortu Lizentzia da, eta eskuragarri dauden datuetatik oso beharrezkoak diren hiru zutabeak daude. Deskargatu eta muntatu datu-basea:

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.

xtables-addons: iragazi paketeak herrialdearen arabera

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

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

Gehitu iruzkin berria