xtables-addons: Filter Packagen no Land

xtables-addons: Filter Packagen no Land
D'Aufgab fir de Verkéier vu bestëmmte Länner ze blockéieren schéngt einfach ze sinn, awer éischt Andréck kënne täuschen. Haut wäerte mir Iech soen wéi dëst ëmgesat ka ginn.

Virgeschicht

D'Resultater vun enger Google Sich iwwer dëst Thema sinn enttäuschend: déi meescht Léisunge si scho laang "verrotten" an heiansdo schéngt et datt dëst Thema fir ëmmer an d'Rechnung a vergiess ass. Mir hunn duerch vill al records gekämmt a si prett eng modern Versioun vun der Uweisungen ze deelen.

Mir recommandéieren Iech de ganzen Artikel ze liesen ier Dir dës Kommandoen ausféiert.

Betribssystem Virbereedung

Filtering gëtt mat dem Utility konfiguréiert Iteef, déi eng Extensioun erfuerdert fir mat GeoIP Daten ze schaffen. Dës Extensioun kann fonnt ginn an xtables-addons. xtables-addons installéiert Extensiounen fir iptables als onofhängeg Kernel Moduler, sou datt et net néideg ass den OS Kernel nei ze kompiléieren.

Zu der Zäit vum Schreiwen ass déi aktuell Versioun vun xtables-addons 3.9. Wéi och ëmmer, nëmmen 20.04 kann an de Standard Ubuntu 3.8 LTS Repositories fonnt ginn, an 18.04 an den Ubuntu 3.0 Repositories. Dir kënnt d'Extensioun vum Package Manager mat dem folgenden Kommando installéieren:

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

Bedenkt datt et kleng awer wichteg Differenzen tëscht Versioun 3.9 an dem aktuellen Zoustand vum Projet sinn, déi mir spéider diskutéieren. Fir aus dem Quellcode ze bauen, installéiere all déi néideg Packagen:

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

Klon de Repository:

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

cd xtables-addons-xtables-addons

xtables-addons enthält vill Extensiounen, awer mir sinn nëmmen interesséiert xt_geoip. Wann Dir net onnéideg Extensiounen an de System zitt wëllt, kënnt Dir se aus dem Bau ausschléissen. Fir dëst ze maachen, musst Dir d'Datei änneren mconfig. Fir all gewënschte Moduler installéieren y, a markéiert all onnéideg n. Mir sammelen:

./autogen.sh

./configure

make

An installéiert mat Superuser Rechter:

make install

Wärend der Installatioun vu Kernelmoduler kann e Feeler ähnlech wéi déi folgend optrieden:

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

Dës Situatioun entsteet wéinst der Onméiglechkeet fir Kärmoduler z'ënnerschreiwen, well näischt ze ënnerschreiwen. Dir kënnt dëse Problem mat e puer Kommandoen léisen:

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

De kompiléierte Kernelmodul ass installéiert, awer de System erkennt et net. Loosst eis de System froen eng Ofhängegkeetskaart ze kreéieren déi den neie Modul berücksichtegt, a lued se dann:

depmod -a

modprobe xt_geoip

Loosst eis sécher sinn datt xt_geoip an de System gelueden ass:

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

Zousätzlech gitt sécher datt d'Extensioun an iptables gelueden ass:

# cat /proc/net/ip_tables_matches 
geoip
icmp

Mir si frou mat allem an alles wat bleift ass de Modulnumm derbäi ze ginn / etc / Modulersou datt de Modul funktionnéiert nodeems de OS nei gestart gouf. Vun elo un versteet iptables geoip Kommandoen, awer et huet net genuch Daten fir mat ze schaffen. Loosst eis d'Geoip Datebank lueden.

Gitt d'GeoIP Datebank

Mir kreéieren e Verzeechnes an deem Informatioun verständlech fir d'iptables Extensioun gespäichert gëtt:

mkdir /usr/share/xt_geoip

Am Ufank vum Artikel hu mir gesot datt et Ënnerscheeder tëscht der Versioun vum Quellcode an der Versioun vum Package Manager sinn. De merkbarsten Ënnerscheed ass d'Ännerung am Datebank Verkeefer a Skript xt_geoip_dl, déi déi lescht Donnéeën eroflueden.

Package Manager Versioun

De Skript läit am Wee /usr/lib/xtables-addons, awer wann Dir probéiert et ze lafen, gesitt Dir en net ganz informativen Feeler:

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

Virdru gouf de GeoLite Produkt, elo bekannt als GeoLite Legacy, ënner Lizenz verdeelt, als Datebank benotzt Creative Commons ASA 4.0 Firma MaxMind. Zwee Eventer sinn gläichzäiteg mat dësem Produkt geschitt, déi d'Kompatibilitéit mat der iptables Extensioun "gebrach" hunn.

Als éischt am Januar 2018 ugekënnegt iwwer d'Kënnegung vun der Ënnerstëtzung vum Produkt, an den 2019. Januar 2 goufen all Linken fir déi al Versioun vun der Datebank erofzelueden vun der offizieller Websäit geläscht. Nei Benotzer ginn recommandéiert de GeoLite2 Produkt oder seng bezuelte Versioun GeoIPXNUMX ze benotzen.

Zweetens, zënter Dezember 2019 MaxMind behaapt huet iwwer eng bedeitend Ännerung vum Zougang zu hiren Datenbanken. Fir dem Kalifornien Konsumenteschutzgesetz ze respektéieren, huet de MaxMind decidéiert d'Verdeelung vu GeoLite2 mat Registréierung ze "decken".

Well mir hire Produit benotze wëllen, registréiere mir eis op dëser Säit.

xtables-addons: Filter Packagen no Land
Dir kritt dann eng E-Mail fir Iech e Passwuert ze setzen. Elo datt mir e Kont erstallt hunn, musse mir e Lizenzschlëssel erstellen. An Ärem perséinleche Kont fanne mir den Artikel Meng Lizenz Schlësselen, a klickt dann op de Knäppchen Generéiere neie Lizenz Schlëssel.

Wann Dir e Schlëssel erstellt, gi mir nëmmen eng Fro gestallt: wäerte mir dëse Schlëssel am GeoIP Update Programm benotzen? Mir äntweren negativ an dréckt op de Knäppchen confirméieren. De Schlëssel gëtt an enger Pop-up Fënster ugewisen. Späichert dëse Schlëssel op enger sécherer Plaz, well wann Dir d'Pop-up-Fënster zoumaacht, kënnt Dir net méi de ganze Schlëssel gesinn.

xtables-addons: Filter Packagen no Land
Mir hunn d'Fäegkeet GeoLite2 Datenbanken manuell erofzelueden, awer hir Format ass net kompatibel mat dem Format, dat vum xt_geoip_build Skript erwaart gëtt. Dëst ass wou GeoLite2xtables Skripte fir d'Rettung kommen. Fir Scripten auszeféieren, installéieren den NetAddr :: IP perl Modul:

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

Als nächst klone mir de Repository mat Skripte a schreiwen de virdru kritt Lizenzschlëssel op eng Datei:

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

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Loosst eis d'Skripte lafen:

# Скачиваем данные 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 setzt eng Limit vun 2000 Downloads pro Dag op a bitt, mat enger grousser Zuel vu Serveren, den Update op engem Proxy Server ze cache.

Maacht weg datt d'Ausgabdatei muss genannt ginn dbip-country-lite.csv... Leider, 20_convert_geolite2 produzéiert net eng perfekt Datei. Schrëft xt_geoip_build erwaart dräi Kolonnen:

  • Start vun Adress Gamme;
  • Enn vun Adress Gamme;
  • Land Code an iso-3166-alpha2.

An d'Ausgabdatei enthält sechs Kolonnen:

  • Start vun Adress Gamme (String Representatioun);
  • Enn vun Adress Gamme (String Representatioun);
  • Start vun der Adressberäich (numeresch Representatioun);
  • Enn vum Adressbereich (numeresch Representatioun);
  • Code vum Land;
  • den Numm vum Land.

Dës Diskrepanz ass kritesch a kann op eng vun zwou Weeër korrigéiert ginn:

  1. regéieren 20_convert_geolite2;
  2. regéieren xt_geoip_build.

Am éischte Fall reduzéieren mir printf zum erfuerderlechen Format, an an der zweeter - änneren mir d'Verdeelung op d'Variabel $cc dir op $row->[4]. Duerno kënnt Dir bauen:

/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

Notéiert datt den Auteur GeoLite2xtables betruecht seng Scripten net prett fir Produktioun an Offeren Streck fir d'Entwécklung vun original xt_geoip_* Scripten. Dofir, loosst eis op d'Versammlung vun de Quellcodes weidergoen, an deenen dës Scripte scho aktualiséiert goufen.

Quell Versioun

Wann Dir aus Quellcode Scripten installéiert xt_geoip_* sinn am Katalog /usr/local/libexec/xtables-addons. Dës Versioun vum Skript benotzt eng Datebank IP zu Country Lite. D'Lizenz ass Creative Commons Attribution License, a vun den verfügbaren Donnéeën ginn et déi ganz noutwendeg dräi Kolonnen. Download a montéiert d'Datebank:

cd /usr/share/xt_geoip/

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

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

No dëse Schrëtt sinn iptables prett fir ze schaffen.

Benotzt geoip an iptables

Modul xt_geoip füügt nëmmen zwee Schlësselen:

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.

D'Methoden fir Reegele fir iptables ze kreéieren, am Allgemengen, bleiwen onverännert. Fir Schlësselen vun zousätzleche Moduler ze benotzen, musst Dir explizit den Numm vum Modul mam -m Schalter uginn. Zum Beispill, eng Regel fir Entréeën TCP Verbindungen um Hafen 443 net aus den USA op all Schnëttplazen ze blockéieren:

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

Dateien erstallt vun xt_geoip_build ginn nëmme benotzt wann Dir Regelen erstellt, awer ginn net berücksichtegt beim Filteren. Also, fir d'Geoip-Datebank richteg ze aktualiséieren, musst Dir als éischt d'iv* Dateien aktualiséieren, an dann all d'Regele erstallt déi Geoip an iptables benotzen.

Konklusioun

Filteren Pakete baséiert op Länner ass eng Strategie e bësse vun der Zäit vergiess. Trotzdem ginn Software-Tools fir sou Filteren entwéckelt a vläicht geschwënn eng nei Versioun vum xt_geoip mat engem neie Geoip-Datenprovider an de Packagemanager erschéngt, wat d'Liewe vun de Systemadministratoren immens vereinfacht.

xtables-addons: Filter Packagen no Land

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Hutt Dir jeemools Filteren no Land benotzt?

  • 59,1%jo13

  • 40,9%Nee9

22 Benotzer hunn gestëmmt. 3 Benotzer hu sech enthalen.

Source: will.com

Setzt e Commentaire