xtables-addons: síaðu pakka eftir landi

xtables-addons: síaðu pakka eftir landi
Verkefnið að loka fyrir umferð frá ákveðnum löndum virðist einfalt, en fyrstu kynni geta verið blekkjandi. Í dag munum við segja þér hvernig hægt er að útfæra þetta.

Forsaga

Niðurstöður Google leitar um þetta efni eru vonbrigði: flestar lausnirnar hafa lengi verið „rotnar“ og stundum virðist sem þetta efni hafi verið sett á hilluna og gleymt að eilífu. Við höfum greitt í gegnum fullt af gömlum plötum og erum tilbúin að deila nútímalegri útgáfu af leiðbeiningunum.

Við mælum með að þú lesir alla greinina áður en þú framkvæmir þessar skipanir.

Undirbúningur stýrikerfis

Sía verður stillt með því að nota tólið iptables, sem krefst framlengingar til að vinna með GeoIP gögnum. Þessa viðbót er að finna í xtables-viðbætur. xtables-addons setur upp viðbætur fyrir iptables sem sjálfstæðar kjarnaeiningar, þannig að það er engin þörf á að setja saman OS kjarnann aftur.

Þegar þetta er skrifað er núverandi útgáfa af xtables-viðbótum 3.9. Hins vegar er aðeins 20.04 að finna í stöðluðum Ubuntu 3.8 LTS geymslum og 18.04 í Ubuntu 3.0 geymslum. Þú getur sett upp viðbótina frá pakkastjóranum með eftirfarandi skipun:

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

Athugaðu að það er lítill en mikilvægur munur á útgáfu 3.9 og núverandi stöðu verkefnisins, sem við munum ræða síðar. Til að byggja úr frumkóða skaltu setja upp alla nauðsynlega pakka:

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

Klóna geymsluna:

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

cd xtables-addons-xtables-addons

xtables-addons inniheldur margar viðbætur, en við höfum aðeins áhuga á xt_geoip. Ef þú vilt ekki draga óþarfa viðbætur inn í kerfið geturðu útilokað þær frá byggingunni. Til að gera þetta þarftu að breyta skránni mconfig. Fyrir allar einingar sem óskað er eftir, settu upp y, og merktu við alla óþarfa n. Við söfnum:

./autogen.sh

./configure

make

Og settu upp með ofurnotendaréttindum:

make install

Við uppsetningu á kjarnaeiningum getur villa svipað og eftirfarandi komið upp:

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

Þessi staða kemur upp vegna þess að ómögulegt er að undirrita kjarnaeiningar, vegna þess að ekkert að skrifa undir. Þú getur leyst þetta vandamál með nokkrum skipunum:

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

Samsetta kjarnaeiningin er sett upp en kerfið finnur hana ekki. Við skulum biðja kerfið um að búa til ávanakort með hliðsjón af nýju einingunni og hlaða því síðan:

depmod -a

modprobe xt_geoip

Við skulum ganga úr skugga um að xt_geoip sé hlaðið inn í kerfið:

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

Gakktu úr skugga um að viðbótin sé hlaðin inn í iptables:

# cat /proc/net/ip_tables_matches 
geoip
icmp

Við erum ánægð með allt og það eina sem er eftir er að bæta einingarnafninu við / etc / einingarþannig að einingin virki eftir að stýrikerfið hefur verið endurræst. Héðan í frá skilur iptables geoip skipanir, en það hefur ekki næg gögn til að vinna með. Við skulum byrja að hlaða geoip gagnagrunninum.

Að sækja GeoIP gagnagrunninn

Við búum til möppu þar sem upplýsingar sem eru skiljanlegar fyrir iptables viðbótina verða geymdar:

mkdir /usr/share/xt_geoip

Í upphafi greinarinnar nefndum við að það er munur á útgáfunni frá frumkóðanum og útgáfunni frá pakkastjóranum. Mest áberandi munurinn er breytingin á söluaðila gagnagrunns og handriti xt_geoip_dl, sem hleður niður nýjustu gögnunum.

Útgáfa pakkastjóra

Handritið er staðsett í slóðinni /usr/lib/xtables-addons, en þegar þú reynir að keyra það muntu sjá ekki mjög upplýsandi villu:

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

Áður var GeoLite vara, nú þekkt sem GeoLite Legacy, dreift með leyfi, notuð sem gagnagrunnur Creative Commons ASA 4.0 fyrirtæki MaxMind. Tveir atburðir áttu sér stað með þessa vöru í einu sem „bröttu“ eindrægni við iptables viðbótina.

Í fyrsta lagi í janúar 2018 tilkynnt um uppsögn á stuðningi við vöruna og þann 2019. janúar 2 voru allir tenglar til að hlaða niður gömlu útgáfunni af gagnagrunninum fjarlægðir af opinberu vefsíðunni. Mælt er með nýjum notendum að nota GeoLite2 vöruna eða greidda útgáfu hennar GeoIPXNUMX.

Í öðru lagi, síðan í desember 2019 MaxMind fram um verulega breytingu á aðgangi að gagnagrunnum þeirra. Til að fara að lögum um friðhelgi einkalífs í Kaliforníu ákvað MaxMind að „hylja“ dreifingu GeoLite2 með skráningu.

Þar sem við viljum nota vöruna þeirra munum við skrá okkur á þessari síðu.

xtables-addons: síaðu pakka eftir landi
Þú færð síðan tölvupóst þar sem þú ert beðinn um að setja lykilorð. Nú þegar við höfum búið til reikning þurfum við að búa til leyfislykil. Á persónulegum reikningi þínum finnum við hlutinn Leyfislyklarnir mínir, og smelltu síðan á hnappinn Búðu til nýjan leyfislykil.

Þegar lykill er búið til verður aðeins ein spurning: munum við nota þennan lykil í GeoIP Update forritinu? Við svörum neitandi og ýtum á takkann staðfesta. Lykillinn birtist í sprettiglugga. Vistaðu þennan lykil á öruggum stað þar sem þegar þú lokar sprettiglugganum muntu ekki lengur geta skoðað allan lykilinn.

xtables-addons: síaðu pakka eftir landi
Við höfum getu til að hlaða niður GeoLite2 gagnagrunnum handvirkt, en snið þeirra er ekki samhæft við sniðið sem xt_geoip_build forskriftin gerir ráð fyrir. Þetta er þar sem GeoLite2xtables forskriftir koma til bjargar. Til að keyra forskriftir skaltu setja upp NetAddr::IP perl eininguna:

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

Næst klónum við geymsluna með forskriftum og skrifum áður fengið leyfislykil í skrá:

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

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Við skulum keyra forskriftirnar:

# Скачиваем данные 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 setur takmörk upp á 2000 niðurhal á dag og, með miklum fjölda netþjóna, býður upp á skyndiminni uppfærsluna á proxy-miðlara.

Vinsamlegast athugaðu að kalla verður á úttaksskrána dbip-country-lite.csv... Því miður, 20_convert_geolite2 framleiðir ekki fullkomna skrá. Handrit xt_geoip_build gerir ráð fyrir þremur dálkum:

  • upphaf heimilisfangssviðs;
  • lok heimilisfangssviðs;
  • landsnúmer í iso-3166-alpha2.

Og úttaksskráin inniheldur sex dálka:

  • upphaf heimilisfangssviðs (strengjaframsetning);
  • lok heimilisfangssviðs (strengjaframsetning);
  • upphaf heimilisfangssviðs (töluleg framsetning);
  • lok heimilisfangssviðs (töluleg framsetning);
  • landsnúmer;
  • nafn landsins.

Þetta misræmi er mikilvægt og hægt er að leiðrétta það á einn af tveimur vegu:

  1. breyta 20_convert_geolite2;
  2. breyta xt_geoip_build.

Í fyrra tilvikinu lækkum við prentf í tilskilið snið, og í öðru - breytum við úthlutuninni í breytuna $cc á $row->[4]. Eftir þetta geturðu smíðað:

/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

Athugið að höfundur GeoLite2xtables telur handrit sín ekki tilbúin til framleiðslu og býður lag fyrir þróun upprunalegu xt_geoip_* forskrifta. Þess vegna skulum við halda áfram í samsetninguna frá frumkóðum, þar sem þessi forskriftir hafa þegar verið uppfærðar.

Heimildarútgáfa

Þegar þú setur upp frá frumkóða forskriftum xt_geoip_* eru staðsettar í vörulistanum /usr/local/libexec/xtables-addons. Þessi útgáfa af handritinu notar gagnagrunn IP til Country Lite. Leyfið er Creative Commons Attribution License og af fyrirliggjandi gögnum eru mjög nauðsynlegir þrír dálkar. Hladdu niður og settu saman gagnagrunninn:

cd /usr/share/xt_geoip/

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

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

Eftir þessi skref er iptables tilbúið til að vinna.

Notar geoip í iptables

Module xt_geoip bætir aðeins við tveimur lyklum:

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.

Aðferðirnar til að búa til reglur fyrir iptables eru almennt óbreyttar. Til að nota lykla úr viðbótareiningum verður þú að tilgreina sérstaklega heiti einingarinnar með -m rofanum. Til dæmis, regla um að loka á komandi TCP tengingar á höfn 443 ekki frá Bandaríkjunum á öllum viðmótum:

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

Skrár búnar til af xt_geoip_build eru aðeins notaðar við að búa til reglur, en ekki er tekið tillit til þeirra við síun. Þannig að til að uppfæra geoip gagnagrunninn rétt verður þú fyrst að uppfæra iv* skrárnar og endurskapa síðan allar reglurnar sem nota geoip í iptables.

Ályktun

Að sía pakka byggða á löndum er stefna sem hefur gleymst nokkuð með tímanum. Þrátt fyrir þetta er verið að þróa hugbúnaðarverkfæri fyrir slíka síun og ef til vill mun bráðlega ný útgáfa af xt_geoip með nýrri geoip gagnaveitu birtast í pakkastjórum, sem mun einfalda líf kerfisstjóra til muna.

xtables-addons: síaðu pakka eftir landi

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Hefur þú einhvern tíma notað síun eftir landi?

  • 59,1%Já13

  • 40,9%No9

22 notendur kusu. 3 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd