
Az egyes országokból érkező forgalom blokkolása egyszerűnek tűnik, de az első benyomás megtévesztő lehet. Ma elmondjuk, hogyan lehet ezt megvalósítani.
őstörténet
A google keresés eredménye ebben a témában kiábrándító: a megoldások nagy része már régóta „rohadt”, és néha úgy tűnik, hogy ez a téma végleg el lett felejtve. Sok régi lemezt átfésültünk, és készen állunk megosztani az utasítások modern változatát.
Javasoljuk, hogy a parancsok végrehajtása előtt olvassa el a teljes cikket.
Operációs rendszer előkészítése
A szűrés a segédprogrammal konfigurálható iptables, amelyhez kiterjesztés szükséges a GeoIP adatokkal való együttműködéshez. Ez a bővítmény itt található . Az xtables-addons az iptables bővítményeit független kernelmodulként telepíti, így nincs szükség az operációs rendszer kernelt újrafordítására.
Jelen írás pillanatában az xtables-addons jelenlegi verziója a 3.9. A standard tárolókban azonban Ubuntu A 20.04 LTS csak a 3.8-as verziót találja meg, és a tárolókban is. Ubuntu 18.04 — 3.0. A bővítményt a csomagkezelőből telepítheti a következő paranccsal:
apt install xtables-addons-common libtext-csv-xs-perlVegye figyelembe, hogy vannak apró, de fontos különbségek a 3.9-es verzió és a projekt jelenlegi állapota között, amelyeket később tárgyalunk. A forráskódból való építéshez telepítse az összes szükséges csomagot:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perlAz adattár klónozása:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addonsAz xtables-addons számos kiterjesztést tartalmaz, de minket csak ezek érdekelnek xt_geoip. Ha nem akarja a szükségtelen bővítményeket a rendszerbe húzni, kizárhatja őket az összeállításból. Ehhez szerkeszteni kell a fájlt mconfig. Az összes kívánt modulhoz telepítse y, és jelölje meg az összes feleslegeset n. Gyűjtjük:
./autogen.sh./configuremakeÉs telepítse szuperfelhasználói jogokkal:
make installA kernelmodulok telepítése során a következőhöz hasonló hiba léphet fel:
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 directoryEz a helyzet a kernelmodulok aláírásának lehetetlensége miatt adódik, mert nincs mit aláírni. Ezt a problémát néhány paranccsal megoldhatja:
cd /lib/modules/(uname -r)/build/certscat <<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
EOFopenssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pemA lefordított kernel modul telepítve van, de a rendszer nem érzékeli. Kérjük meg a rendszert, hogy hozzon létre egy függőségi térképet az új modul figyelembevételével, majd töltse be:
depmod -amodprobe xt_geoipGyőződjön meg arról, hogy az xt_geoip be van töltve a rendszerbe:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tablesEzenkívül győződjön meg arról, hogy a kiterjesztés betöltődik az iptables-ba:
# cat /proc/net/ip_tables_matches
geoip
icmpMindennel elégedettek vagyunk, és már csak a modul nevét kell hozzáadni / etc / moduleshogy a modul az operációs rendszer újraindítása után működjön. Mostantól az iptables megérti a geoip parancsokat, de nem rendelkezik elegendő adattal a munkához. Kezdjük a geoip adatbázis betöltését.
A GeoIP adatbázis beszerzése
Létrehozunk egy könyvtárat, amelyben az iptables kiterjesztés számára érthető információk kerülnek tárolásra:
mkdir /usr/share/xt_geoipA cikk elején említettük, hogy különbségek vannak a forráskódból származó és a csomagkezelőből származó verzió között. A legszembetűnőbb különbség az adatbázis-szállító és a szkript változása xt_geoip_dl, amely letölti a legfrissebb adatokat.
Csomagkezelő verzió
A szkript az /usr/lib/xtables-addons útvonalon található, de amikor megpróbálja futtatni, egy nem túl informatív hibaüzenetet fog látni:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.Korábban a licenc alapján terjesztett GeoLite terméket, ma GeoLite Legacy néven használták adatbázisként. társaság . Ezzel a termékkel egyszerre két olyan esemény történt, amelyek „megszakították” az iptables kiterjesztéssel való kompatibilitást.
Először is, 2018 januárjában a termék támogatásának megszűnéséről, és 2019. január 2-án az adatbázis régi verziójának letöltésére mutató összes hivatkozást eltávolították a hivatalos webhelyről. Az új felhasználók számára ajánlott a GeoLite2 termék vagy annak fizetett GeoIPXNUMX verziója.
Másodszor, 2019 decembere óta a MaxMind az adatbázisaikhoz való hozzáférés jelentős változásáról. A kaliforniai fogyasztói adatvédelmi törvénynek való megfelelés érdekében a MaxMind úgy döntött, hogy regisztrációval „lefedi” a GeoLite2 terjesztését.
Mivel az ő terméküket szeretnénk használni, ezért ezen az oldalon regisztrálunk.

Ezután kap egy e-mailt, amelyben jelszó megadására kérik. Most, hogy létrehoztunk egy fiókot, létre kell hoznunk egy licenckulcsot. Személyes fiókjában megtaláljuk a tételt Saját engedélykulcsok, majd kattintson a gombra Új licenckulcs létrehozása.
Kulcs létrehozásakor csak egy kérdést fogunk feltenni: használni fogjuk-e ezt a kulcsot a GeoIP Update programban? Nemleges választ adunk és megnyomjuk a gombot megerősít. A kulcs egy felugró ablakban jelenik meg. Mentse el ezt a kulcsot egy biztonságos helyen, mert ha bezárja a felugró ablakot, többé nem tudja megtekinteni a teljes kulcsot.

Lehetőségünk van a GeoLite2 adatbázisok manuális letöltésére, de formátumuk nem kompatibilis az xt_geoip_build szkript által elvárt formátummal. Ez az, ahol a GeoLite2xtables szkriptek segítenek. A parancsfájlok futtatásához telepítse a NetAddr::IP perl modult:
wget https://cpan.metacpan.org/authors/id/M/MI/MIKER/NetAddr-IP-4.079.tar.gztar xvf NetAddr-IP-4.079.tar.gzcd NetAddr-IP-4.079perl Makefile.PLmakemake installEzután szkriptekkel klónozzuk a tárolót, és a korábban megszerzett licenckulcsot egy fájlba írjuk:
git clone https://github.com/mschmitt/GeoLite2xtables.gitcd GeoLite2xtablesecho YOUR_LICENSE_KEY=’123ertyui123' > geolite2.licenseFuttassuk a szkripteket:
# Скачиваем данные 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.csvA MaxMind napi 2000 letöltést szab meg, és nagyszámú szerver esetén felajánlja a frissítés gyorsítótárazását egy proxyszerveren.
Kérjük, vegye figyelembe, hogy a kimeneti fájlt meg kell hívni dbip-country-lite.csv... Sajnálatos módon, 20_convert_geolite2 nem hoz létre tökéletes fájlt. Forgatókönyv xt_geoip_build három oszlopot vár:
- címtartomány kezdete;
- címtartomány vége;
- országkód iso-3166-alpha2.
És a kimeneti fájl hat oszlopot tartalmaz:
- címtartomány kezdete (sztring reprezentáció);
- címtartomány vége (sztring reprezentáció);
- címtartomány kezdete (numerikus ábrázolás);
- címtartomány vége (numerikus ábrázolás);
- országkód;
- az ország neve.
Ez az eltérés kritikus, és kétféleképpen korrigálható:
- uralkodni 20_convert_geolite2;
- uralkodni xt_geoip_build.
Az első esetben csökkentjük a szükséges formátumra, a másodikban pedig megváltoztatjuk a hozzárendelést a változóhoz $cc on $sor->[4]. Ezek után építheted:
/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 ZWVegye figyelembe, hogy a szerző szkriptjeit nem tekinti késznek a gyártásra és az ajánlatokra eredeti xt_geoip_* szkriptek fejlesztéséhez. Ezért térjünk át az összeállításra a forráskódoktól, amelyekben ezek a szkriptek már frissültek.
Forrás verzió
Forráskód-szkriptekből történő telepítéskor xt_geoip_* a katalógusban találhatók /usr/local/libexec/xtables-addons. A szkriptnek ez a verziója adatbázist használ . A licenc Creative Commons Attribution License, és a rendelkezésre álló adatokból ott van a nagyon szükséges három oszlop. Töltse le és állítsa össze az adatbázist:
cd /usr/share/xt_geoip//usr/local/libexec/xtables-addons/xt_geoip_dl/usr/local/libexec/xtables-addons/xt_geoip_buildEzen lépések után az iptables készen áll a munkára.
A geoip használata iptables-ban
Modul xt_geoip csak két kulcsot ad hozzá:
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.Az iptables szabályok létrehozásának módszerei általában változatlanok maradnak. További modulokból származó kulcsok használatához kifejezetten meg kell adnia a modul nevét a -m kapcsolóval. Például egy szabály, amely minden interfészen blokkolja a bejövő TCP-kapcsolatokat a 443-as porton, nem az USA-ból:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROPAz xt_geoip_build által létrehozott fájlok csak szabályok létrehozásakor kerülnek felhasználásra, de a szűrésnél nem veszik figyelembe. Ezért a geoip adatbázis megfelelő frissítéséhez először frissítenie kell az iv* fájlokat, majd újra létre kell hoznia az összes, a geoip-et használó szabályt az iptables-ban.
Következtetés
A csomagok országok szerinti szűrése az idő által kissé elfelejtett stratégia. Ennek ellenére az ilyen szűréshez szoftveres eszközöket fejlesztenek, és talán hamarosan megjelenik az xt_geoip új verziója egy új geoip adatszolgáltatóval a csomagkezelőkben, ami nagyban leegyszerűsíti a rendszergazdák életét.
A felmérésben csak regisztrált felhasználók vehetnek részt. , kérem.
Használt már ország szerinti szűrést?
59,1%Igen 13
40,9%No9
22 felhasználó szavazott. 3 felhasználó tartózkodott.
Forrás: will.com
