xtables-addons: pecynnau hidlo yn ôl gwlad

xtables-addons: pecynnau hidlo yn ôl gwlad
Mae'r dasg o rwystro traffig o rai gwledydd yn ymddangos yn syml, ond gall argraffiadau cyntaf fod yn dwyllodrus. Heddiw, byddwn yn dweud wrthych sut y gellir gweithredu hyn.

cynhanes

Mae canlyniadau chwiliad Google ar y pwnc hwn yn siomedig: mae'r rhan fwyaf o'r atebion wedi bod yn "pydru" ers tro ac weithiau mae'n ymddangos bod y pwnc hwn wedi'i roi o'r neilltu ac wedi anghofio amdano am byth. Rydym wedi mynd trwy lawer o hen gofnodion ac yn barod i rannu fersiwn modern o'r cyfarwyddiadau.

Rydym yn argymell eich bod yn darllen yr erthygl gyfan cyn gweithredu'r gorchmynion hyn.

Paratoi'r system weithredu

Bydd hidlo yn cael ei ffurfweddu gan ddefnyddio'r cyfleustodau iptables, sy'n gofyn am estyniad i weithio gyda data GeoIP. Gellir dod o hyd i'r estyniad hwn yn xtables-addons. Mae xtables-addons yn gosod estyniadau ar gyfer iptables fel modiwlau cnewyllyn annibynnol, felly nid oes angen ail-grynhoi'r cnewyllyn OS.

Ar adeg ysgrifennu, y fersiwn gyfredol o xtables-addons yw 3.9. Fodd bynnag, dim ond 20.04 sydd i'w gael yn y storfeydd safonol Ubuntu 3.8 LTS, a 18.04 yn ystorfeydd Ubuntu 3.0. Gallwch chi osod yr estyniad gan y rheolwr pecyn gyda'r gorchymyn canlynol:

apt install xtables-addons-common libtext-csv-xs-perl

Sylwch fod gwahaniaethau bach ond pwysig rhwng fersiwn 3.9 a chyflwr presennol y prosiect, y byddwn yn eu trafod yn nes ymlaen. I adeiladu o'r cod ffynhonnell, gosodwch yr holl becynnau angenrheidiol:

apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl

Cloniwch y storfa:

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

cd xtables-addons-xtables-addons

Mae xtables-addons yn cynnwys llawer o estyniadau, ond dim ond diddordeb sydd gennym ni xt_geoip. Os nad ydych chi am lusgo estyniadau diangen i'r system, gallwch eu heithrio o'r adeilad. I wneud hyn mae angen i chi olygu'r ffeil mconfig. Ar gyfer pob modiwl dymunol, gosodwch y, a marcio pob un diangen n. Rydym yn casglu:

./autogen.sh

./configure

make

A gosod gyda hawliau superuser:

make install

Wrth osod modiwlau cnewyllyn, gall gwall tebyg i'r canlynol ddigwydd:

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

Mae'r sefyllfa hon yn codi oherwydd yr amhosibilrwydd o arwyddo modiwlau cnewyllyn, oherwydd dim i'w arwyddo. Gallwch chi ddatrys y broblem hon gyda chwpl o orchmynion:

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

Mae'r modiwl cnewyllyn wedi'i lunio wedi'i osod, ond nid yw'r system yn ei ganfod. Gadewch i ni ofyn i'r system greu map dibyniaeth gan ystyried y modiwl newydd, ac yna ei lwytho:

depmod -a

modprobe xt_geoip

Gadewch i ni sicrhau bod xt_geoip yn cael ei lwytho i mewn i'r system:

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

Yn ogystal, gwnewch yn siŵr bod yr estyniad yn cael ei lwytho i mewn i iptables:

# cat /proc/net/ip_tables_matches 
geoip
icmp

Rydym yn hapus gyda phopeth a'r cyfan sydd ar ôl yw ychwanegu enw'r modiwl ato / etc / modiwlaufel bod y modiwl yn gweithio ar ôl ailgychwyn yr OS. O hyn ymlaen, mae iptables yn deall gorchmynion geoip, ond nid oes ganddo ddigon o ddata i weithio gyda nhw. Gadewch i ni ddechrau llwytho'r gronfa ddata geoip.

Cael Cronfa Ddata GeoIP

Rydym yn creu cyfeiriadur lle bydd gwybodaeth ddealladwy i'r estyniad iptables yn cael ei storio:

mkdir /usr/share/xt_geoip

Ar ddechrau'r erthygl, soniasom fod gwahaniaethau rhwng y fersiwn o'r cod ffynhonnell a'r fersiwn gan y rheolwr pecyn. Y gwahaniaeth mwyaf amlwg yw'r newid mewn gwerthwr cronfa ddata a sgript xt_geoip_dl, sy'n lawrlwytho'r data diweddaraf.

Fersiwn rheolwr pecyn

Mae'r sgript wedi'i lleoli yn y llwybr /usr/lib/xtables-addons, ond pan geisiwch ei redeg, fe welwch wall nad yw'n addysgiadol iawn:

# ./xt_geoip_dl 
unzip:  cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.

Yn flaenorol, defnyddiwyd y cynnyrch GeoLite, a elwir bellach yn GeoLite Legacy, a ddosbarthwyd dan drwydded, fel cronfa ddata Creative Commons ASA 4.0 cwmni MaxMind. Digwyddodd dau ddigwyddiad gyda'r cynnyrch hwn ar unwaith a "torrodd" gydnawsedd ag estyniad iptables.

Yn gyntaf, ym mis Ionawr 2018 cyhoeddi ynghylch terfynu cefnogaeth i'r cynnyrch, ac ar Ionawr 2019, 2, tynnwyd pob dolen i lawrlwytho'r hen fersiwn o'r gronfa ddata o'r wefan swyddogol. Argymhellir defnyddwyr newydd i ddefnyddio'r cynnyrch GeoLite2 neu ei fersiwn taledig GeoIPXNUMX.

Yn ail, ers mis Rhagfyr 2019 MaxMind dywedodd am newid sylweddol mewn mynediad i'w cronfeydd data. Er mwyn cydymffurfio â Deddf Preifatrwydd Defnyddwyr California, penderfynodd MaxMind "gwmpasu" dosbarthiad GeoLite2 gyda chofrestriad.

Gan ein bod am ddefnyddio eu cynnyrch, byddwn yn cofrestru ar y dudalen hon.

xtables-addons: pecynnau hidlo yn ôl gwlad
Yna byddwch yn derbyn e-bost yn gofyn i chi osod cyfrinair. Nawr ein bod wedi creu cyfrif, mae angen i ni greu allwedd trwydded. Yn eich cyfrif personol rydym yn dod o hyd i'r eitem Allweddi fy Nhrwydded, ac yna cliciwch ar y botwm Cynhyrchu Allwedd Trwydded newydd.

Wrth greu allwedd, dim ond un cwestiwn a ofynnir inni: a fyddwn yn defnyddio'r allwedd hon yn rhaglen Diweddaru GeoIP? Rydyn ni'n ateb yn negyddol ac yn pwyso'r botwm cadarnhau. Bydd yr allwedd yn cael ei harddangos mewn ffenestr naid. Cadwch yr allwedd hon mewn man diogel, oherwydd unwaith y byddwch chi'n cau'r ffenestr naid, ni fyddwch yn gallu gweld yr allwedd gyfan mwyach.

xtables-addons: pecynnau hidlo yn ôl gwlad
Mae gennym y gallu i lawrlwytho cronfeydd data GeoLite2 â llaw, ond nid yw eu fformat yn gydnaws â'r fformat a ddisgwylir gan y sgript xt_geoip_build. Dyma lle mae sgriptiau GeoLite2xtables yn dod i'r adwy. I redeg sgriptiau, gosodwch y modiwl 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

Nesaf, rydym yn clonio'r ystorfa gyda sgriptiau ac yn ysgrifennu'r allwedd trwydded a gafwyd yn flaenorol i ffeil:

git clone https://github.com/mschmitt/GeoLite2xtables.git

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Gadewch i ni redeg y sgriptiau:

# Скачиваем данные 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

Mae MaxMind yn gosod terfyn o 2000 o lawrlwythiadau y dydd a, gyda nifer fawr o weinyddion, yn cynnig storio'r diweddariad ar weinydd dirprwyol.

Sylwch fod yn rhaid galw'r ffeil allbwn dbip-gwlad-lite.csv... Yn anffodus, 20_trosi_geolite2 nid yw'n cynhyrchu ffeil berffaith. Sgript xt_geoip_adeiladu yn disgwyl tair colofn:

  • dechrau'r ystod cyfeiriadau;
  • ystod diwedd cyfeiriadau;
  • cod gwlad yn iso-3166-alpha2.

Ac mae'r ffeil allbwn yn cynnwys chwe cholofn:

  • ystod dechrau'r cyfeiriad (cynrychiolaeth llinynnol);
  • ystod diwedd cyfeiriad (cynrychiolaeth llinynnol);
  • ystod dechrau'r cyfeiriad (cynrychiolaeth rifiadol);
  • ystod diwedd cyfeiriad (cynrychiolaeth rifiadol);
  • cod y wlad;
  • enw'r wlad.

Mae'r anghysondeb hwn yn hollbwysig a gellir ei gywiro mewn un o ddwy ffordd:

  1. golygu 20_trosi_geolite2;
  2. golygu xt_geoip_adeiladu.

Yn yr achos cyntaf rydym yn lleihau printf i'r fformat gofynnol, ac yn yr ail - rydym yn newid yr aseiniad i'r newidyn $cc ar $row->[4]. Ar ôl hyn gallwch chi adeiladu:

/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

Sylwch fod yr awdur GeoLite2xtables nid yw'n ystyried ei sgriptiau'n barod i'w cynhyrchu a'u cynigion trac ar gyfer datblygu sgriptiau xt_geoip_* gwreiddiol. Felly, gadewch i ni symud ymlaen i'r cynulliad o godau ffynhonnell, lle mae'r sgriptiau hyn eisoes wedi'u diweddaru.

Fersiwn ffynhonnell

Wrth osod o sgriptiau cod ffynhonnell xt_geoip_* wedi eu lleoli yn y catalog /usr/local/libexec/xtables-addons. Mae'r fersiwn hon o'r sgript yn defnyddio cronfa ddata IP i Country Lite. Mae'r drwydded yn Creative Commons Attribution License, ac o'r data sydd ar gael mae'r tair colofn angenrheidiol iawn. Lawrlwythwch a chydosod y gronfa ddata:

cd /usr/share/xt_geoip/

/usr/local/libexec/xtables-addons/xt_geoip_dl

/usr/local/libexec/xtables-addons/xt_geoip_build

Ar ôl y camau hyn, mae iptables yn barod i weithio.

Defnyddio geoip mewn iptables

Modiwl xt_geoip yn ychwanegu dwy allwedd yn unig:

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.

Yn gyffredinol, nid yw'r dulliau ar gyfer creu rheolau ar gyfer iptables wedi newid. I ddefnyddio bysellau o fodiwlau ychwanegol, rhaid i chi nodi'n benodol enw'r modiwl gyda'r switsh -m. Er enghraifft, rheol i rwystro cysylltiadau TCP sy'n dod i mewn ar borthladd 443 nid o UDA ar bob rhyngwyneb:

iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP

Dim ond wrth greu rheolau y defnyddir ffeiliau a grëwyd gan xt_geoip_build, ond ni chânt eu hystyried wrth hidlo. Felly, i ddiweddaru'r gronfa ddata geoip yn gywir, rhaid i chi ddiweddaru'r ffeiliau iv* yn gyntaf, ac yna ail-greu'r holl reolau sy'n defnyddio geoip mewn iptables.

Casgliad

Mae hidlo pecynnau yn seiliedig ar wledydd yn strategaeth a anghofiwyd braidd gan amser. Er gwaethaf hyn, mae offer meddalwedd ar gyfer hidlo o'r fath yn cael eu datblygu ac, efallai, yn fuan bydd fersiwn newydd o xt_geoip gyda darparwr data geoip newydd yn ymddangos mewn rheolwyr pecynnau, a fydd yn symleiddio bywyd gweinyddwyr system yn fawr.

xtables-addons: pecynnau hidlo yn ôl gwlad

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

Ydych chi erioed wedi defnyddio hidlo fesul gwlad?

  • 59,1%Oes13

  • 40,9%Rhif 9

Pleidleisiodd 22 defnyddiwr. Ataliodd 3 defnyddiwr.

Ffynhonnell: hab.com

Ychwanegu sylw