Serendipity und IPv6

Saturday, October 6. 2012

Serendipity ist die Software, die dieses Blog liefert, und wegen eines IPv6-bezogenen bug dieser Software war dies blog mehr als einen Tag offline. 
Serendipity hat ein plugin Spamschutz mit einer Reihe von Möglichkeiten, Kommentarspam zu bekämpfen, und eine davon ist, erkannte Spammer per IP vom Zugang zum Blog auszuschliessen. Das hat sich hier gegen bestimmte Serienspammer erstaunlich gut bewährt. 

Bis der erste Spammer mit einer IPv6-Adresse gelogt wurde, danach war mein blog weg.

Das Problem ist: 

serendipity_event_spamblock.php patzt bei der Behandlung von IPv6-Adressen. IPv4 sind kürzer als IPv6 Adressen.
(IPv4: 4 Teile x 3 Stellen + 3 Trenner = 15 Zeichen  IPv6: 8 x 4 + 7 = 39). Darauf ist das plugin nicht eingerichtet.
Wenn man in der config des Plugin "SPAM IP Adressen via HTaccess blocken? " 'Ja' ankreuzt und eine IPv6-IP als Spam erkannt worden ist, dann schreibt das Plugin in die .htaccess etwas ähnliches wie:
 
#SPAMDENY
Deny From 205.189.73.46 205.189.73.64 208.89.211.173 217.157.179.122 24.62.10.133 
2607:5300:10:60 31.135.196.229 37.10.106.185 37.10.112.228 37.10.116.107 37.10.116.35 
#/SPAMDENY
 
Problematisch ist der Eintrag '2607:5300:10:60' Das ist keine gültige IP sondern nur die vordere Hälfte einer IPv6. Und so bekommt man nun bei jedem Versuch, das Blog zu laden, eine wunderschöne 500er-Fehlermeldung mit dem Hinweis auf 'invalid IP'
 
Das Hackstück aus der .htaccess zu löschen hilft auch nicht, denn mit dem naechsten Spammer wird der ganze deny from... - Block neu aus der Datenbank gelesen und eingeschrieben, incl. des fehlerhaften Eintrags. Die zuständige Tabelle heisst serendipity_spamblock_htaccess und ist wohl auch gleich die Schuldige an dem Bug. 
 
Diese Tabelle hat zwei Felder, timestamp vom Typ varchar(19) unsigned und ip vom Typ varchar(15). Eine Breite von 15 ist fuer legacy IPs grad recht, für IPv6 ist das ein Fehler. Benötigt wird eine Feldbreite von varchar(39). 
 
Massnahmen:
- Breite des Feldes ip auf 39 hochsetzen
- alle (in meinem Fall nur 1) defekte IPv6 löschen
o shell öffnen, 
o mysql -u (username) -p (und passwort)
o use (datenbankName)
o delete from `serendipity_spamblock_htaccess` where (`ip` like "%:%");
- auf den nächsten Spammer mit IPv6 warten...

Notizen zu Arch Linux

Friday, October 5. 2012

 Das wird wohl nicht nur mir so gegangen sein: die ersten pointer auf Arch Linux liefert Google, immer wieder finden sich in den Ergebnissen zu Suchen auf >Programm und Problem< recht weit oben brauchbare Texte aus wiki.archlinux.org. Früher oder später, bei mir eher später, realisiert man, dass das eine Linux-Distribution ist, die womöglich etwas Interessantes hat. Rolling Release.

Eine Test-Installation in einer vm gefällt mir (nachdem ich das karge Ödland der Installation tapfer durchquert habe, eine Mutprobe und Fegefeuer, um sicher zu stellen, dass nur Kommandozeilen-feste Leut' mit Zweitrechner (um die nächsten Installationsschritte im Wiki nachzulesen) dazustossen. So installiere ich Arch bald schon auf einer freien Partition, eigentlich nur zum Test aber bald schon wird es zum default.

Unter debian bin ich das Gefühl nie los geworden, dass der KDE nur missmutig mitgeschleppt wird, und was KDE-PIM angeht kommen meine Beschreibungen um das Attribut mutwillig kaum herum. Bei AUR ist das nicht so und meine ganzen "Lieblingsbaustellen" funktionieren plötzlich.

Ausserdem mag ich es einfach, ringsum die aktuellen Versionen zu haben und nicht auf das übernächste release hoffen zu müssen...

Es gibt auch Nachteile, oder zumindest Mühseligeres. Debian hat einfach ein riesiges Meer an Paketen und wenn mal doch etwas von dritter Seite dazukommen muss, kann man ziemlich darauf setzen, dass ein .deb im Angebot ist. Arch-Pakete hat natürlich keiner und so hat es länger als einen Monat gedauert, bis ich meinen Brother Laser endlich installiert bekommen habe.

Und die Paketwelt ist bei Arch zweigeteilt, es gibt die offiziellen packages, die man mit pacman -S installiert und mit pacman -Syu aktuell hält. Und dann gibt es die Arch User Repositories, AUR, mit einer Sammlung von build files, mittels derer man sich die entsprechenden Programme selbst als source lädt, kompiliert und dann letztlich installiert. Der vorletzte Link hat eine ausführliche Anleitung, die Kurzfassung ist:

  • die AUR-Seite finden, Kommentare lesen, ggf auch mal nach Alternativen schaun
  • benannte Abhängigkeiten erfüllen
  • tarball mit buildfiles an gesonderten Platz herunterladen (zB: /usr/local/src/AUR mit Schreibrechten für den user, dort wget paketurl)
  • tarball auspacken, hineinwechseln und dort als user makepkg -s
  • dann, wenn der build geklappt hat, als root mit pacman -U paketName.tar.xz installieren

Das sind dann foreign packages und pacman listet alle solchen mit pacman -Qm

 Etwas Vereinheitlichung zwischen den beiden Paketsorten und deren Handling schafft yaourt,  "Yet AnOther User Repository Tool". yaourt ist eine Erweiterung für pacman, welche die Benutzung des AURs direkt aus dem Paketmanager heraus erlaubt. Ich habe die im Wiki beschriebene Installation aus dem französischen Repository gewählt, also /etc/pacman ergänzen um:

[archlinuxfr]
Server = http://repo.archlinux.fr/$arch
und dann 
pacman -Syu yaourt
 

 

(Page 1 of 1, totaling 2 entries)