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 í
Þ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
Í fyrsta lagi í janúar 2018
Í öðru lagi, síðan í desember 2019 MaxMind
Þar sem við viljum nota vöruna þeirra munum við skrá okkur á þessari síðu.
Þú 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.
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:
- breyta 20_convert_geolite2;
- breyta xt_geoip_build.
Í fyrra tilvikinu lækkum við
/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
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
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.
Aðeins skráðir notendur geta tekið þátt í könnuninni.
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