Nginx

NGINX-Block basierend auf dem geografischen Standort

NGINX-Block basierend auf dem geografischen Standort
Nginx ist ein leistungsstarker, leichter Open-Source-Webserver, der der Öffentlichkeit kostenlos zur Verfügung steht. Es hat im Vergleich zu anderen leichten Servern eine enorme Anzahl wertvoller Funktionen features. Eine dieser Funktionen ist das geoip_module, das verwendet wird, um den geografischen Standort zu identifizieren, von dem der Besucher kommt. Standardmäßig verwendet es in Kombination mit den von maxmind bereitgestellten Daten, um den geografischen Standort des Besuchers herauszufinden. Der Vorteil der Identifizierung des geografischen Standorts besteht darin, unterschiedliche Richtlinien für verschiedene geografische Standorte durchzusetzen. Wenn ein Unternehmen beispielsweise nur für Länder in Nordamerika verfügbar ist, kann es mit geoip_module alle anderen Besucher aus anderen Regionen blockieren. Dadurch wird sichergestellt, dass das Unternehmen keine Regeln und Vorschriften einhalten muss, die von verschiedenen Regionen durchgesetzt werden, wie z. B. DSGVO (Datenschutz-Grundverordnung).

Implementierung

Auch wenn es viele Möglichkeiten gibt, die Lösung im System zu implementieren, zeigt dieser Leitfaden den einfachsten Weg, sie mit minimalem Aufwand zu registrieren.

  1. Natürlich muss Nginx im System installiert werden, bevor die Schritte in dieser Anleitung eingeleitet werden können. Die Installation von Nginx reicht jedoch nicht aus, da auch geo_ip_module installiert werden muss. Maxmind hat seine Datenbank früher im dat-Format veröffentlicht, aber seit einiger Zeit wird sie im mmdb-Format veröffentlicht. Dadurch benötigt Nginx ein neues geo_ip_module namens ngx_http_geoip2_module. Es ist jedoch nicht erforderlich, da die alte Dat-Datenbank noch ausreicht. Wie auch immer, wenn nginx nicht installiert ist, richten Sie es mit den folgenden zwei Befehlen ein.
apt-get-Update
apt-get install nginx
  1. Geben Sie den folgenden Befehl ein, um sicherzustellen, dass das http_geoip-Modul installiert ist.
nginx -V

  1. Es gibt mehrere Möglichkeiten, die Datenbank zu erwerben/zu erstellen, die IP-Adressen und die jeweiligen Länder- und Städtenamen enthält. Installieren Sie die geo_ip-Datenbank mit den folgenden Befehlen. Mit dieser Methode ist es einfach, die geo_Ip-Datenbank im System zu installieren. Der beste Weg ist jedoch, eine neue Kopie herunterzuladen, da sie mit den neuesten Informationen aktualisiert wird. Verwenden Sie also eine der drei unten angegebenen Optionen. Die erste Option reicht für jeden durchschnittlichen Benutzer aus, die 2nd Option besteht darin, die neueste Datenbank von maxmind zu erhalten, die dritte Option konvertiert die mmdb-Datenbank in ihr jeweiliges dat-Dateiformat.
    Es ist zeit- und ressourcenintensiv und daher nicht für schwache Server zu empfehlen. Wenn jedoch weiterhin eine aktualisierte Datenbank benötigt wird, verwenden Sie die Option 2. Es spart Zeit und Geld beim Konvertieren der Datei, aber die Sicherheit kann nicht garantiert werden, da es von jemand anderem konvertiert wird, nicht von einer offiziellen Partei. Die Option 3 erfordert 3 pip-Pakete, setuptools, ipaddr, dcryptit. Und es verwendet Python 2, um das Skript zu verarbeiten. Die letzte Zeile konvertiert das Zip-Archiv in archive .dat-Datei. Obwohl es über die Konvertierung des mmdb-Dateiformats in erwähnt wird .dat, hier konvertiert es tatsächlich eine CSV-Datei in a .dat-Dateiformat und erfordert daher geoname2fips.csv-Datei, die mit dem Konvertierungsdatei-Bundle geliefert wird.

Option 1

apt-get install geoip-database libgeoip1

Option 2

cd /usr/share/GeoIP
wget -o maxmind.dat.gz https://bit.ly/2Gh3gTZ
gunzip maxmind.dat.gz

Option 3

CD /home/
mkdir geolite2legacy/
git-Klon https://github.com/sherpya/geolith2legacy
apt-get install python
apt-get install python-pip
pip install setuptools
pip installiere ipaddr
pip install dcryptit
cd /usr/share/
mkdir GeoIP/
cd /usr/share/GeoIP/
wget https://geolith.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.Postleitzahl
pyton /home/geolite2legacy/geolite2legacy.py -i /usr/share/GeoIP/GeoLite2-Country-CSV.zip -f
/home/geolith2legacy/geoname2fips.csv -o /usr/share/GeoIP/GeoLite2-Land.dat
  1. Konfigurieren Sie die Nginx-Konfigurationsdatei wie folgt. Geben Sie den Befehl wie gewohnt in die erste Zeile im Linux-Terminal ein und kopieren Sie die restlichen Zeilen in die nginx.conf-Datei. Stellen Sie sicher, dass der Name in erwähnt wird /usr/share/GeoIP/GeoIP.dat stimmt mit der dat-Datei überein, die im Ordner usr/share/GeoIP gespeichert ist. Auch wenn im folgenden Beispiel nur ein Land angegeben wird, können im angegebenen Beispiel mehrere Ländercodes mit einer Zeile pro Ländercode angegeben werden. Die Liste der verfügbaren Ländercodes für Länder finden Sie an dieser Stelle. http://www.maxmind.com/app/iso3166.
nano /etc/nginx/nginx.conf
geoip_country /usr/share/GeoIP/GeoIP.dat;
Karte $geoip_country_code $allowed_country
Standard ja;
LK-Nr.;
  1. Öffnen Sie die Standarddatei über einen beliebigen Texteditor (Nano wird bevorzugt, da sie recht einfach zu bearbeiten ist), und fügen Sie dann den Inhalt seit 2 hinzund Zeile zwischen irgendwo im Standortblock in der Standarddatei. Der Code funktioniert so, wenn ein Besucher eine Anfrage an den Webserver stellt, ruft nginx seine IP-Adressen ab und gleicht mit seinen Datensätzen den jeweiligen Ländercode ab, wenn das im Kartenblock erwähnte Land übereinstimmt, wird die Nr $allowed_country-Variable, und dadurch die Überprüfung von $allowed_country erlaubt, die Antwort zu manipulieren. In dieser Anleitung verwendet es no, und somit wird dem Besucher verweigert, den Inhalt zu sehen. Wenn es mehrere Domains gibt wie .com, .lk oder nucuta.com oder nucuta.net füge den Code seit Zeile 3 zu jeder „Domain“ hinzu.conf-Datei auch. Wenn nginx gut konfiguriert ist, befindet sich die Datei für die jeweilige Domäne im Ordner "sites-available".
nano /etc/nginx/sites-available/default
if ($allowed_country = nein)
zurück 444;
  1. Starten Sie den nginx-Server mit dem folgenden Befehl neu. Danach führt der Zugriff auf den Webserver von einer beliebigen srilankischen (LK) Domain dazu, dass der Webserver nichts zurückgibt, wie in den folgenden Screenshots zu sehen ist. 444 in nginx steht für nichts. Jeder andere Code wie 302, 301, 404 kann hier stattdessen auch verwendet werden. Wenn 302,301 angegeben sind, sollte auch eine URL zur Weiterleitung des Besuchers angegeben werden.
systemctl Neustart nginx

Fazit

Das Sperren von Besuchern aufgrund ihrer geografischen Lage ist für einige Unternehmen aufgrund verschiedener regionaler Regeln und Vorschriften von entscheidender Bedeutung. Nginx erfüllt solche Bedürfnisse mit seinem geo_ip-Modul. Es verwendet maxmind-Datenbanken, um das Land anhand der IP-Adresse des Besuchers zu finden. Die Datenbank funktioniert sowohl mit IPv4 als auch mit IPv6. Da maxmind sein altes dat-Datenbankformat eingestellt hat, besteht die einzige Möglichkeit, seine Daten zu nutzen, darin, entweder das neue Dateiformat in eine dat-Datei zu konvertieren oder ein bereits konvertiertes zu verwenden oder ein Drittanbietermodul für Nginx zu verwenden, um das mmdb-Dateiformat zu unterstützen. Das hier bereitgestellte Python-Skript ist ideal für die Konvertierung, auch wenn es eine Weile dauert, bis das Ergebnis sichtbar ist. Maxmind garantiert eine Genauigkeit von über 99% bei der Suche nach dem Land basierend auf der IP; Daher ist es ein Muss für jedes Unternehmen.

So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...
Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...