Raspberry Pi: GeoIP über iptables, nicht über Apache / php

Status
Für weitere Antworten geschlossen.

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.145
Punkte für Reaktionen
1.113
Punkte
314
Hallo an alle Raspberry Pi Geschädigten.

Natürlich ist das hier kein Raspberry Pi Forum jedoch weiß ich, das einige RasPi Fans in diesem Forum unter uns sind. Auch habe ich mein Anliegen bereits im Raspberry Pi Forum kundgetan (http://www.forum-raspberrypi.de/Thread-raspbian-geoip-ueber-iptables-nicht-ueber-apache), bisher jedoch ohne wirkliche Resonanz. Daher würde ich mein Glück gerne mal hier versuchen!

Vielleicht seid ihr so nett und folgt einfach dem o.a. Link, lest ihn euch durch und wenn ich vielleicht einen Tipp oder gar eine Anleitung habt, würde ich mich freuen, wenn ihr ihn hier posten würdet.

Dank euch!

Tommes
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.145
Punkte für Reaktionen
1.113
Punkte
314
Nachdem ich jetzt - gefühlt - das halbe Internet durchforstet habe, komme ich langsam zu der Erkenntnis, das es aktuell scheinbar keine brauchbare Lösung für den Raspberry Pi gibt GeoIP über iptables zu steuern. Daher bin ich wieder - back to the roots - zur Apache/php Lösung zurückgekehrt.

Für alle die sich das auch mal zu Gemüte führen wollen, hier mal der passende Link aus dem Ubuntuusers-Wiki http://wiki.ubuntuusers.de/Apache/mod_geoip2 und ja, das läßt sich so 1 zu 1 auf einem Pi mit Raspian umsetzen. Ich bin halt nur hingegangen und hab mir aus den vielen BlockCountry-Regeln eine AllowCountry-Regel für Deutschland gemacht, da in meinem Fall eh nur aus DE zugegriffen werden soll/darf. Sollte ich dann wirklich mal aus einem anderen Land Zugriff auf meine Cloud haben wollen, so kann ich das besagte Land ziemlich fix hinzufügen (oder einfach meine Geo-Daten faken :D )

Tommes
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Hallo Tommes,

danke für die Anregung und die schlaflosen Nächte :p
Ich habe auf meinem Banana PI ebenfalls einige Probleme gehabt.

Die Lösung sah dann so aus:
- aktuellen Kernel installieren, es gibt für Banan PI spezielle update-Scripte
- die Quellen zu diesem Kernel finden (bei mir auf Github, bei dir auch? https://github.com/raspberrypi/linux)
- die Quellen nach /usr/src runterladen und entpacken
- dann einen symbolischen Link /usr/src/linux erstellen, der auf das Kernelverzeichnis /usr/src/linux-source-<kernelversion> zeigt
- in /lib/modules/<kernelversion> einen Symlink mit dem Namen "build" anlegen, der auf /usr/src/<kernelversion> zeigt
- im Kernelverzeichnis /usr/src/linux ein "zcat /proc/config.gz >.config" ausführen, das kopiert die aktuelle Kernelkonfiguration nach .config
- im Kernelverzeichnis "make prepare" ausführen (wenn du's ganz richtig machen willst, kompiliere den Kernel und die Module einmal durch --> siehe unten)
- lade xtables-addons hier runter http://sourceforge.net/projects/xtables-addons/files/
- die richtige Version ist entscheidend, m.E. kannst du die aktuelle nehmen, ich musste eine 1.x nehmen, weil die aktuellen nicht zu meinem veralteten Kernel passen
- xtables-addons entpackst du in /usr/src/modules
- in /usr/src/modules/xtables-addons dann mconfig editieren und bei allem, was du nicht brauchst, "xyz=m" in "xyz=" ändern
- in /usr/src/modules/xtables-addons dann ./configure ausführen
- danach "make && make install"
- jetzt sollten die gewünschten Module in /lib/modules/<kernelversion>/extra zu finden sein
- das xt_geoip kannst du dann mit "modprobe xt_geoip" bzw. automatisch laden, wenn du oben den Kernel und die Module durchkompiliert hast (s.o.)
- sonst musst du xt_geoip mit "modprobe -f xt_geoip" laden

- dann das Verzeichnis /usr/share/xt_geoip anlegen
- in /usr/src/modules/xtables-addons/geoip mittels ./xt_geoip_dl die aktuellen Listen runterladen
- dann mit "./xt_geoip_build -D /usr/share/xt_geoip *.csv" die IP-Listen generieren lassen

- jetzt sollte z.B. "iptables -A INPUT -m state --state NEW -m geoip --source-country CN -j DROP" fehlerfrei auszuführen sein

Ich habe es gerade mit einem Tunnel ausprobiert und es scheint zu funktionieren.

Good luck ;-)
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.145
Punkte für Reaktionen
1.113
Punkte
314
Ähm... WOW!

Das hört sich unterm Strich ja *räusper* ... *kratz am Hals" ziemlich einfach an *prust*
Somit werde ich wohl jetzt auch erstmal wieder ein paar schlaflose Nächte durchleben. Denn obwohl ich bereits ein Stück weit dem "Tal der Ahnungslosen" entfliehen konnte, Zweifel ich noch ein wenig daran, dieses bei mir so umgesetzt zu bekommen. Aber ok, ich stelle mich mal dieser Herausforderung, schließlich sollen deine schlaflosen Nächte nicht umsonst gewesen sein und werde das auf meinem "alten Pi B+" mal durchexerzieren.

Auf jedenfalls schon mal ein ganz dickes Dankeschön für deine Arbeit und Mühen. Aber scheinbar hat es dir selber auch Spaß gemacht, da ja sonst niemand auf die Idee kommen würde so mir nichts, dir nichts, den Kernel umzustricken. Ist schon schlimm -dieser Ergeiz, oder? Kenn ich!

Nur noch eine kleine Frage vorab, bevor ich wieder diesen Tunnelblick bekomme...
Können sich bei so einem Kerneltausch nicht auch sicherheitsrelevante Nachteile einstellen, oder könnte ich das ruhigen Gewissens auch auf meinem Produktivsystem (solle ich das überhaupt jemals hinbekommen) integrieren? Kann ich danach immer noch auf normalem Wege die Pakete updaten? Oder laufe ich da Gefahr, das nach einem Update, Upgrade oder Dist-Upgrade den Kernel wieder zerschieße?

Tommes
 
Zuletzt bearbeitet:

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Du kannst doch die bereits gepatchten Quellen nehmen. Außerdem kannst du das "dist-" in "apt-get dist-upgrade" weglassen, die Kernel-Pakete einfach deinstallieren oder sie und den Bootloader auf "hold" setzen (echo $PAKETNAME hold | dpkg --set-selections). "rpi-update" benutzt du nicht mehr.
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Ich weiß nicht, wie es beim Raspberry ist, aber beim Banana sehe ich das durchaus als eine "offizielle" Vorgehensweise.

Beim Banana sieht es so aus, dass das Betriebssystem eine Ubuntu-ARM-Portierung ist und von der Seite ports.ubuntu.com per apt-get kommt.
Der Kernel allerdings ist sehr hardwarespezifisch und von den Machern des Banana angepasst, weshalb er auf Github zu finden ist, statt von Ubuntu.com zu kommen.

Damit habe ich einen Kernel von Github, ohne die passenden Kernelquellen im Ubuntu Repository zu finden.
Genau da ergibt sich das Problem für xtables-addons bzw. das Script module-assistant.
module-assistant geht davon aus, dass es den Kernel bzw. dessen Quellen im Repository von Ubuntu.com findet.

Die von mir geschilderte Vorgehensweise tauscht nicht den Kernel aus!!!
Du erzeugst nur für xtables-addons eine Entwicklungsumgebung, um die gewünschten Module kompilieren zu können. (was das Script module-assistant auch versucht hat, aber ohne Erfolg)
Selbst wenn du den Kernel und die Module vollständig durchkompilierst (ich hab's ehrlich gesagt nicht probiert, weil's so lange dauert), sollst du diesen nicht installieren!
Das durchkompilieren soll nur eine Symboltabelle für xtables-addons generieren, die beim Laden der Module berücksichtigt werden kann und dafür sorgt, dass modprobe ohne die Option -f auskommt.
Btw: es könnte sein, dass du für das Kompilieren einige Tools (make, automake, autoconf, ncurses-devel, etc.) installieren musst. Diese sind aber im Standard-Repository.

rpi-update darfst und sollst du weiterhin verwenden!
Dann musst du allerdings auch immer wieder die passenden Kernelquellen runterladen, um xtables-addons passend zu kompilieren.

Kurz gesagt:
Wenn du eine 08/15 Hardware (z.B. x86) mit einem 08/15 Kernel und Kernelsourcen hättest, würde module-assistant problemlos funktionieren.
Wahrscheinlich könntest du sogar das Glück haben, dass deine Distribution das xtables-addons bereits fertig kompiliert zur Verfügung stellt.
Du hast aber eine exotische Hardware mit einem "handgebackenen" Kernel, dessen Quellen nicht im normalen Repository zu finden sind.
Ich habe übrigens bei meinem Android-Tablet ähnliche Effekte, weil im Kernel ganz spezielle Anpassungen für die HW gemacht wurden, die es im "offiziellen" Kernel gar nicht gibt.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.145
Punkte für Reaktionen
1.113
Punkte
314
Ok, Leute!

Ihr zwei scheind echt fit auf diesem Gebiet zu sein. Das meiste von dem, was ihr geschrieben habt ist für mich absolutes Neuand und ich muß mich da erstmal sortieren. Ich stehe - wie gesagt, noch ziemlich am Anfang des Linux-Universum, aber ich bin gewillt mir das nötige Wissen anzueignen. Jedoch wird das bei mir wohl noch sehr viel Zeit und Energie in Anspruch nehmen, die ich nicht immer habe. Daher bitte ich schonmal um Nachsicht, falls sich dieser Thread in nächster Zeit ins Nirvana verabschiedet.

Eigentlich hatte ich ja eher an ein Tutorial gedacht, welches mit Noob-Mäßig den Weg dorthin beschreibt. Dein Weg, Micky hab ich in den Grundzügen zwar schon verstanden, jedoch werd ich mir an der Umsetzung bestimmt noch die Zähne ausbeißen. Aber sei's drum... ich werd es einfach mal versuchen.

Auf jedenfall schon mal vielen Dank für eure Ideen und die Unterstützung. Ich werde auf jeden Fall berichten, ob bzw. was es bei mir ergeben hat.

Tommes
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat