seeseekey.net - Invictus Deus Ex Machina

Wenn man sich mit einem Mac OS X Gerät zu einem Netz­werk­ge­rät bzw. einer Frei­gabe auf einem sol­chem ver­bin­det, kann es pas­sie­ren das man anschlie­ßend eine Menge „.App­le­Dou­ble“ Ord­ner auf dem Gerät vor­fin­det. Möchte man ver­hin­dern, das sol­che Ord­ner auf Netz­werk­frei­ga­ben ange­legt wer­den, sollte man im Terminal:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

aus­füh­ren. Nach einem Neu­start wer­den dann keine sol­chen Ord­ner mehr ange­legt. Anschlie­ßend müs­sen nur noch die bereits ange­leg­ten Ord­ner auf der Frei­gabe ent­fernt werden.

Wenn man grö­ßere Netz­be­rei­che mit­tels Nmap scan­nen möchte, so kann man sich eine Menge Zeit neh­men. Je nach aus­ge­wähl­tem Netz­be­reich, kann das durch­aus mal einige Stun­den bis Tage dau­ern. Abhilfe schafft hier der Scan­ner ZMap mit wel­chem man den gesam­ten IPv4 Bereich auf einen Port hin inner­halb von 45 Minu­ten scan­nen kann. Aller­dings sollte man hier­bei mit einer 1 Gigabit/s Lei­tung ans Werk gehen.

zmap.io

ZMap wurde dabei von einem Team der Uni­ver­sity of Michi­gan ent­wi­ckelt. Auf der ent­spre­chen­den Web­seite fin­den sich die wis­sen­schaft­li­chen Papers sowie der Quell­code der Soft­ware. Auch auf Git­Hub ist das Pro­jekt ver­tre­ten. Lizenz­tech­nisch steht das ganze unter der „Apa­che License 2.0″ und ist damit freie Software.

Wer einen Dru­cker ohne Netz­werk­an­schluss besitzt, kann ihn mit Hilfe eines Raspberry Pi zu einem Netz­werk­drü­cker umrüs­ten. Dazu wer­den im ers­ten Schritt die not­wen­di­gen Pakete installiert:

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

Nach der Instal­la­tion geht es an die Kon­fi­gu­ra­tion. Dazu wird die „cupsd.conf“ bearbeitet:

sudo nano /etc/cups/cupsd.conf

Den Sek­tio­nen „<Loca­tion />“, „<Loca­tion /admin>“ und „<Loca­tion /admin/conf>“ wird dabei die Zeile:

Allow @Local

hin­zu­ge­fügt. Dane­ben sollte noch die Zeile:

Listen <IP Adresse>:631

hin­zu­ge­fügt wer­den. Das sorgt dafür das auf dem pas­sen­den Inter­face gehorcht wird. Danach geben wir in der Kon­sole fol­gen­des ein:

sudo adduser pi lpadmin
sudo service cups restart

Damit wird der Nut­zer „pi“ der Gruppe der Nut­zer hin­zu­ge­fügt wel­che Ein­stel­lun­gen vor­neh­men dür­fen. Außer­dem wird der CUPS Ser­vice neu­ge­star­tet, so das die Ände­run­gen in der Kon­fi­gu­ra­ti­ons­da­tei wirk­sam wer­den. Nun kann sich über die URL:

https://<IP Adresse>:631

mit dem Web­in­ter­face von CUPS ver­bun­den werden.

Das CUPS Webinterface

Im Web­in­ter­face wird nun unter dem Tab „Ver­wal­tung“ der Punkt „Frei­ge­ben von Dru­ckern wel­che mit die­sem Sys­tem ver­bun­den sind“ akti­viert. Bestä­tigt wird das ganze mit den Zugangs­da­ten des Nut­zers „pi“. Abschlie­ßend klickt man auf den But­ton „Ver­füg­bare Dru­cker auf­lis­ten“ und fügt die ange­schlos­se­nen Dru­cker hinzu und gibt ihn frei. Dazu muss das pas­sende Modell aus­ge­sucht und bestä­tigt werden.

Anschlie­ßend kann man den Dru­cker in sei­nem Betriebs­sys­tem hin­zu­fü­gen und über den Raspberry Pi dru­cken. Sollte wie­der erwar­ten kein Druck statt­fin­den, so liegt das meist am falsch gewähl­ten Dru­cker­typ. Mit der beschrie­be­nen Kon­fi­gu­ra­tion lässt sich auch von iOS Gerä­ten mit­tels Air­Print druchen.

Vir­tua­li­sie­rung an sich ist eine feine Sache, man nehme einen Rech­ner und simu­liere auf die­sem meh­rere Rech­ner. Dank KVM ist die ganze Sache auch ziem­lich ein­fach. Dazu instal­liert man auf einem Rech­ner ein Ubuntu Ser­ver 12.10 (mit dem OpenSSH Paket, und einem Nut­zer (in die­sem Fall „see­see­key“)). Dabei sollte man dar­auf ach­ten, das der Nut­zer kein ver­schlüs­sel­tes „home“-Verzeichnis hat, sonst könnte es spä­ter Pro­bleme mit der Ver­wen­dung von SSH Schlüs­seln geben. Anschlie­ßend über­prüft man auf der Kon­sole mittels:

cat /proc/cpuinfo

ob die CPU über die ent­spre­chende Vir­tua­li­sie­rungs­funk­tio­nen ver­fügt. Die erkennt man in der Sek­tion „flags“ der Aus­gabe. Dort muss für Intel CPUs das Flag „vmx“ und für AMD CPUs das Flag „svn“ vor­han­den sein. Ist dies der Fall so kann KVM mittels:

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

instal­liert wer­den. Ein anschließendes:

kvm-ok

über­prüft dann noch­mal ob die CPU wirk­lich für KVM geeig­net ist. Dabei ist zu beach­ten das es „kvm-ok“ nur unter Ubuntu gibt, andere Dis­tri­bu­tion ent­hal­ten es aller Wahr­schein­lich­keit nach nicht. Nun muss der Nut­zer noch der Gruppe „libvirtd“ hin­zu­ge­fügt wer­den. Auf der Kon­sole ist dazu ein:

sudo adduser seeseekey libvirtd

nötig. Danach sollte der KVM Host neu­ge­star­tet wer­den, bzw. sich an– und abge­mel­det wer­den. Zur Ver­wal­tung der Maschi­nen wird der „Vir­tual Machine Mana­ger“ benutzt. Die­ser wird auf der ent­spre­chen­den Ziel­ma­schine (wel­che nicht iden­tisch mit dem KVM Host sein muss) mittels:

sudo apt-get install virt-manager

instal­liert. Auf der ent­spre­chen­den Maschine, wel­che die Ver­wal­tung über­nimmt sollte ein SSH Schlüs­sel erzeugt wer­den. Dies geschieht auf der Konsole:

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

Nun über­tra­gen wir den Schlüs­sel auf den KVM Host, damit wir uns mit die­sem ver­bin­den kön­nen, was dann so aus­se­hen könnte:

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

Danach sollte der „Vir­tual Machine Mana­ger“ gestar­tet wer­den. Über „Datei“ -> „Ver­bin­dung hin­zu­fü­gen“ wird im dar­auf fol­gen­den Dia­log der KVM Host hinzugefügt.

Eine Ver­bin­dung wird hinzugefügt

Nun wird noch eine Netz­werk­brü­cke ein­ge­rich­tet. Diese dient dazu, das man die vir­tu­el­len Maschi­nen auch von außen anspre­chen kann. Ohne diese Brü­cke befin­den sich die Maschi­nen hin­ter einem NAT und kön­nen nur mit dem KVM Host kommunizieren.

Um die Bridge zu erstel­len wird die Datei „/etc/network/interfaces“ geän­dert. Auf einem nor­ma­len Sys­tem 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än­dert. Anschlie­ßend fehlt nur noch die Zeile:

bridge_ports eth1

wel­che am Ende hin­zu­ge­fü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 ent­spre­chende Kon­fi­gu­ra­tion wirksam.

Die Sto­rage Pools des KVM Host

Nach­dem dies gesche­hen ist kann man eine neue vir­tu­elle Maschine anle­gen. Wenn man ein Win­dows­sys­tem instal­liert, sollte man dar­auf ach­ten, das man die ent­spre­chen­den Trei­ber anschlie­ßend instal­liert. Diese fin­det man unter http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/.

Bei den Sto­rage Pools, in wel­chem die Daten für die vir­tu­el­len Maschi­nen lie­gen, emp­fiehlt es sich den „default“ Pool außen vor zu las­sen. Statt­des­sen legt man sich einen Pool „images“ und einen Pool „machi­nes“ an. Im „images“ Pool lagert man dann alle Betriebsys­tem­i­mages für die Instal­la­tion neuer Maschi­nen. Im „machi­nes“ Pool hin­ge­gen, soll­ten sich die instal­lier­ten Maschi­nen befinden.

Das Quell­ge­rät muss auf die Netz­werk­brü­cke ein­ge­stellt werden

In jeder vir­tu­el­len Maschine muss dabei das Quell­ge­rät in der Netz­werk­kon­fi­gu­ra­tion auf die Netz­werk­brü­cke (br0) ein­ge­stellt wer­den. Damit ist die Maschine ein Teil des Netz­wer­kes in wel­chem sich auch der KVM Host befin­det. Bei den vir­tu­el­len Maschi­nen, emp­fiehlt es sich bei gra­fi­schen Sys­te­men in der ent­spre­chen­den Kon­fi­gu­ra­tion unter „Video“ das Modell „vmvga“ auszuwählen.

Wei­tere Infor­ma­tio­nen 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 soge­nann­ten Well Known Ports) nur dann bin­den, wenn man über root Rechte ver­fügt. Das ist natür­lich unschön wenn man einen Ser­ver z.B. auf Port 80 lau­fen las­sen will, die­ser aber keine dem­ent­spre­chen­den Rechte bekom­men darf.

So läuft bei mir zum Bei­spiel ein Ether­pad Light auf dem Port 9001. Jetzt wäre es natür­lich schön wenn die­ser auf dem Port 80 erreich­bar wäre. Dazu würde eine ipta­bles Regel reichen:

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

Das Pro­blem an die­ser Regel ist zum ers­ten das die Anwen­dung damit unter Port 80 und Port 9001 zu errei­chen ist. Das zweite Pro­blem ist das jeder unpri­vi­le­gierte Nut­zer eben­falls den Port 9001 öff­nen kann und damit auch die Daten von Port 80 bekommt. Und es gibt auch noch ein drit­tes Pro­blem. Das ganze funk­tio­niert nicht auf Maschi­nen die mit dem Linux VSer­ver betrie­ben wer­den. Dort funk­tio­niert das IP Tables näm­lich nicht:

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

Eine wei­tere Vari­ante wäre set­p­caps was aller­dings pro­ble­ma­tisch ist da man diese einem Pro­gramm geben muss, was dann bei Skrip­ten nicht funk­tio­nie­ren sollte:

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

Wei­tere Infor­ma­tio­nen 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 Ver­sion hatte ich das Pro­blem das das WLAN auf mei­nem Net­book sich nicht mehr auto­ma­tisch mit dem Rou­ter ver­band. Dies musste nun immer manu­ell gemacht wer­den. Damit das ganze wie­der auto­ma­tisch funk­tio­niert muss man in die Sys­tem­ein­stel­lun­gen gehen und dort die Netz­werkein­stel­lun­gen wäh­len. Dort wählt man unter Draht­los die ent­spre­chende Ver­bin­dung und klickt auf Bear­bei­ten. Nun muss man nur noch den Haken bei Auto­ma­tisch ver­bin­den set­zen und schon funk­tio­niert alles wie­der wie gewohnt :)

Da hat man nun eine Netz­werk­karte im Rech­ner und würde doch gerne etwas mehr über diese erfah­ren (z.B. ob das gute Stück Giga­bit Netz­werk unter­stützt). Im ers­ten schritt könnte man sich dazu die PCI Geräte (in die­sem spe­zi­el­len Fall nur die Netzwerkarte(n)) anzei­gen. Das geschieht mit­tels:

lspci | grep Ethernet

Meist lässt sich schon aus dem Namen able­sen ob die Karte Giga­bit unter­stützt. Wem das zu wenig ist der kann sich das Paket eth­tool instal­lie­ren und bekommt dann mit­tels

eth­tool eth1

her­aus was die Netz­werk­karte alles kann.

Möchte man den Stand­ort einer IP Adresse ermit­teln und dazu nicht erst zu irgend­wel­chen teu­ren Tools grei­fen müs­sen für den emp­fiehlt sich die Web­seite http://www.utrace.de/. Dort sieht man dann auf einer Karte wo die IP Adresse (höchst­wahr­schein­lich) liegt. Das ganze funk­tio­niert natür­lich auch mit Domain­na­men. Ein sehr schö­nes ein­fach gehal­te­nes Werk­zeug zur Stand­ort­be­stim­mung von IP Adressen.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/Geotargeting

Ich benutze sehr gerne htop um mir auf einem Ubuntu Ser­ver Sys­tem die Pro­zesse, Aus­las­tung etc. anzei­gen zu las­sen. Ein ähn­li­ches Werk­zeug gibt es auch für das Netz­werk. Es hört auf den Namen ipt­raf und kann mit­tels

apt-get install iptraf

instal­liert wer­den. Es bie­tet dabei ver­schie­dene Modi zur Anzeige des Daten­ver­kehrs bzw. des­sen Zusam­men­fas­sung. Möchte man hin­ge­gen den gesam­ten Netz­werk­ver­kehr auf­zeich­nen um ihn spä­ter zu ana­ly­sie­ren so benö­tigt man das Paket tshark und kann dann mit­tels tshark –w network.protocol & den gesam­ten Netz­werk­ver­kehr in die Datei network.protocol schrei­ben. Diese Datei kann man spä­ter in Wireshark öff­nen, was die Aus­wer­tung doch stark vereinfacht.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/Iptraf
http://wiki.ubuntuusers.de/Wireshark

Ges­tern star­tete ich mein Net­book auf wel­chem Kubuntu läuft und das Net­werk Wid­get teilte mir mit: „Netz­werk­ver­wal­tung deak­ti­viert“. Im ers­ten Moment habe ich den Rech­ner neu­ge­star­tet in der Hoff­nung das sich das Pro­blem ver­flüch­tigt. Dem war aber nicht so, der Zustand blieb erhalten.

Also musste eine Lösung her um den Net­work Mana­ger wie­der in Betrieb zu neh­men. Im ers­ten Schritt sollte man ein Ter­mi­nal auf­ma­chen und dort fol­gen­des ein­ge­ben:

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

In die­ser Datei setzt man Net­wor­kin­gEnab­led wie­der auf true und spei­chert die Datei. Nun muss man nur noch den ent­spre­chen­den Ser­vice mit­tels

ser­vice network-manager restart

neu­star­ten und schon sollte wie­der alles funk­tio­nie­ren :)