Dienstag Aug. 21, 2007

Tor, Privoxy, Firefox, Gentoo und anonym surfen

Naja... Anonym surfen ist ja etwas Augenwischerei im Internet. Google, CIA,  NSA, BND, Innenministerium und das Finanzamt sitzen ja eh schon überall drin - ok, kleiner Scherz am Rande ;-) Ich hab nix zu verbergen! Genau - solange, bis mal jemand bei der Schufa die Datensätze durcheinander bringt. Dann wird aus dem unschuldigen Bürger plötzlich der Kreditpreller. Ok, das wird natürlich nie passieren, auch klar oder? Schöne Aussichten. Ein bißchen Sarkamus muss ja auch mal sein ;-) Aber zurück zum Thema... Es gibt Seiten, da ist es wohl besser, wenn man sich etwas unauffälliger verhält, welche Gründe man auch immer haben mag dafür. Dafür ist das Gespann Tor, Privoxy und Firefox ideal.

Nun... Unter Gentoo ist das auch relativ schnell installiert. Zuerstmal die Software:

emerge -av tor
emerge -av privoxy

Firefox wird ja wohl jeder schon irgendwo rumliegen haben ;-) Was ist nun Tor eigentlich? Tor ist ein ganzes Netzwerk von Rechnern. Damit kann man ganz gut seine eigene IP-Adresse gegenüber der Seite verstecken, auf die man zugreifen möchte. Dazu wird der ganze Verkehr verschlüsselt (schon vom Client weg) durch das Tor-Netzwerk geschickt und das über mehrere Tor-Server hinweg. Der Weg ändert sich von Zeit zu Zeit, damit einem Angreifer es nicht zu leicht gemacht wird, den Weg zurück zu verfolgen. Was Tor allerdings nicht verbergen kann, ist alles, was der Browser mitschickt also z.B. Cookies oder Informationen, die über JavaScript ausgelesen werden. Dafür gibt's den Proxy Privoxy. Das Teil ist so mächtig, das ich mir eine genaue Beschreibung spare ;-) Wir wollen momentan nur erreichen, das der Browser möglichst wenig Informationen über uns rausrückt und das tut Privoxy schon sehr gut in der Defaulteinstellungen.

Eine Beispielkonfiguration von Tor liegt in /etc/tor. Dort kopieren wir die Datei torrc.sample nach torrc. Dort drin muss man eigentlich nicht viel umstellen. Die Defaulteinstellungen sind eigentlich ok. Tor startet man dann einfach mit

/etc/init.d/tor start

Damit der Service nach dem Rechner-Reboot wieder startet, führen wir noch

rc-update add tor default

aus. Dann wechseln wir zur Konfiguration von Privoxy nach /etc/privoxy. Dort müssen wir Privoxy in der Datei config mitteilen, das alle Anfragen über das Tor-Netzwerk laufen sollen. Also fügen wir am Besten (ist aber eigentlich egal) unter forward-socks4 and forward-socks4a Folgendes hinzu (wenn man die torrc nicht verändert hat diesbzgl.):

forward-socks4a / localhost:9050 .

Privoxy hat einen sehr großen Regelsatz. Da steht z.B. drin, das Anfragen an bestimmte Ad-Server (da wo die Werbung herkommt) rausgefiltert werden, Kommandos seitens des Servers zum Setzen eines Cookies entfernt werden, usw. Die Regeln und Aktionen findet man in den Dateien, die mit action oder filter enden. Die Dateien sollte man sich wirklich einmal genauer ansehen, aber Änderungen nimmt man nur in der user.action vor. Da diese Datei als Letztes eingelesen wird, überschreibt diese Datei Regeln, die in den davor genannten Dateien definiert wurden. Möchte man z.B. von bestimmten Seiten doch Cookies zulassen, fügt man diese Seiten einfach unter dem Abschnitt { allow-all-cookies } ein. Die Dateien sind sehr gut dokumentiert und es sind viele Beispiele drin. Einfach mal anschauen. Passt hier dann alles, starten wir Privoxy:

/etc/init.d/privoxy start

Auch hier wollen wir, das Privoxy beim Starten des Rechners ebenfalls hochkommt:

rc-update add privoxy default

Wenn man nun im Firefox unter den Verbindungseinstellungen angibt, das man über den Proxy localhost:8118 surfen möchte, schickt Firefox alle Anfragen an Privoxy, welcher dort alle sicherheitsrelevanten Angaben entfernt (wir wollen ja möglichst unerkannt bleiben) und leitet es an den Tor-Daemon weiter, welcher die Daten dann verschlüsselt und sie an's Tor-Netzwerk durchreicht. Man darf sich vom Tornetzwerk nicht allzu viel Performance erwarten. Das Ganze ist relativ langsam, aber man kann damit leben.

Wir können nun aber in den Firefox ein Skript laden, das genau definiert, welche Seiten wir über das Tor-Netzwerk besuchen wollen und welche Seiten direkt angefragt werden sollen. Das Ganze ist JavaScript sehr ähnlich und sieht z.B. so aus:

function FindProxyForURL(url, host) {
        if (isInNet(host, "193.222.168.0.", "255.255.255.0") ||
            dnsDomainIs(host, ".boeseseite.de") ||
                return "PROXY localhost:8118";
        } else {
                return "DIRECT";
        }
}

Hier legen wir also fest, das Anfragen an das komplette Class-C Netz 193.222.168.0/24 und an boeseseite.de über Privoxy und damit über das Tor-Netzwerk laufen und der Rest ganz normal direkt angefragt wird. Man kann damit noch viel mehr machen. Genaueres gibt es hier nachzulesen: Navigator Proxy Auto-Config File Format

Diese Datei muss beim Firefox dann nur noch in den Einstellungen/Erweitert/Netzwerk angegeben werden z.B. file:///home/user/proxy/proxy.pac und schon werden die Einstellungen aktiv. In diesem Sinne...

Technorati Tags: , , , , ,

Donnerstag Aug. 16, 2007

Ein schönerer Firefox

Nach dem mein KDE nun ja schon eine Weile mit CompizFusion läuft, was einfach verdammt cool ist, hab ich dann letztendlich auch den Window Manager Emerald installiert, was dann noch cooler ist ;-) Dem hab ich dann das Theme Darkly Glassed  verpasst. Jetzt hatte ich eine wunderschöne dunkle Oberfläche, nur der komische Firefox war immer noch helle :-( Aber kein Thema! Jetzt gibt es endlich ein dunkles Theme für den Firefox, das wirklich schön ist und verdammt gut aussieht: NASA Night Launch 

Ein kleines Goodie für Linux-User mit KDE gibt's dann noch hier: Firefox Form Widgets Das gibt dann noch schöne Buttons im Firefox :-)

Technorati Tags: , , , , , , ,

Mittwoch Aug. 15, 2007

Thunderbird: Extensions

Es gibt ja nicht viele Thunderbird-Addons, die wirklich gut sind, aber ein paar davon sind sehr praktisch und haben sich bei mir bewährt:

Folderpane Tools: Was mich schon seit jeher gestört hat ist, das man die Ordner/Accounts links nicht nach seinem Geschmack sortieren konnte. Wenn man mehrere Konten verwaltet, dann stört das. Folderpane kann genau das.

SmtpSelect: Einfach über einen Button auswählen, welchen SMTP-Server zum Versenden einer Nachricht man gerne verwenden möchte.

XNote: XNote ermöglicht, zu jeder Mail eine Notiz abzuspeichern. Das ist recht schön gelöst und Nachrichten mit Notzizen sind dann auch gelb (default) hinterlegt.

Allow HTML Temp: Die wichtigste Erweiterung überhaupt. Ich hasse HTML-Mails. Diese Erweiterung macht grundsätzlich mal Text draus und wenn's dann doch nicht anders geht, kann man den Button "Show HTML" bemühen, wenn man den Button entsprechend in die Buttonleiste eingefügt hat.

Das war's eigentlich schon. Mehr braucht der Thunderbirder eigentlich nicht ;-)

Technorati Tags: , , , , ,

MPLAYER: Bilderstrecke von einem Video extrahieren

Mit der Zeit sammelt sich ja doch u.U. eine größere Sammlung von Videos an und alle liegen in div. Formaten vor. Mein Ziel war es nun, eine gewisse Anzahl von Frames aus jedem Video zu extrahieren und eine Kollage zu erstellen, die ich dann in eine HTML-Seite einbinden kann. Damit kann ich dann eine Preview aller Videos, die irgendwo auf der Platte so rumliegen, im Browser anguggen. Unter Windows gibt es dafür ein sehr schönes Programm, das sich Image Grabber II nennt. Da die Homepage von Image Grabber II eigentlich nie erreichbar ist, sucht ihr am Besten mal bei Google, wo man es downloaden kann. Das Programm ist Freeware. Man gibt z.B. an, das man 30 Bilder von dem Video haben möchte und Image Grabber II erstellt dann 30 Thumbnails, die es dann wiederum zu einer Übersichtsgrafik zusammen fügt. Es unterstützt alle möglichen Videoformate. Nun... Sowas wollt ich auch unter Linux haben. Ich habe leider nichts Entsprechendes gefunden, aber wie so oft - mplayer to the rescue z.B.:

mplayer -nosound -sstep 10 -vo jpeg:outdir=/tmp/test test.wmv

mplayer spielt die Videodatei in diesem Fall ohne Sound ab (-nosound) und gibt ein Bild im JPEG-Format alle 10 Sek. (-sstep 10) in das Verzeichnis /tmp/test aus. Wenn man also eine Videodatei hat, die 60 Sek. lang ist, erhält man 10 Bilder im angegebenen Verzeichnis. Das ist schon mal ganz nett, aber wie erstellt man jetzt aus diesen Einzelbildern eine Kollage? Nun, da muss ich mal guggen, wie ich das am Besten anstelle, aber derweilen habe ich mir Picasa von Google für Linux runtergeladen. Das läuft unter Wine. Damit lassen sich schöne Kollagen erstellen. Falls jemand ein Programm weiss, das das nativ unter Linux macht: Immer her damit :-)

Noch eine Anmerkungen zu den Videoformaten unter x86_64 (AMD64/EMT64): Viele Codes liegen nur als 32Bit vor. Mein Gentoo ist aber 64bit. Viele Videos laufen problemlos, aber WMV z.B. macht schon etwas Probleme. Aber die Gentoo-Entwickler haben einen ziemlich coolen Workaround gebastelt, der hier beschrieben ist: HowTo AMD64  -Mplayer and 32bit codecs

Im Prinzip ist die Sache relativ einfach. In die /etc/portage/package.keywords trägt man folgende Zeilen ein:

media-video/mplayer-bin
media-libs/win32codecs
app-emulation/emul-linux-x86-medialibs
app-emulation/emul-linux-x86-soundlibs
app-emulation/emul-linux-x86-baselibs

und macht dann einen

emerge -av mplayer-bin

Das installiert dann Einiges nach u.a. auch die Win32 Codecs. Anschließend ruft man dann nicht mplayer auf sondern

mplayer-bin -nosound -sstep 10 -vo jpeg:outdir=/tmp/test test.wmv

Und schon sollt's funktionieren... :-) In diesem Sinne: Volle Kanne!

Update 2007-08-16: Ich hab ein Tool gefunden, das unter Linux ähnlich arbeitet wie Imagegrabber II unter Windows. Es nennt sich VideoCut. Tolles Programm! Frisst zwar noch nicht alle Formate, aber ein ffmpeg-Backend ist in Arbeit. Aber eigentlich wollte ich ja was für die Kommandozeile ;-)

Technorati Tags: , , , , , , , , , , , ,

Donnerstag Aug. 02, 2007

POSTGRESQL: Wie finde ich raus, wieviel Speicher eine DB auf der Platte verbraucht

Tino Schwarze hat dazu eine nettes, kleines Skipt auf der Postgres-Mailingliste gepostet, welches relativ selbsterklärend ist:

#!/bin/bash
#
# Shell script to determine disk usage of PostgreSQL databases.
# by Tino Schwarze/Community4you
#

PGDATADIR=/data/db1
PGPORT=5432
PSQLBIN=/opt/pgsql/8.2.4/bin/psql
PGOPTS="-U postgres"

echo "PostgreSQL database sizes"
$PSQLBIN $PGOPTS -p $PGPORT -t -F " " -A template1 -c 'select oid,datname from pg_database' | \
        while read oid dbname ; do
                [ "$dbname" != "template1" ] || continue
                [ "$dbname" != "template0" ] || continue
                size="`du -sh $PGDATADIR/base/$oid | cut -f 1`"
                while [ ${#dbname} -lt 16 ] ; do dbname="$dbname " ; done
                printf "$dbname\t%6s\n" $size
        done

Have fun!

Technorati Tags:

POSTGRESQL: Database must vacuumed within XXXXXXX transactions

Puh... Da guggste erstmal etwas ungläubig aus der Wäsche, wenn dir Postgres folgende Meldung um die Ohren legt:

2007-07-31 19:27:33 CEST   WARNING:  database "userbase" must be vacuumed within 999831 transactions
2007-07-31 19:27:33 CEST   HINT:  To avoid a database shutdown, execute a full-database VACUUM in "userbase".
2007-07-31 19:27:33 CEST   WARNING:  database "userbase" must be vacuumed within 999830 transactions
...
2007-07-31 19:27:33 CEST   WARNING:  database "userbase" must be vacuumed within 999809 transactions
2007-07-31 19:27:33 CEST   HINT:  To avoid a database shutdown, execute a full-database VACUUM in "userbase".
2007-07-31 19:27:33 CEST   ERROR:  could not access status of transaction 539227074
2007-07-31 19:27:33 CEST   DETAIL:  could not open file "pg_clog/0202": No such file or directory

Das Schöne dabei ist, das dann gar nix mehr geht und Postgres sicherheitshalber keine Verbindungen mehr annimmt - auch nicht vom Administrator. Schon schick... Nun zurückzuführen war das Ganze auf einen Bug im Autovacuum-Daemon, der mit Version 8.1.7 behoben wurde. 8.1.5 war aber am Laufen.

Was hab ich also gemacht? Im Gegensatz zum Oracle Support, der Core-Dumps auch nach 3 Monaten nicht analysiert bekommt, ist die Postgres-Mailingliste eine echte Wohltat. Apropos Oracle Support: Mein Gott ist der inzwischen schlecht geworden... Nichts für ungut, aber ich mach mit Oracle jetzt seit über 8 Jahren rum und ich bin sowas von froh, wenn die letzte Oracle abgeschaltet wird. Aber das nur nebenbei... Nachdem ich schon eine Weile am Suchen war, hat ein kleiner Tipp eines Users der Mailingliste (Antwort hat ca. 15 Min. gedauert...) mich weitergebracht.

Im Endeffekt habe ich Folgendes gemacht: Es fehlte der DB angeblich ein Transactionlog names 0202. Das war aber eigentlich Blödsinn, denn soweit war er mit seinen Logs noch gar nicht. Zuerst hab ich ein Upgrade von 8.1.5 auf 8.1.9 gemacht, da dort der Bug behoben war. Ich hab dann im Verzeichnis pg_clog das Log FFE (das hat mir am Besten gefallen) nach 0202 kopiert (DB war dabei natürlich unten). BTW: Ein Backup der Daten wäre schon angebracht, bevor man das macht ;-) Dann hab ich ein Skript ausgeführt, das die Postgres im Standalone Mode startet (kann man in der Postgres Doku nachlesen):

postgres -d 2 -S 50000 -B 300000 -D /var/lib/postgres userbase << SQL
VACUUM FREEZE
SQL


Das hat dann jede Menge Transactionlogs weggeschmissen, aber immerhin lief das durch. Anschließend (zur Sicherheit):

postgres -d 2 -S 50000 -B 300000 -D /var/lib/postgres userbase << SQL
VACUUM FULL VERBOSE ANALYZE
SQL


Dann hab ich die DB wieder gestartet. Und tata: Lief wieder! Aber dadurch, das der Autovacuum nicht sauber lief aufgrund des Bugs, war jetzt natürlich max_fsm_pages zu klein geworden (das sieht man dann, wenn man ein "normales" VACUUM auf die DB macht zum Schluss). Ich mußte also noch ein VACUUM FULL auf alle Instanzen durchführen, damit alles wieder aufgeräumt wird. Das ist übel, aber unvermeidlich in diesem Fall.

In diesem Sinne: Volle Kanne!

Technorati Tags: