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
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
Als éischt am Januar 2018
Zweetens, zënter Dezember 2019 MaxMind
Well mir hire Produit benotze wëllen, registréiere mir eis op dëser Säit.
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.
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:
- regéieren 20_convert_geolite2;
- regéieren xt_geoip_build.
Am éischte Fall reduzéieren mir
/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
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
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.
Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen.
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