xtables-addons: iffiltra pakketti skont il-pajjiż

xtables-addons: iffiltra pakketti skont il-pajjiż
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. 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-perl

Innota 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-perl

Ikklonja r-repożitorju:

git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons

cd xtables-addons-xtables-addons

xtables-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

./configure

make

U installa bi drittijiet ta' superutent:

make install

Waqt 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 directory

Din 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/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

Il-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 -a

modprobe xt_geoip

Ejja niżguraw li xt_geoip jitgħabba fis-sistema:

# lsmod | grep xt_geoip
xt_geoip               16384  0
x_tables               40960  2 xt_geoip,ip_tables

Barra minn hekk, kun żgur li l-estensjoni titgħabba f'iptables:

# cat /proc/net/ip_tables_matches 
geoip
icmp

Ninsabu 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_geoip

Fil-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 Creative Commons ASA 4.0 kumpanija MaxMind. Żewġ avvenimenti ġara ma 'dan il-prodott f'daqqa li "kissru" il-kompatibilità mal-estensjoni iptables.

L-ewwelnett, f'Jannar 2018 ħabbar 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 iddikjarat 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.

xtables-addons: iffiltra pakketti skont il-pajjiż
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.

xtables-addons: iffiltra pakketti skont il-pajjiż
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.gz

tar xvf NetAddr-IP-4.079.tar.gz

cd NetAddr-IP-4.079

perl Makefile.PL

make

make install

Sussegwentement, 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.git

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Ejja 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.csv

MaxMind 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:

  1. editja 20_convert_geolite2;
  2. editja xt_geoip_build.

Fl-ewwel każ, innaqqsu printf 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 ZW

Innota li l-awtur GeoLite2xtables ma jqisx l-iskripts tiegħu lesti għall-produzzjoni u l-offerti binarju 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 IP għal Country Lite. 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_build

Wara 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 DROP

Fajls 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.

xtables-addons: iffiltra pakketti skont il-pajjiż

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, 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

Ixtri hosting affidabbli għal siti bi protezzjoni DDoS, servers VPS VDS 🔥 Ixtri hosting ta' websajts affidabbli bi protezzjoni DDoS, servers VPS VDS | ProHoster