Aktionen

Apache2 Ubuntu 20.04 GeoIP Blocking einrichten: Unterschied zwischen den Versionen

Aus znilwiki

KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:
Nur habe ich dort "nur" eine FritzBox dazwischen welche per NAT die Ports 80 und 443 auf einen internen Server mit einem Apache2 weiterleitet.<br>
Nur habe ich dort "nur" eine FritzBox dazwischen welche per NAT die Ports 80 und 443 auf einen internen Server mit einem Apache2 weiterleitet.<br>
Dieser hostet einiges selbst bzw. dient als Reverse Proxy zu diversen anderen Diensten/Geräten.<br>
Dieser hostet einiges selbst bzw. dient als Reverse Proxy zu diversen anderen Diensten/Geräten.<br>
Um auch hier den Zugriff einzuschränken brauchte ich also eine Lösung die auf dem Ubuntu-Server ansetzt statt auf dem Router/Firewall.<br>
Jeder dieser Subdomänen läuft zwar unter einem eigenen, eingeschränktem Benutzer - aber da geht noch mehr!<br>
Um auch den Zugriff aus dem Ausland einzuschränken brauchte ich also eine Lösung die auf dem Ubuntu-Server ansetzt statt auf dem Router/Firewall.<br>
<br>
<br>
Ich arbeite hier immer als root, alle Befehle sind deshalb immer ohne <code>sudo</code> davor, mit<br>
Ich arbeite hier immer als root, alle Befehle sind deshalb immer ohne <code>sudo</code> davor, mit<br>
Zeile 18: Zeile 19:
==Zugriff auf MaxMind GeoIP Datenbank geolite2 erhalten==
==Zugriff auf MaxMind GeoIP Datenbank geolite2 erhalten==
Zunächst brauchen wir eine Liste / Datenbank mit allen IP-Adressen und deren Zugehörigkeit zu den verschiedenen Ländern.<br>
Zunächst brauchen wir eine Liste / Datenbank mit allen IP-Adressen und deren Zugehörigkeit zu den verschiedenen Ländern.<br>
Ich setze hier die kostenlose Datenbank '''''geolite2''''' von MaxMind ein, die wird etwa einmal in der Woche aktualisiert und dröselt die Adressen bis auf Ländereben auf was für unsere Zwecke reicht.<br>
Ich setze hier die kostenlose Datenbank '''''geolite2''''' von MaxMind ein, die wird etwa einmal in der Woche aktualisiert und dröselt die Adressen bis auf Länder- und Städteebene auf - was für unsere Zwecke völlig ausreicht.<br>
Zunächst müsst Ihr euch registrieren:<br>
Zunächst müsst Ihr euch registrieren:<br>
  https://www.maxmind.com/en/geolite2/signup
  https://www.maxmind.com/en/geolite2/signup
Zeile 28: Zeile 29:
Dann seht Ihr eine Seite wo euch der Key angezeigt wird - notiert auch die Daten, es gibt keine Möglichkeit sich das noch einmal anzeigen zu lassen !!!!!<br>
Dann seht Ihr eine Seite wo euch der Key angezeigt wird - notiert auch die Daten, es gibt keine Möglichkeit sich das noch einmal anzeigen zu lassen !!!!!<br>
:[[Datei:ClipCapIt-210130-124804.PNG]]<br>
:[[Datei:ClipCapIt-210130-124804.PNG]]<br>
Die Datei <code>geoIP.conf</code> könnt auch gleich herunterladen und speichern.<br>
Die Datei <code>GeoIP.conf</code> könnt auch gleich herunterladen und speichern.<br>
<br>
<br>
----
----
Zeile 40: Zeile 41:
  apt upgrade -y
  apt upgrade -y
  apt install geoipupdate
  apt install geoipupdate
   
Das Programm erwartet eine Konfigurationsdatei mit den Zugangsdaten die wir im ersten Schritt erzeugt haben.<br>
Das ist die Datei die wir zuvor heruntergeladen habt. Kopiert diese an den nachstehenden Pfad oder bearbeitet die bereits vorhandene:<br>
  nano /etc/GeoIP.conf
Inhalt:<br>
<source>
# Please see https://dev.maxmind.com/geoip/geoipupdate/ for instructions
# on setting up geoipupdate, including information on how to download a
# pre-filled GeoIP.conf file.


# Replace YOUR_ACCOUNT_ID_HERE and YOUR_LICENSE_KEY_HERE with an active account
# ID and license key combination associated with your MaxMind account. These
# are available from https://www.maxmind.com/en/my_license_key.
AccountID YOUR_ACCOUNT_ID_HERE
LicenseKey YOUR_LICENSE_KEY_HERE
# Enter the edition IDs of the databases you would like to update.
# Multiple edition IDs are separated by spaces.
EditionIDs GeoLite2-Country GeoLite2-City
</source>
Ihr ersetzt <code>YOUR_ACCOUNT_ID_HERE</code> und <code>YOUR_LICENSE_KEY_HERE</code> mit den Daten die Ihr euch zuvor notiert habt,<br>
das ganze könnt Ihr auch in der heruntergeladenen <code>GeoIP.conf</code> ersehen.<br>
Nach dem Speichern können wir die Datenbanken herunterladen:<br>
geoipupdate -v
durch das <code>-v</code> zeigt er euch die einzelnen Schritte an, ansonsten würde er das ohne Rückmeldungen machen.<br>
<br>
Damit er die Datenbanken in Zukunft regelmäßig automatisch aktualisieret setzen wir einen entsprechenden CronJob:<br>
crontab -e
und folgende Zeile hinzufügen und anpassen:<br>
15 5 * * 0 /usr/bin/geoipupdate
führt das jeden Sonntag (0, 1 ist Montag usw) um 05:15 Uhr aus<br>
<br>
----
==Apache Erweiterungen herunterladen und installieren==
Zuerst die Apache2 und MaxMind Entwicklertools:<br>
apt install apache2-dev libmaxminddb-dev -y
Nun die von MaxMind bereitgestellte Apache-Erweiterung:<br>
cd /usr/src
wget <nowiki>https://github.com/maxmind/mod_maxminddb/releases/download/1.2.0/mod_maxminddb-1.2.0.tar.gz</nowiki>
tar xvzf mod_maxminddb-1.2.0.tar.gz
cd mod_maxminddb-1.2.0
./configure
make install
und danach den Apache2 neu starten:<br>
systemctl restart apache2
Nun ist die Erweiterung innerhalb von Apache verfügbar (wird aber noch nicht genutzt)<br>
----
----
==Zugriff auf Webseite beschränken==
==Quellen==
==Quellen==
* https://dev.maxmind.com/geoip/geoipupdate/
* https://dev.maxmind.com/geoip/geoipupdate/

Version vom 30. Januar 2021, 13:51 Uhr

Changelog: 2021-01-30 erste Version


Vorwort

Ich setze für diverse Dienste/Programme/Zugriffe immer jeweils eine Subdomain ein.
Am Standort wo auch diese Webseite gehostet wird habe ich mehrere öffentliche IP-Adressen hinter einer pfSense Firewall.
Auf diese nutze ich schon seit Jahren ein GeoIP-Blocking und erlaube den Zugriff auf bestimmte Dienste z.B. nur aus Deutschland.

Zu Hause habe ich inzwischen auch eine feste IP-Adresse und auch dort einiges laufen was über diverse Subdomänen erreichbar ist.
Nur habe ich dort "nur" eine FritzBox dazwischen welche per NAT die Ports 80 und 443 auf einen internen Server mit einem Apache2 weiterleitet.
Dieser hostet einiges selbst bzw. dient als Reverse Proxy zu diversen anderen Diensten/Geräten.
Jeder dieser Subdomänen läuft zwar unter einem eigenen, eingeschränktem Benutzer - aber da geht noch mehr!
Um auch den Zugriff aus dem Ausland einzuschränken brauchte ich also eine Lösung die auf dem Ubuntu-Server ansetzt statt auf dem Router/Firewall.

Ich arbeite hier immer als root, alle Befehle sind deshalb immer ohne sudo davor, mit

sudo -i

könnt auch Ihr dauerhaft (für die Sitzung) zum root wechseln.


Zugriff auf MaxMind GeoIP Datenbank geolite2 erhalten

Zunächst brauchen wir eine Liste / Datenbank mit allen IP-Adressen und deren Zugehörigkeit zu den verschiedenen Ländern.
Ich setze hier die kostenlose Datenbank geolite2 von MaxMind ein, die wird etwa einmal in der Woche aktualisiert und dröselt die Adressen bis auf Länder- und Städteebene auf - was für unsere Zwecke völlig ausreicht.
Zunächst müsst Ihr euch registrieren:

https://www.maxmind.com/en/geolite2/signup

Wenn Ihr euch danach erfolgreich angemeldet habt könnten Ihr in den Account-Einstellungen unter My License Key einen neuen Zugriffsschlüssel erstellen:

ClipCapIt-210130-124342.PNG

Vergebt einen passenden Namen (z.B. des Servers auf welchem Ihr das einsetzen wollt) und setzt die Einstellungen wie folgt:

ClipCapIt-210130-124623.PNG


Dann seht Ihr eine Seite wo euch der Key angezeigt wird - notiert auch die Daten, es gibt keine Möglichkeit sich das noch einmal anzeigen zu lassen !!!!!

ClipCapIt-210130-124804.PNG

Die Datei GeoIP.conf könnt auch gleich herunterladen und speichern.


GeoIP Update installieren und einrichten

MaxMind bietet ein Tool an welches automatisch die Datenbank herunterladen und aktualisieren kann - geoipupdate.
Und für Ubuntu sogar als Repository so das man sich um Updates auch nicht extra manuell bemühen muss.
Wir fügen das Repository hinzu:

add-apt-repository ppa:maxmind/ppa

danach ein

apt update
apt upgrade -y
apt install geoipupdate

Das Programm erwartet eine Konfigurationsdatei mit den Zugangsdaten die wir im ersten Schritt erzeugt haben.
Das ist die Datei die wir zuvor heruntergeladen habt. Kopiert diese an den nachstehenden Pfad oder bearbeitet die bereits vorhandene:

nano /etc/GeoIP.conf

Inhalt:

# Please see https://dev.maxmind.com/geoip/geoipupdate/ for instructions
# on setting up geoipupdate, including information on how to download a
# pre-filled GeoIP.conf file.

# Replace YOUR_ACCOUNT_ID_HERE and YOUR_LICENSE_KEY_HERE with an active account
# ID and license key combination associated with your MaxMind account. These
# are available from https://www.maxmind.com/en/my_license_key.
AccountID YOUR_ACCOUNT_ID_HERE
LicenseKey YOUR_LICENSE_KEY_HERE

# Enter the edition IDs of the databases you would like to update.
# Multiple edition IDs are separated by spaces.
EditionIDs GeoLite2-Country GeoLite2-City

Ihr ersetzt YOUR_ACCOUNT_ID_HERE und YOUR_LICENSE_KEY_HERE mit den Daten die Ihr euch zuvor notiert habt,
das ganze könnt Ihr auch in der heruntergeladenen GeoIP.conf ersehen.
Nach dem Speichern können wir die Datenbanken herunterladen:

geoipupdate -v

durch das -v zeigt er euch die einzelnen Schritte an, ansonsten würde er das ohne Rückmeldungen machen.

Damit er die Datenbanken in Zukunft regelmäßig automatisch aktualisieret setzen wir einen entsprechenden CronJob:

crontab -e

und folgende Zeile hinzufügen und anpassen:

15 5 * * 0 /usr/bin/geoipupdate

führt das jeden Sonntag (0, 1 ist Montag usw) um 05:15 Uhr aus


Apache Erweiterungen herunterladen und installieren

Zuerst die Apache2 und MaxMind Entwicklertools:

apt install apache2-dev libmaxminddb-dev -y

Nun die von MaxMind bereitgestellte Apache-Erweiterung:

cd /usr/src
wget https://github.com/maxmind/mod_maxminddb/releases/download/1.2.0/mod_maxminddb-1.2.0.tar.gz
tar xvzf mod_maxminddb-1.2.0.tar.gz
cd mod_maxminddb-1.2.0
./configure
make install

und danach den Apache2 neu starten:

systemctl restart apache2

Nun ist die Erweiterung innerhalb von Apache verfügbar (wird aber noch nicht genutzt)


Zugriff auf Webseite beschränken

Quellen


Kommentare

Loading comments...