Entries filed under Networking

XMPP/Jabber, VoIP(jingle), Webcam und Remote Desktop auf Dockstar

Posted on 30. April 2011 Comments

Wenn man sich die anderen Beiträge hier anguckt, merkt man, dass ich mich in letzter Zeit ziemlich viel mit XMPP/Jabber, Verschlüsselung und VoIP beschäftige. Leider gab es lange Zeit keine gute Alternative zu Skype aber nach ein paar Stunden testen, meine ich tatsächlich eine Lösung gefunden zu haben: jitsi. Wer das schon länger verfolgt, kennt das Programm vielleicht noch unter dem Namen SIP-Communicator. Inzwischen ist es ein vollwertiger Instant Messenger, der auch ICQ, Windows Live(MSN) und weitere Messenger unterstützt. Mit der Implementierung von jingle gehen jetzt auch Voice Calls und Webcam, grade unter Windows 7 zu Windows XP und Ubuntu 10.04 getestet.

Nun ist man natürlich immer noch abhängig vom Anbieter des XMPP-Servers, allerdings nicht mehr von Red5, welches in Java geschrieben ist und somit wohl eher nicht auf z.B. der Dockstar (->Openfire) läuft. Mit der ebenfalls Webcam und Audio möglich war, s. jabber-server.de/red5 über Spark(Client) und Openfire (Server). Hier also mal eine kleine Auflistung von öffentlichen Jabber-Servern:

Für optimale Privacy kann man natürlich auch einen eigenen Jabber-Server, z.B. ejabberd aufsetzen. Das funktioniert auch mit einer 1GHz ARMEL CPU auf der Dockstar (!)

Ein sehr geiles Feature, nach dem ich überhaupt nicht überhaupt gesucht hatte, ist die Remote-Desktop Funkionlität. Sonst habe ich das immer über das proprietäre logmein.com/hamachi gemacht, aber das gefällt mir natürlich besser:) OTR für’s chatten ist eingebaut und funktioniert auch out-of-the-box mit Pidgin auf der Gegenseite( und damit wohl auch Adium)

update: Die Gespräche sind über ZRTP verschlüsselt

Flattr this!

Pidgin und OTR in einer Datei

Posted on 28. April 2011 Comments

Bei einer Diskussion beim Easterhegg 2011 kamen wir auf die Idee, dass die Leute vielleicht einfacher dazu bewegen wären, Pidgin mit OTR-Verschlüsselung zu installieren, wenn es einfach nur eine Installationsdatei geben würde und man nicht, wie auch z.B. in meinem Blog(engl.), man eine Anleitung dazu schreiben muss. Diese hier ist einfach:

1. Download

2. Draufklicken

  • Pidgin Version: 2.7.11
  • pidgin-otr Version: 3.2.0-1

(Sowohl Pidgin als auch pidgin-otr sind freie Software unter der GPL.)

//edit: Alternativ lohnt sich auch Jitsi, das auch noch Skype(Audio/Webcam) und Remote-Desktop Programme ersetzen kann.

Flattr this!

Internet Verbindung ueber WLAN teilen mit Xubuntu 10.04

Posted on 8. Februar 2011 Comments

Ganz einfach eigentlich, man muss nur im XFCE4 Network Manager Neues Funknetzwerk erstellen… anklicken, einen Netzwerknamen(SSID, <=32 bytes) eingeben und eine Verschlüsselung eingeben, möglichst nicht WEP, weil das bekanntlich leicht knackbar ist, dann ein Passwort. Er verbindet sich dann selbst zu dem Netzwerk und teilt somit die Internet Verbindung die per Kabel oder 2ter W-LAN Karte kommt. Mit der selben W-LAN Karte die Verbindung teilen geht nicht.

Hier nochmal in Bildern(click to enlarge):

Neues Netzwerk erstellen
Neues Netzwerk erstellen

SSID, Verschlüsselung und Passwort eingeben
SSID, Verschlüsselung und Passwort eingeben

Einstellen nachschauen:

Rechtsklick auf Network Manager, Verbindung bearbeiten...
Rechtsklick auf Network Manager, Verbindung bearbeiten…

Entsprechendes Netzwerk auswählen und bearbeiten klicken
Entsprechendes Netzwerk auswählen und bearbeiten klicken

Verbindungstyp sollte AdHoc sein
Verbindungstyp sollte AdHoc sein

Methode sollte Gemeinsam mit anderen Rechnern sein.
Methode sollte Gemeinsam mit anderen Rechnern sein.

Beim nächsten Mal ist die Verbindung schon gespeichert
Beim nächsten Mal ist die Verbindung schon gespeichert:)

Flattr this!

IPv6 Privacy extensions Ubuntu 10.04

Posted on 15. Januar 2011 Comments

If not already happened, add the following to /etc/udev/rules.d/70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*",
RUN+="sysctl net.ipv6.conf.%k.use_tempaddr=2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*",
RUN+="sysctl net.ipv6.conf.%k.use_tempaddr=2"

Usually this happens when installing miredo or similar IPv6 tunneling software, but you might want to double-check it. Also, check if the eth* and wlan* fit your ethernet/wifi devices.

btw, unfortunately Android and I-Phone Devices don’t have this, which causes quite a bit privacy concerns, see heise.de on IPv6 on Smartphones for more information (German)

Flattr this!

iodine – free wifi hotspots mit IPv4 ueber DNS und Dockstar

Posted on 5. Dezember 2010 Comments

Jeder kennt das Problem, das man am Gate am Flughafen sitzt oder im ICE und es gibt einen W-LAN Hotspot, nur leider muss man dafür zahlen…In Australien gab es an jeder Ecke Paid HotSpots(häufig Global Gossip), zu horrenden Preisen und mit einer unverschämt langsamen Verbindung.

Nun hab ich grade eine Lösung für solche bzw. die meisten solcher unangenehmen Anbieter gefunden: iodine

Dieses kleine Programm sendet alle Pakete über Port 53, also DNS, welches die meisten Firewalls durchlassen, testen kann man das mit folgendem Befehl oder mit dig:

$ ping repat.de
PING repat.de (212.12.54.159) 56(84) bytes of data.

Wenn sich also der Name in eine IP-Adresse auflöst, dann sollte das hier prinzipiell möglich sein.

Eine kleine Anleitung, da ich hier nicht alles aufschreiben kann, was gemacht wurde: Als erstes muss eine Subdomain eingerichtet und DNS richtig konfiguriert werden für die Domain, dazu braucht man vollen Zugriff. Es ist mit einer dyndns Adresse unseres Wissens nicht möglich, s. dazu das README .

Dann kann man auf der Dockstar, einem kleinen Homeserver, oder auch auf jedem beliegen Server, auf den man Root-Zugriff hat, den iodine-server starten :

iodined -P password 192.168.3.123 meine.dyndns.tld

Auf dem Client jetzt die /etc/default/iodine anpassen:

# Default settings for iodine. This file is sourced from
# /etc/init.d/iodined
START_IODINED="false"
IODINED_ARGS="192.168.3 tunnel.domain.tld"
IODINED_PASSWORD="Passwd"

Falls man die Dockstar benutzt, muss man nur noch Port 53 auf die Dockstar IP im Router forwarden und den Client starten:

sudo iodine -f tunnel.domain.tld

tunnel.domain.tld ist die subdomain, die von der Domain für meine dyndns Adresse eingerichtet ist.

Voila, kostenloses Internet überall:)

//update

Geschwindigkeitsoptimierer:

  • Bilder ausstellen
  • Einen User-Agent von mobilen Geräten/Smartphones benutzen(z.B. mit User Agent Switcher als Firefox-Plugin)
  • Opera Turbo aktivieren beim Opera Browser(Website wird von Opera Servern angefragt, komprimiert, dir zugesendet und dort wieder entpackt, also quasi ein Proxy)
  • lynx als textbasierten Browser

Es gibt auch noch eine ICMP Version: ICMPTX

Flattr this!

Skype Alternative: XMPP/jabber mit jingle

Posted on 20. November 2010 Comments

Es wird nicht gerade wenig Energie darauf verwendet, Skye nicht reverse engineerbar zu gestalten. Niemand weiß also, was da eigentlich passiert.

Zum Glück gibt es (schon seit einiger Zeit) eine freie Alternative zu Instant Messaging Programmen: Jabber bzw. das Protokoll XMPP. Das wird übrigens auch von Google Talk, Facebook Chat, einigen Android Anwendungen und vielen mehr verwendet. Um Sprache zu übertragen braucht der Jabber Client zusätzlich noch die sog. jingle – Erweiterung.

gajim, jabbin und empathy unter Linux haben beide diese Funktionalität und es klappt auch wunderbar, das habe ich grade mit meinem eigenen dockstar jabber server ausprobiert, allerdings stürzte empathy noch ab, gajim funktionierte einwandfrei. Jetzt muss man nur noch seine Freunde davon überzeugen, sich einen Jabber Account zuzulegen, z.B. bei jabber.org oder jabber.ccc.de

Flattr this!

Apache2, mod_security, mod_chroot und OpenID

Posted on 5. November 2010 Comments

So, das war eine lange Nacht…

Ein Debian Server mit OpenID auf der Dockstar sollte es werden, garnicht so einfach. Ich hatte mich für phpmyopenid, einer Installation des populären phpmyid entschieden, das Ganze läuft über apache2.

Den hatte ich hier schonmal so sporadisch am laufen, aber ich hatte mir nie wirklich Gedanken um Sicherheit gemacht, da ich den immer nur kurz an und dann gleich wieder ausgestellt hatte. Hier also ein paar Tricks zum Sichern eines Apaches(keine Garantie für irgendwelche Schäden bzw. Entschädigung für Hacks etc!)

Diese nette Anleitung von petefreitag.com: 20 ways to Secure your Apache Configuration

Das Modul mod_security, dafür gibt es folgendes Debian Paket: libapache-mod-security und mod-security-common

Das Modul mod_chroot, dafür gibt es ebenfalls ein Debian Paket: libapache2-mod-chroot und mod-chroot-common

Die müssen erstmal installiert werden. Am besten mal Google danach fragen, da muss man sich einfach reinlesen, und zwar nicht grade wenig;)

Dann kann man eigl dieser Anleitung auf howtoforge folgen.

Ich hab mich für 3.2 entschieden, da eh nur eine Instanz bei mir läuft. Den Link zu dem PID File brauchts aber trotzdem. einfach in /etc/apache2/sites-available/default von /var/www zu / tauschen.

Nun müssen die richtige Rechte gesetzt werden, da bin ich mir nicht ganz sicher. Damit phpmyopenid läuft muss, natürlich, php5 installiert sein.

Im Jail geht das nun aber eigl nicht, also hab ich mal den Ordner in /var/www kopiert, erstmal alle Rechte gegeben und dann so eingestellt, dass nur Eigentümer und Gruppe drauf zugreifen können. Apache läuft bei mir nicht mehr unter der Standartgruppe und der User hat auch keine shell sondern /dev/null.

#cp -r /var/lib/php5 /var/www/var/lib
#chmod -R 777 /var/www/var
#chmod -R o-rwx /var/www/var

Das müsste ja insofern sicher sein, als dass das Ding ja eh in ner Art Sandbox läuft oder? Vll kann das ja mal jmd kommentieren oder mir ’ne Mail schicken. Selbst wenn jetzt der OpenID Server komprimitiert wird, ist der Server an sich ja sicher.

Damit man die Fehlermeldung noch umgeht hab ich in /etc/httpd.conf (wird von apache2.conf eingebunden) noch

ServerName alice.bob.org

geschrieben mit alice.bob.org als meinem dyndns Namen.

phpmyopenid war nicht wirklich schwierig:

  • mit wget runterladen
  • mit unzip entpacken
  • ordner nach /var/www verschieben
  • aus dem Versionsordner so entpacken: http://bob.alice.org/phpmyopenid
  • http://bob.alice.org/phpmyopenid/install.php
  • #rm /var/www/phpmyopenid/install.php

So das war’s hoffentlich, auf Rückmeldung bin ich immer gespannt:)

Anmeldungen sind natürlich witzlos ohne Verschlüsselung, deswegen wird das nächste Projekt wohl SSL sein, natürlich ein eigenes Zertifikat(s. Alternativlos Folge 5)

update:

Tipp: damit der Workload nicht so gross wird, einfach in der /etc/apache2/httpd.conf die Paramter StartServers und die folgenden ein bisschen runtersetzen, ausser man betreibt tatsächlich eine Homepage.

Flattr this!

Jabber Server mit Debian Dockstar

Posted on 3. November 2010 Comments

Nach einigem Nachdenken, was ich nun(neben FTP/HTTP) mit dem Teil eigl anstellen will, kam mir die Idee eines eigenen Jabber Servers.
Im Ubuntu Wiki findet sich eine ziemlich gute Anleitung zu „ejabberd“, einem sowohl populären als auch einfachen Jabber-Server.

# apt-get install ejabberd
# dpkg-reconfigure ejabberd

Als Hostname habe ich da meinen schon vorhandenen DynDNS Namen genommen. Dann wurde ein Admin erstellt, Ports gemappt und es klapppt eigentlich auch schon. Evtl. bzw. je nach Wunsch kann/sollte man dann noch die Registrierung für neue User ausstellen.

Blöd nur, dass die DynDNS Adresse ja vom LAN aus nicht erreichbar ist. Ich habe da folgende Workarounds gefunden.

1. Kann man in den Einstellungen in den meisten Clienten den Server eingeben, bei dem man sich einloggen möchte, hier hab ich die lokale IP eingeben und bei Hostname trotzdem den DynDNS Namen(Screenshot)

2. Kann man in der Datei /etc/hosts einfach mit

IP DynDNS

also z.B.

192.168.1.3 homeserver.dyndns.org

eingeben und man wird automatisch weitergeleitet, das führt auch zu keinen Schwierigkeiten beim Zertifikat, Pidgin zumindest hat nochmal nachgefragt.

Vorteil an 1. Variante ist, dass man sich 2 Accounts erstellt, jenachdem wo man ist(nützlich bei Laptop) nimmt man eben einen anderen Account. Bei Desktop PCs ist es dann ziemlich egal was man nimmt, da geht 2. genauso gut, ich wollte nur beides erwähnen, weil mir die /etc/hosts als erstes einfiel.

Was natürlich auch noch geht, ist Proxys bzw. TOR nutzen und sich dann über fremde Server wieder zuhause einwählen um dann wieder in die weite Welt hinauszutelefonieren. Quark also;)

Vielleicht kommt ja in nächster Zeit noch was, meine nächste Idee wäre OpenID…mal sehen ob das klappt….z.B. für identi.ca

update:

Hab’s geschafft: OpenID auf meiner Dockstar

Flattr this!

Diaspora on Dockstar with Debian Lenny

Posted on 13. Oktober 2010 Comments

I’ll write this in English because more people might want to read it;)

Diaspora, programmed by 4 young hackers in NYC, is „The privacy aware, personally controlled, do-it-all, open source social network“(joindiaspora.com). Some say it’s gonna be a facebook killer, some say it’s gonna fail for various reasons. Basically, the idea is to create your own server – seed – which „speaks“ to other servers on the diaspora network, so a decentralized network instead a central server(farm) like facebook or several others. The main reason to do this is that your data stays in your own hands. Therefore everybody would have to install their own servers, which 99,9% of all internet users wouldn’t, simply because they wouldn’t know how.

Unfortunately they decided to write the whole thing in ruby(on rails), which I don’t know and most of the paid-hosters don’t support by default(unlike http/php/mysql/perl). As the database system they chose MongoDB, unusual as well.

My idea would have been, to install Diaspora on a mini server like the Sheeva Plug or Dockstar(3-5 Watt), with a debian/gentoo system on a USB Stick. It’s not to hard, there are a lot of tutorials on the internet. All the packages, like ruby/rake are supported. But would have? Yes, because obviously MongoDB doesn’t support ARM(Debian Lenny on a Dockstar with all dependencies installed):

In file included from db/../bson/bsoninlines.h:21,
from db/jsobj.h:43,
from db/jsobj.cpp:21:
db/../bson/util/atomic_int.h:96:4: error: #error "unsupported compiler or platform"
scons: *** [db/jsobj.o] Error 1
scons: building terminated because of errors.

So unless you want to keep your HomePC running 24/7(effect on environment? energy cost?), there’s no chance to host your own Diaspora seed at home. Therefore you have to pay a hoster to do so, and nearly nobodie’s gonna do that, because facebook is for free. I don’t think Diaspora will change their database system, so this goes out to all MongoDB developers: Please add support for ARM! According to this post on in a google group it can’t be too hard, but I really can’t tell:/ As I found out while googling I obviously wasn’t the only person who thought this might be a good idea:)

I’ll try to keep you uptodate, if anybody finds a solution, please post a comment:)

update: I just tried to use the same code for ARM as for i386 and – of course – got an error:

/tmp/ccEB7sgz.s: Assembler messages:
/tmp/ccEB7sgz.s:7236: Error: bad instruction `lock'
/tmp/ccEB7sgz.s:7237: Error: bad instruction `xadd r3,[r2,#0]'

Unfortunately I don’t know any ARM ASM, but maybe someone can translate?

update: In the code(/bson/util/atomic_int.h) it said

#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
// this is in GCC >= 4.1

So I just added || defined(__arm__) because my dockstars gcc said:

# gcc -v
Using built-in specs.
Target: arm-linux-gnueabi
Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.2-1.1'
 --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,
objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib
 --without-included-gettext --enable-threads=posix --enable-nls
 --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu
 --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --disable-libssp --disable-sjlj-exceptions
 --enable-checking=release --build=arm-linux-gnueabi --host=arm-linux-gnueabi --target=arm-linux-gnueabi
Thread model: posix
gcc version 4.3.2 (Debian 4.3.2-1.1) 

I thought this might work. Then it compiled for about 3 hours and I got this error:

db/jsobj.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/db/../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
util/message.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/util/../util/../db/../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
db/stats/counters.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/db/stats/../../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
/root/mongo/db/stats/../../bson/util/atomic_int.h:29: undefined reference to `__sync_fetch_and_add_4'
/root/mongo/db/stats/../../bson/util/atomic_int.h:29: undefined reference to `__sync_fetch_and_add_4'
db/stats/counters.o:/root/mongo/db/stats/../../bson/util/atomic_int.h:29: more undefined references to `__sync_fetch_and_add_4' follow
s/chunk.o: In function `mongo::AtomicUInt::operator++()':
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
scons: *** [mongodump] Error 1
scons: building terminated because of errors.

Any ideas? Seems like gcc has to be >= 4.4.0. Might be a good idea to install squeeze instead of lenny but it’s nearly 5am and I can’t be bothered now;)

Update: at the MongoDB Bugtracker the user Eliot Horowitz stated:

„Unfortunately compiling is only a small portion of the issue.
The bigger problem is endianness – which is fixable, just a fair amount of work.“

I guess we’ll just have to wait-.-

Update: Great news! Looks like somebody finally did it:

Although they did not really write a tutorial… I can’t seem to find that many differences in the code but it’s definitly right, that ARM is bi-endian(didn’t know that until my professor told me this semester). Might work with the newser gcc version. Anyway, if I find some free time, I’ll test it.

 

Related:

 

Flattr this!

mapstraceroute – graphical traceroute with google maps

Posted on 17. Mai 2010 Comments

German/Deutsch

Wird mal wieder Zeit für ein neues Projekt von mir. Ich hatte ja schonmal irgendwann über Gtrace/Geotrace/xtraceroute etc geschrieben, aber diese Programme sind alle schon knapp 10 Jahre alt. Teilweise funktionieren sie noch aber in Zeiten von google maps und APIs kam mir die Idee ein neues Programm zu schreiben, in Python. Ich hab wirklich einfach mal drauf losgeschrieben, ohne einen Plan. Der Code sieht nicht besonders schön aus(grade nicht für python), das weiss ich.

Das Programm bekommt also vom Programm traceroute die IP-Adressen, holt sich dann von hostip.info die entsprechenden Koordinaten und mithilfe des python wrappers für die google maps API pymaps wird dann eine HTML-Seite erstellt. Diese wird direkt im Anschluss über das python modul python-gtkmozembed angezeigt. Sie enthält allerdings bis jetzt nur Punkte. Demnächst werd ich mich nochmal damit beschäftigen, dass zwischen den Punkten dann in der richtigen Reihenfolge auch Linien gezogen werden. So sieht das Ganze bis jetzt aus.

English

Time for another one of my projects. I blogged about GTrace/Geotrace/xtraceroute a while ago, but these applications are nearly 10 years old. They partly work but in times of google maps and APIs my idea was to write a new app, this time in python. I really didn’t have any plans how to do it, I just started writing. It’s not very code(especially for python), I know.

My application gets the IP adresses from the (system) traceroute command, then receives the coordinates from hostip.info and with the python wrapper for the google maps API – pymaps – a HTML page is genereated. This HTML page if opened by the python module python-gtkmozembed. Until now there are only points, but if I’ve got some free time in the next couple of months, I’m trying to draw lines too. This is what it looks like until now.

Requirements:

How-To:

  1. Download
  2. unpack and cd in the folder
  3. run install.sh as root or with sudo
  4. try it out: mapstraceroute <host>

There’s heaps of things to do though(Thats why it’s only o.1a;)):

  • rewrite the code a bit more elegant and python-like;)
  • draw lines between the points
  • include own traceroute in python(?)

Flattr this!