seeseekey.net - Invictus Deus Ex Machina

Wenn man sich mit einem Mac OS X Gerät zu einem Netzwerkgerät bzw. einer Freigabe auf einem solchem verbindet, kann es passieren das man anschließend eine Menge „.AppleDouble“ Ordner auf dem Gerät vorfindet. Möchte man verhindern, das solche Ordner auf Netzwerkfreigaben angelegt werden, sollte man im Terminal:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

ausführen. Nach einem Neustart werden dann keine solchen Ordner mehr angelegt. Anschließend müssen nur noch die bereits angelegten Ordner auf der Freigabe entfernt werden.

Wenn man größere Netzbereiche mittels Nmap scannen möchte, so kann man sich eine Menge Zeit nehmen. Je nach ausgewähltem Netzbereich, kann das durchaus mal einige Stunden bis Tage dauern. Abhilfe schafft hier der Scanner ZMap mit welchem man den gesamten IPv4 Bereich auf einen Port hin innerhalb von 45 Minuten scannen kann. Allerdings sollte man hierbei mit einer 1 Gigabit/s Leitung ans Werk gehen.

zmap.io

ZMap wurde dabei von einem Team der University of Michigan entwickelt. Auf der entsprechenden Webseite finden sich die wissenschaftlichen Papers sowie der Quellcode der Software. Auch auf GitHub ist das Projekt vertreten. Lizenztechnisch steht das ganze unter der „Apache License 2.0″ und ist damit freie Software.

Wer einen Drucker ohne Netzwerkanschluss besitzt, kann ihn mit Hilfe eines Raspberry Pi zu einem Netzwerkdrücker umrüsten. Dazu werden im ersten Schritt die notwendigen Pakete installiert:

sudo apt-get install avahi-daemon cups cups-pdf

Nach der Installation geht es an die Konfiguration. Dazu wird die „cupsd.conf“ bearbeitet:

sudo nano /etc/cups/cupsd.conf

Den Sektionen „<Location />“, „<Location /admin>“ und „<Location /admin/conf>“ wird dabei die Zeile:

Allow @Local

hinzugefügt. Daneben sollte noch die Zeile:

Listen <IP Adresse>:631

hinzugefügt werden. Das sorgt dafür das auf dem passenden Interface gehorcht wird. Danach geben wir in der Konsole folgendes ein:

sudo adduser pi lpadmin
sudo service cups restart

Damit wird der Nutzer „pi“ der Gruppe der Nutzer hinzugefügt welche Einstellungen vornehmen dürfen. Außerdem wird der CUPS Service neugestartet, so das die Änderungen in der Konfigurationsdatei wirksam werden. Nun kann sich über die URL:

https://<IP Adresse>:631

mit dem Webinterface von CUPS verbunden werden.

Das CUPS Webinterface

Im Webinterface wird nun unter dem Tab „Verwaltung“ der Punkt „Freigeben von Druckern welche mit diesem System verbunden sind“ aktiviert. Bestätigt wird das ganze mit den Zugangsdaten des Nutzers „pi“. Abschließend klickt man auf den Button „Verfügbare Drucker auflisten“ und fügt die angeschlossenen Drucker hinzu und gibt ihn frei. Dazu muss das passende Modell ausgesucht und bestätigt werden.

Anschließend kann man den Drucker in seinem Betriebssystem hinzufügen und über den Raspberry Pi drucken. Sollte wieder erwarten kein Druck stattfinden, so liegt das meist am falsch gewählten Druckertyp. Mit der beschriebenen Konfiguration lässt sich auch von iOS Geräten mittels AirPrint druchen.

Virtualisierung an sich ist eine feine Sache, man nehme einen Rechner und simuliere auf diesem mehrere Rechner. Dank KVM ist die ganze Sache auch ziemlich einfach. Dazu installiert man auf einem Rechner ein Ubuntu Server 12.10 (mit dem OpenSSH Paket, und einem Nutzer (in diesem Fall „seeseekey“)). Dabei sollte man darauf achten, das der Nutzer kein verschlüsseltes „home“-Verzeichnis hat, sonst könnte es später Probleme mit der Verwendung von SSH Schlüsseln geben. Anschließend überprüft man auf der Konsole mittels:

cat /proc/cpuinfo

ob die CPU über die entsprechende Virtualisierungsfunktionen verfügt. Die erkennt man in der Sektion „flags“ der Ausgabe. Dort muss für Intel CPUs das Flag „vmx“ und für AMD CPUs das Flag „svn“ vorhanden sein. Ist dies der Fall so kann KVM mittels:

sudo apt-get install qemu-kvm libvirt-bin virtinst

installiert werden. Ein anschließendes:

kvm-ok

überprüft dann nochmal ob die CPU wirklich für KVM geeignet ist. Dabei ist zu beachten das es „kvm-ok“ nur unter Ubuntu gibt, andere Distribution enthalten es aller Wahrscheinlichkeit nach nicht. Nun muss der Nutzer noch der Gruppe „libvirtd“ hinzugefügt werden. Auf der Konsole ist dazu ein:

sudo adduser seeseekey libvirtd

nötig. Danach sollte der KVM Host neugestartet werden, bzw. sich an– und abgemeldet werden. Zur Verwaltung der Maschinen wird der „Virtual Machine Manager“ benutzt. Dieser wird auf der entsprechenden Zielmaschine (welche nicht identisch mit dem KVM Host sein muss) mittels:

sudo apt-get install virt-manager

installiert. Auf der entsprechenden Maschine, welche die Verwaltung übernimmt sollte ein SSH Schlüssel erzeugt werden. Dies geschieht auf der Konsole:

ssh-keygen -t rsa -C "user@example.org"

Nun übertragen wir den Schlüssel auf den KVM Host, damit wir uns mit diesem verbinden können, was dann so aussehen könnte:

ssh-copy-id -i ~/.ssh/id_rsa.pub seeseekey@kvmhost

Danach sollte der „Virtual Machine Manager“ gestartet werden. Über „Datei“ -> „Verbindung hinzufügen“ wird im darauf folgenden Dialog der KVM Host hinzugefügt.

Eine Verbindung wird hinzugefügt

Nun wird noch eine Netzwerkbrücke eingerichtet. Diese dient dazu, das man die virtuellen Maschinen auch von außen ansprechen kann. Ohne diese Brücke befinden sich die Maschinen hinter einem NAT und können nur mit dem KVM Host kommunizieren.

Um die Bridge zu erstellen wird die Datei „/etc/network/interfaces“ geändert. Auf einem normalen System sollte diese wie folgt aussehen:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Nun wird „auto eth0“ in „auto br0“ und „iface eth0 inet dhcp“ in „iface br0 inet dhcp“ geändert. Anschließend fehlt nur noch die Zeile:

bridge_ports eth0

welche am Ende hinzugefügt wird. Damit sieht die neue „/etc/network/interfaces“ dann wie folgt aus:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto br0
iface br0 inet dhcp
bridge_ports eth0

Danach geben wir im Terminal:

/etc/init.d/networking restart

mit root-Rechten ein und schon ist die entsprechende Konfiguration wirksam.

Die Storage Pools des KVM Host

Nachdem dies geschehen ist kann man eine neue virtuelle Maschine anlegen. Wenn man ein Windowssystem installiert, sollte man darauf achten, das man die entsprechenden Treiber anschließend installiert. Diese findet man unter http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/.

Bei den Storage Pools, in welchem die Daten für die virtuellen Maschinen liegen, empfiehlt es sich den „default“ Pool außen vor zu lassen. Stattdessen legt man sich einen Pool „images“ und einen Pool „machines“ an. Im „images“ Pool lagert man dann alle Betriebsystemimages für die Installation neuer Maschinen. Im „machines“ Pool hingegen, sollten sich die installierten Maschinen befinden.

Das Quellgerät muss auf die Netzwerkbrücke eingestellt werden

In jeder virtuellen Maschine muss dabei das Quellgerät in der Netzwerkkonfiguration auf die Netzwerkbrücke (br0) eingestellt werden. Damit ist die Maschine ein Teil des Netzwerkes in welchem sich auch der KVM Host befindet. Bei den virtuellen Maschinen, empfiehlt es sich bei grafischen Systemen in der entsprechenden Konfiguration unter „Video“ das Modell „vmvga“ auszuwählen.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/SSH
http://wiki.ubuntuusers.de/KVM
http://wiki.ubuntuusers.de/virt-manager
http://wiki.ubuntuusers.de/Virtualisierung
http://de.wikipedia.org/wiki/Kernel-based_Virtual_Machine

Unter Linux (und UNIX) kann man die Ports bis 1024 (die sogenannten Well Known Ports) nur dann binden, wenn man über root Rechte verfügt. Das ist natürlich unschön wenn man einen Server z.B. auf Port 80 laufen lassen will, dieser aber keine dementsprechenden Rechte bekommen darf.

So läuft bei mir zum Beispiel ein Etherpad Light auf dem Port 9001. Jetzt wäre es natürlich schön wenn dieser auf dem Port 80 erreichbar wäre. Dazu würde eine iptables Regel reichen:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9001

Das Problem an dieser Regel ist zum ersten das die Anwendung damit unter Port 80 und Port 9001 zu erreichen ist. Das zweite Problem ist das jeder unprivilegierte Nutzer ebenfalls den Port 9001 öffnen kann und damit auch die Daten von Port 80 bekommt. Und es gibt auch noch ein drittes Problem. Das ganze funktioniert nicht auf Maschinen die mit dem Linux VServer betrieben werden. Dort funktioniert das IP Tables nämlich nicht:

iptables v1.4.4: can't initialize iptables table `nat': Permission denied (you must be root)

Eine weitere Variante wäre setpcaps was allerdings problematisch ist da man diese einem Programm geben muss, was dann bei Skripten nicht funktionieren sollte:

setcap 'cap_net_bind_service=+ep' /path/to/program

Weitere Informationen gibt es unter:
http://www.wensley.org.uk/info#setpcaps
http://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on-port-80-as-a-normal-user
http://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-li

Nach dem Update von Kubuntu auf die 10.10er Version hatte ich das Problem das das WLAN auf meinem Netbook sich nicht mehr automatisch mit dem Router verband. Dies musste nun immer manuell gemacht werden. Damit das ganze wieder automatisch funktioniert muss man in die Systemeinstellungen gehen und dort die Netzwerkeinstellungen wählen. Dort wählt man unter Drahtlos die entsprechende Verbindung und klickt auf Bearbeiten. Nun muss man nur noch den Haken bei Automatisch verbinden setzen und schon funktioniert alles wieder wie gewohnt :)

Da hat man nun eine Netzwerkkarte im Rechner und würde doch gerne etwas mehr über diese erfahren (z.B. ob das gute Stück Gigabit Netzwerk unterstützt). Im ersten schritt könnte man sich dazu die PCI Geräte (in diesem speziellen Fall nur die Netzwerkarte(n)) anzeigen. Das geschieht mittels:

lspci | grep Ethernet

Meist lässt sich schon aus dem Namen ablesen ob die Karte Gigabit unterstützt. Wem das zu wenig ist der kann sich das Paket ethtool installieren und bekommt dann mittels

ethtool eth1

heraus was die Netzwerkkarte alles kann.

Möchte man den Standort einer IP Adresse ermitteln und dazu nicht erst zu irgendwelchen teuren Tools greifen müssen für den empfiehlt sich die Webseite http://www.utrace.de/. Dort sieht man dann auf einer Karte wo die IP Adresse (höchstwahrscheinlich) liegt. Das ganze funktioniert natürlich auch mit Domainnamen. Ein sehr schönes einfach gehaltenes Werkzeug zur Standortbestimmung von IP Adressen.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Geotargeting

Ich benutze sehr gerne htop um mir auf einem Ubuntu Server System die Prozesse, Auslastung etc. anzeigen zu lassen. Ein ähnliches Werkzeug gibt es auch für das Netzwerk. Es hört auf den Namen iptraf und kann mittels

apt-get install iptraf

installiert werden. Es bietet dabei verschiedene Modi zur Anzeige des Datenverkehrs bzw. dessen Zusammenfassung. Möchte man hingegen den gesamten Netzwerkverkehr aufzeichnen um ihn später zu analysieren so benötigt man das Paket tshark und kann dann mittels tshark –w network.protocol & den gesamten Netzwerkverkehr in die Datei network.protocol schreiben. Diese Datei kann man später in Wireshark öffnen, was die Auswertung doch stark vereinfacht.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Iptraf
http://wiki.ubuntuusers.de/Wireshark

Gestern startete ich mein Netbook auf welchem Kubuntu läuft und das Netwerk Widget teilte mir mit: „Netzwerkverwaltung deaktiviert“. Im ersten Moment habe ich den Rechner neugestartet in der Hoffnung das sich das Problem verflüchtigt. Dem war aber nicht so, der Zustand blieb erhalten.

Also musste eine Lösung her um den Network Manager wieder in Betrieb zu nehmen. Im ersten Schritt sollte man ein Terminal aufmachen und dort folgendes eingeben:

sudo nano /var/lib/NetworkManager/NetworkManager.state

In dieser Datei setzt man NetworkingEnabled wieder auf true und speichert die Datei. Nun muss man nur noch den entsprechenden Service mittels

service network-manager restart

neustarten und schon sollte wieder alles funktionieren :)