Linux - Tips&Tricks

Talk about IT development, Games and Computer topics.

Linux - Tips&Tricks

Postby madblueimp » Fri Feb 10, 2006 20:06

Edit: 16.01.2007



https://blueimp.net/forum/viewtopic.php?p=7923



Die Artikel-Serie "Linux - Tips&Tricks" wird hier nicht mehr weiter gepflegt.



Aktuelle Tutorials und HowTos, bezogen auf (X)ubuntu und andere Debian-basierte Distributionen finden sich neuerdings unter folgender Adresse:



https://blueimp.net/linux/








In diesem Thread werde ich ab jetzt ab und zu Tips&Tricks zu Linux vorstellen.

.



Und zwar werden das Themen sein, die mir in meinem täglichen Einsatz von Linux so nützlich vorkommen, das ich sie euch mitteilen möchte. :)



Manche Themen werden sich auf spezielle Programme beziehen, die ich nutze, z.B. Entwicklungsumgebungen oder Grafik-Programme.

Andere beziehen sich auf den bei mir installierten Window-Manager Xfce.

Einige Themen werden nur für diejenigen nützlich sein, die als Linux-Distribution Debian (Unstable) einsetzen.

Oder ich beziehe mich sogar speziell auf eine Kanotix-Installation.



Vieles wird aber auch für alle Linux-Nutzer nachvollziehbar se





Um den Thread übersichtlich zu halten, bitte ich euch Fragen oder Kommentare in einen eigenen Thread auszulagern:

Linux Tips&Tricks - Kommentare



Falls ihr dagegen selber etwas beitragen wollt, könnt ihr das gerne hier tun.in.
Last edited by madblueimp on Tue Jan 16, 2007 02:50, edited 2 times in total.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Verschlüsselte Container-Dateien

Postby madblueimp » Fri Feb 10, 2006 21:03

Hinweis:

-----------------------------------------------------------------------------------

Falls im folgenden Befehle in der Konsole eingegeben werden müssen, steht

Code: Select all
$


für Befehle als normaler Benutzer (mit eingeschränkten Rechten)

und

Code: Select all
#


für Befehle als root, also lokaler Administrator mit allen Befugnissen.

-----------------------------------------------------------------------------------




Verschlüsselte Container-Dateien



Um meine gesammelten Passwörter und sonstige sensiblen Informationen sicher zu speichern benutze ich mit AES verschlüsselte Container-Dateien.



Das funktioniert folgendermassen:



Als "root" anmelden:

Code: Select all
$ su


(Passwort eingeben)



Falls nicht vorhanden, muss aespipe installiert werden:

Code: Select all
# apt-get install aespipe


(ist bei einer Kanotix-Installation schon dabei)



Dann müssen die erforderlichen Kernel-Module geladen werden

(temporär):

Code: Select all
# modprobe aes

# modprobe cryptoloop




Als nächstes richten wir uns einen verschlüsselten Container ein:

Code: Select all
# dd if=/dev/zero of=/home/user/container bs=1024 count=51200


(dieser Befehl könnte auch als normaler User ausgeführt werden)

Dabei ersetzt ihr "/home/user/container" mit dem Pfad zu eurer gewünschten Container-Datei (die dadurch erstellt wird) und "51200" mit der von euch gewünschten Größe in KB (51200 wären also 50 MB).

"container" kann eine frei erfundene Bezeichnung sein, mit oder ohne Dateiendung (vielleicht nicht unbedingt "geheime.daten" ;)).



Jetzt erstellen wir mit dieser Container-Datei ein verschlüsseltes "Loop-Device":

Code: Select all
# losetup -e aes-cbc-256 /dev/loop0 /home/user/container


"aes-cbc-256" bezeichnet hierbei den verwendeten Verschlüsselungsalgorithmus.

"/dev/loop0" ist das verwendete freie Loopdevice. Falls dieses schon belegt sein sollte, kann auch z.B. /dev/loop1 verwendet werden.



Bei Ausführung des Befehls müssen wir ein Passwort angeben, das mindestens 20 Zeichen hat.

Am besten eine Kombination aus GROSSEN und kleinen Buchstaben, Zahlen (0-9) und Sonderzeichen (/&%$§ ...).



Als nächstes formatieren wir den Container mit einem Dateisystem unserer Wahl, z.B. ext3:

Code: Select all
# mkfs.ext3 /dev/loop0




Dann erstellen wir noch einen Mountpoint:

Code: Select all
# mkdir /mnt/container
.



Jetz müssen wir das Loopdevice nur noch mounten:

Code: Select all
# mount /dev/loop0 /mnt/container




Und schon können wir auf /mnt/container zugreifen wie auf ein normales Verzeichnis und Dateien jedweder Art darin speichern, die on-the-fly verschlüsselt/entschlüsselt werden.



Um den Container wieder zu entmounten benutzen wir:

Code: Select all
# umount /mnt/container




Dann noch das Loopdevice aushängen:

Code: Select all
# losetup -d /dev/loop0




Und schon sind unsere Daten sicher vor Zugriff verschlüsselt in der Datei "/home/user/container" gespeichert.





Verschlüsselte Partitionen

Die gleiche Methode funktioniert übrigens auch, um verschlüsselte Partitionen anzulegen:

Code: Select all
# losetup -e aes-cbc-256 /dev/loop0 /dev/hda7

# mkfs.ext3 /dev/loop0




Die auf diese Weise eingerichtete verschlüsselte Partition könnte man sogar in /etc/fstab eintragen, um sie bei Betriebssystemstart automatisch zu mounten:

Code: Select all
/dev/hda7 /mnt/hda7 ext3 defaults,loop=/dev/loop0,encryption=aes-cbc-256 0 0




Dazu müsste man allerdings auch die erforderlichen Module dauerhaft einbinden:

Code: Select all
# echo aes >>/etc/modules

# echo cryptoloop >>/etc/modules




Mit aespipe kann man auch schon bereits bestehende Partitionen noch nachträglich verschlüsseln:

Code: Select all
# aespipe -e aes-cbc-256 -T < /dev/hda7 > /dev/hda7




Selbst getestet habe ich allerdings nur die Container-Methode.

Das reicht für mein Sicherheitsbedürfnis auch vollständig aus.

Um all seine Dateien per Verschlüsselung zu sichern müsste auch das Betriebssystem, sprich alles unter / verschlüsselt werden, inklusive vorhandener Swap-Partitionen.

Einzig /boot kann nicht verschlüsselt werden, da das System sonst nicht starten kann.

Aber falls ich einmal so paranoid werden sollte, steige ich vorher auf OpenBSD um. ;)
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Crypt Container Script

Postby madblueimp » Fri Feb 10, 2006 21:19

Crypt Container Script

(ohne Installation nutzbar)



Um die verschlüsselten Container möglichst komfortabel nutzen zu können, habe ich noch ein kleines Bash-Skript geschrieben.



Um es nutzen zu können kopiert ihr einfach den folgenden Quelltext

und speichert ihn z.B. als "crypt" ab.



Anpassen müsst ihr nur eventuell die beiden Variablen am Anfang der Datei:



# The Encrypted File:

CRYPT_FILE=/home/user/container

# Mountpoint:

MOUNT_POINT=/mnt/container



Danach müsst ihr das Skript noch ausführbar machen, im gleichen Verzeichnis dazu einfach folgenden Befehl eingeben:

Code: Select all
$ chmod +x ./crypt




Dann root werden und das Skript einfach ausführen:

Code: Select all
$su

# /home/user/crypt




Euch wird ein Konsolen-Menü präsentiert, in dem ihr die in der Variablen CRYPT_FILE angegebene Container-Datei komfortabel nutzen könnt.



Das Skript nimmt auch Parameter entgegen, damit könnt ihr das Menü überspringen:

Code: Select all
# /home/user/crypt 1


--> Einrichten des Loopdevice, Mounten des Containers

Code: Select all
# /home/user/crypt 2


--> Umount des Containers, Entfernen des Loopdevice



Hier nun das komplette Skript:

Code: Select all

#!/bin/bash

#  This script must be run as root.



# The Encrypted File:

CRYPT_FILE=/home/user/container

# Mountpoint:

MOUNT_POINT=/mnt/container



function showMenu

{

while :

  do

    clear



    echo "==================================="

    echo " Crypt Container Menu "

    echo "==================================="

    echo "[1] Mount Container"

    echo "[2] Unmount Container"

    echo "[Q] Quit"

    echo "==================================="

    echo -n "Please choose [1,2,Q]: "



    read select



    case $select in

      1) mountCrypt ;;

      2) umountCrypt ;;

      *) exit 0 ;;

    esac



  done

}



function mountCrypt

{

  # Load the required modules:

  modprobe aes

  modprobe cryptoloop



  # Create loopdevice:

  losetup -e aes-cbc-256 /dev/loop0 ${CRYPT_FILE}



  # Mount loopdevice:

  mount /dev/loop0 ${MOUNT_POINT}



  echo "Container ${CRYPT_FILE} successfully mounted."

  echo "Press any key ;) to continue..."

  read

}



function umountCrypt

{

  # Unmount loopdevice:

  umount ${MOUNT_POINT}



  # Remove loopdevice:

  losetup -d /dev/loop0



  echo "Container ${CRYPT_FILE} successfully unmounted."

  echo "Press any key ;) to continue..."

  read

}



function main

{

  # Root has $UID 0

  ROOT_UID=0

  if [ "$UID" -ne "$ROOT_UID" ]

  then

    echo "This script must be run as root."

    exit 0

  else

    # Check for given parameters:

    if [ -n "$1" ]

    then

      if [ "$1" == "1" ]

      then

        mountCrypt

      elif [ "$1" == "2" ]

      then

        umountCrypt

      else

        echo "Param must be \"1\" or \"2\"."

      fi

    else

      # Show menu:

      showMenu

    fi

  fi

}



# Script execution:

main $1

My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Crypt Container Script per Sudo nutzen

Postby madblueimp » Fri Feb 10, 2006 21:41

Crypt Container Script per Sudo nutzen



Mit Sudo können wir das vorher vorgestellte Skript als normaler User nutzen, ohne jedesmal auch das root-Passwort eingeben zu müssen.



Zuerst speichern wir das Skript unter

Code: Select all
/usr/sbin/crypt


Dadurch ist es im "Path" erreichbar, kann also in der Konsole einfach per

Code: Select all
# crypt
aufgerufen werden.



Um es als Benutzer aufrufen zu können, müssen wir

Code: Select all
/etc/sudoers


bearbeiten.



Das machen wir mit Vim über den einfachen Aufruf

Code: Select all
# visudo




Dadurch startet Vim (bzw. Vi) und lädt die sudoers-Datei.

Um in den Einfüge-Modus zu kommen drücken wir die Taste (den Buchstaben) "i" (wie in Italien).



Jetzt gehen wir ganz ans Ende der Datei und fügen folgende Zeile an:

Code: Select all
user ALL=NOPASSWD: /usr/sbin/crypt


Statt "user" tragt ihr euren Benutzernamen ein.



Durch drücken der Taste "Esc" (Escape). verlassen wir den Einfüge-Modus.



Jetzt geben wir ":" ein, das bringt uns in den Kommandozeilen-Modus.

Die Eingabe von "wq" und einem abschließenden Tastendruck auf "Enter" speichert unsere Änderungen und beendet Vim.



Das war's.

Nun kann das Skript per sudo als User gestartet werden:

Code: Select all
$ sudo crypt




P.S.: Der Editor Vim benötigt zwar ein wenig Umgewöhnungszeit, ist aber sehr leistungsfähig und lässt sich ohne Probleme auch über das Netzwerk bedienen, z.B. über eine SSH-Verbindung.

Falls ihr tatsächlich damit anfangen solltet Dateien mit vi/vim zu editieren, könnt ihr sicher sein zu einem Nerd mutiert zu sein. ;)



P.P.S.: Das oben genannte Skript wurde mit Vim erstellt. ;)

Sobald ich die Zeit dazu finde, werde ich auch noch Optionen zur Auswahl freier Loopdevices und zur Erstellung neuer verschlüsselter Container hinzufügen.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Qemu + KQemu Installation HowTo

Postby madblueimp » Wed Feb 15, 2006 09:21

Qemu + KQemu Installation HowTo



Qemu ist wie das kommerzielle VMWare eine Virtualisierungs-Software, mit der sich ein kompletter PC samt Hardware emulieren lässt.



Damit lassen sich z.B. gefahrlos neue Programme ausprobieren, oder Webseiten unter Linux mit dem Internet Explorer testen:

Image



Qemu ist im Debian Repository und bei einer Kanotix-Installation schon mit an Bord.

Nicht dabei ist jedoch das "QEMU Accelerator Module" namens KQEMU, das im Gegensatz zu Qemu nicht Open Source sondern ein proprietäres Produkt ist.



Da die gesamte Hardware eines PC's emuliert werden muss, läuft die virtuelle Maschine um den Faktor 5 bis 10 langsamer als das Host Betriebssystem.

Mit KQEMU wird ein Großteil des Codes des Gastbetriebssystems direkt auf dem Host ausgeführt und erreicht so eine bessere "slow down ratio" von 1 bis 2.



Um den Vorteil von KQEMU nutzen zu können, müssen wir uns QEMU selbst kompilieren:



Zuerst müssen die Qemu-Quellen und das proprietäre

KQemu Binary heruntergeladen werden:

Code: Select all
$ wget http://fabrice.bellard.free.fr/qemu/qemu-0.8.0.tar.gz

$ wget http://fabrice.bellard.free.fr/qemu/kqemu-0.7.2.tar.gz


(Oder manuell von http://fabrice.bellard.free.fr/qemu/download.html)



Dann root werden:

Code: Select all
$ su




Gnu C Compiler in der Version 3.3 installieren:

(da qemu 0.8.0 diesen benötigt)

Code: Select all
# apt-get install gcc-3.3




Simple DirectMedia Layer development files installieren:

(für den grafischen Output von Qemu)

Code: Select all
# apt-get install libsdl1.2-dev




zlib compression library development files installieren:

Code: Select all
# apt-get install zlib1g-dev






Weiter als User:

Code: Select all
# exit




Qemu und KQemu in /tmp auspacken:

Code: Select all
$ cd /tmp

$ tar zxvf /home/madblueimp/qemu-0.8.0.tar.gz

$ cd qemu-0.8.0

$ tar zxvf /home/madblueimp/kqemu-0.7.2.tar.gz




gcc 3.3 beim konfigurieren angeben:

Code: Select all
$ ./configure --cc=gcc-3.3 --host-cc=gcc-3.3




Da der Kernel mit gcc 4.0 übersetzt wurde,

muss auch KQEMU mit gcc 4.x übersetzt werden.

Dazu:

Code: Select all
$ cd kqemu

$ make clean

$ make




Zuück ins Qemu Verzeichnis, root werden und

Qemu nach /usr/local installieren:

Code: Select all
$ cd ..

$ su

# make install




Damit das neue qemu im Pfad gefunden wird,

einfach das alte deinstallieren:



Code: Select all
# apt-get --purge remove qemu




Danach ein neues Terminal starten.

(Zum Neuladen der Pfade)





Damit KQemu genutzt werden kann, muss das

Modul in den Kernel geladen werden:



Code: Select all
# modprobe kqemu

# mknod /dev/kqemu c 250 0

# chmod 666 /dev/kqemu






Um das KQemu Modul nicht immer erst umständlich laden zu müssen,

kann man sich dafür auch ein Startskript erstellen,

das beim Booten automatisch ausgeführt wird.



Dazu wechseln wir zuerst in das init Verzeichnis

und erstellen ein Skript namens "kqemu":



Code: Select all
# cd /etc/init.d

# vi kqemu




Dort folgende Zeilen eintragen und speichern:

Code: Select all
#!/bin/sh

# /etc/init.d/kqemu: load/remove the KQEMU kernel module and create/remove the KQEMU device

#

# description: KQEMU kernel module

#

case "$1" in

  start)

    echo "Loading KQEMU module"

    /sbin/modprobe kqemu

    echo "Creating KQEMU device"

    /bin/mknod /dev/kqemu c 250 0

    # Give read/write access to everyone:

    /bin/chmod 666 /dev/kqemu

    ;;

  stop)

    echo "Removing KQEMU device"

    /usr/bin/unlink /dev/kqemu

    echo "Removing KQEMU module"

    /sbin/modprobe -r kqemu

    ;;

  *)

    echo "Usage: $0 {start|stop}"

    exit 1

esac

exit 0




Danach das Skript noch ausführbar machen:

Code: Select all
# chmod +x kqemu




Dann ins Verzeichnis mit den im Runlevel 5 zu startenden Scripten wechseln:

Code: Select all
# cd /etc/rc5.d




Und einen symbolischen Link zum Start des Scriptes anlegen:

"S" steht hier für "Start", d.h. der Parameter "start" wird an das Skript übergeben.

"20" steht für die Prioritäts-Reihenfolge gegenüber anderen Skripten.



Code: Select all
# ln -s /etc/init.d/kqemu S20kqemu




Nach einem Neustart sollte das KQEMU Modul schon geladen sein

und auch das erforderliche Device /dev/kqemu existieren.





Um zu testen ob Qemu tatsächlich mit KQEMU läuft kann

man während der Emulation strg+alt+2 drücken,

so gelangt man in den Qemu Monitor.

Die Eingabe von

Code: Select all
info kqemu


sollte

Code: Select all
kqemu is enabled


ergeben.

Mit strg+alt+1 kommt man zurück in das Gast-System.





Zur komfortablen Nutzung von Qemu ist ein GUI

wie das Java-basierte JQEMU sehr nützlich:

http://www.exprofesso.com/jqemu/



Gestartet wird es mit

Code: Select all
$ java -jar jqemu.jar






Für die Erstellung von Images und weitere Informationen

ist die Dokumentation auf der Qemu Homepage sehr hilfreich:

http://fabrice.bellard.free.fr/qemu/qemu-doc.html





Zuletzt noch ein Beispiel, wie man eine Kanotix-Live-CD

in Qemu mit Netzwerkunterstützung bootet:

Code: Select all
$ qemu -snapshot -cdrom /media/sda7/ISO/Kanotix/KANOTIX-2005-04.iso -m 265 -boot d -net nic -net user






-------------------------------------------------------------

NACHTRAG:



Qemu + KQemu mit "Full Virtualization Support":





Aktuelle Qemu CVS Version herunterladen:

http://qemu.dad-answers.com/download/qemu/



Neue KQemu Version herunterladen:

Code: Select all
$ wget http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre5.tar.gz




Die Archive Auspacken:

Code: Select all
$ cd /tmp/

   $ tar xfvj /home/madblueimp/qemu-snapshot-2006-04-12_23.tar.bz2

   $ tar zxvf /home/madblueimp/kqemu-1.3.0pre5.tar.gz




In das Qemu Snapshot Verzeichnis wechseln, mit gcc 3.3 konfigurieren, kompilieren und installieren:

Code: Select all
$ cd qemu-snapshot-2006-04-12_23/

   $ ./configure --cc=gcc-3.3 --host-cc=gcc-3.3

   $ make

   $ su

   # make install

   # exit




In das KQemu Verzeichnis wechseln, konfigurieren, kompilieren und installieren:

Code: Select all
$ cd ../kqemu-1.3.0pre5/

   $ ./configure

   $ make

   $ su

   # make install




Das KQemu Device anlegen und das Modul in den Kernel laden:

Code: Select all
# modprobe kqemu

   # mknod /dev/kqemu c 250 0

   # chmod 666 /dev/kqemu




Qemu mit dem zusätzlichen Parameter -kernel-kqemu starten:

Code: Select all
$ vdeqemu -hda /media/hda6/Qemu/winxp.img -m 448 -boot c -soundhw all -snapshot -k de -kernel-kqemu
Last edited by madblueimp on Sun Apr 30, 2006 18:38, edited 1 time in total.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Einrichten eines Virtuellen Netzwerks

Postby madblueimp » Tue Feb 21, 2006 15:23

Einrichten eines Virtuellen Netzwerks

(für per qemu emulierte virtuelle maschinen)



Leider bietet Qemu keine vollständige Unterstützung für ein virtuelles Netzwerk.

So ist es z.B. nicht möglich, "ping" ins Internet zu nutzen, da es root-Rechte erfordern würde (und wir qemu als user benutzen wollen).

Auch ist es nicht so ohne weiteres möglich mehrere virtuelle Maschinen untereinander und mit dem Internet kommunizieren zu lassen.



Um den virtuellen Maschinen eine vollständige TCP/IP-Anbindung zu geben erstellen wir unser eigenes virtuelles Netzwerk.



Dazu benutzen wir das Programm vde (virtual distributed ethernet).

vde ist im Debian repository (v. 1.5.9-3).

Allerdings haben sich die Kommandozeilen-Parameter in qemu 0.8 geändert, so dass wir eine neuere Version von vde brauchen.

D.h. wir kompilieren uns vde 2.0.2 aus den Quellen selbst:



Herunterladen der vde Quellen:

Code: Select all
$ wget http://mesh.dl.sourceforge.net/sourceforge/vde/vde-2.0.2.tar.bz2




Im tmp Verzeichnis auspacken:

Code: Select all
$ cd /tmp/

$ tar xfvj /home/madblueimp/vde-2.0.2.tar.bz2




Konfigurieren und kompilieren:

Code: Select all
$ ./configure

$ make




Als root installieren:

Code: Select all
$ su

# make install




Erstellen eines Skriptes, um das virtuelle Netzwerk und Routing

beim Systemstart einzurichten:

Code: Select all
# cd /etc/init.d

# vi vde




Folgende Zeilen eintragen und speichern:

Code: Select all
#!/bin/sh

# /etc/init.d/vde: setup/shutdown a virtual distributed ethernet

#

# description: virtual distributed ethernet

#



case "$1" in

  start)

    echo "virtual distributed ethernet setup"



    # Start the virtual ethernet as daemon:

    /usr/local/bin/vde_switch -tap tap0 -daemon -sock /tmp/vde.ctl

    # To run your virtual ethernet in hub mode, use the -hub option instead:

    # /usr/local/bin/vde_switch -hub -tap tap0 -daemon -sock /tmp/vde.ctl



    # Wait a little for the virtual network to setup:

    /bin/sleep 2



    # Assign an IP to the virtual interface tap0:

    /sbin/ifconfig tap0 192.168.254.254



    # Make it accessible for everyone:

    /bin/chmod -R 777 /tmp/vde.ctl



    # Activate routing to the ethernet:

    echo "1" > /proc/sys/net/ipv4/ip_forward

    /sbin/iptables -t nat -A POSTROUTING -o lan0 -j MASQUERADE

    ;;

  stop)

    echo "virtual distributed ethernet shutdown"



    # Flush the POSTROUTING list in iptables:

    /sbin/iptables -F POSTROUTING -t nat



    # Shutdown the virtual network:

    /sbin/ifconfig tap0 down >/dev/null 2>&1



    # Kill the vde daemon:

    /usr/bin/killall vde_switch >/dev/null 2>&1

    ;;

  *)

    echo "Usage: $0 {start|stop}"

    exit 1

esac

exit 0




Danach das Skript noch ausführbar machen:

Code: Select all
# chmod +x vde




Dann ins Verzeichnis mit den im Runlevel 5 zu startenden Scripten wechseln:

Code: Select all
# cd /etc/rc5.d




Und einen symbolischen Link zum Start des Skriptes anlegen:

"S" steht hier für "Start", d.h. der Parameter "start" wird an das Skript übergeben.

"20" steht für die Prioritäts-Reihenfolge gegenüber anderen Skripten.

Code: Select all
# ln -s /etc/init.d/vde S20vde




Nach einem Neustart sollte das virtuelle Netzwerk verfügbar sein.



Durch die Routing Regel haben die virtuellen Maschinen auch Zugriff auf das Internet.

Bei mir wird das aber erstmal durch die Firewall Regeln geblockt.

Also Start von Guarddog:

Code: Select all
$ kdesu guarddog


Dann Anlegen einer neuen Netzwerkzone (ich habe sie VLAN genannt) und

das gesammte virtuelle LAN mit der Netzwerkadresse 192.168.254.0/255.255.255.0 hinzufügen.

Dieses noch per Häkchen mit den gewünschten Netzwerken verbinden (Internet, ...).

Im Reiter Protokoll wiederum festlegen, welche Dienste ins Internet (oder anderen Zonen)

möglich sein sollen ("von Internet für VLAN bereitgestellt").

Also z.B. Netzwerk->DNS und Ping, Dateiübertragung->HTTP, HTTPS und FTP, usw.





Um jetzt die per QEMU emulierten Maschinen beim Starten mit dem virtuellen Netzwerk

zu verbinden gibt es einen Wrapper-Befehl, der folgendermassen benutzt wird:

Code: Select all
$ vdeqemu -snapshot -cdrom /media/sda7/ISO/Kanotix/KANOTIX-2005-04.iso -m 265 -boot d




vdeqemu übergibt qemu als Parameter das virtuelle Netzwerk als Interface.

Man lässt also die Netzwerk Optionen (-net) weg und kann ansonsten die gleichen Parameter

verwenden, wie beim direkten Aufruf von qemu.



In JQEMU (einer grafischen Benutzeroberfläche für qemu) kann man in den Optionen (alt-o)

den Befehl zum Aufruf von qemu in vdeqemu ändern, und somit vde auch in JQEMU nutzen.





Das einzige was jetzt noch fehlt ist die Netzwerk-Konfiguration der Clients.

Dies gelingt leider nicht automatisch, da für das virtuelle Netzwerk kein DHCP-Server

vorhanden ist.

Folgende Einstellungen müssen in den Clients vorgenommen werden:

Code: Select all
IP:         192.168.254.[1-253] (also z.B. 192.168.254.1)

Netmask:    255.255.255.0

Broadcast:  192.168.254.255

Gateway:    192.168.254.254

DNS-Server: Wie im Host, bzw. Router






[EDIT date=28.03.2006]

Alternativ kann mit dem Paket dnsmasq auch ein DHCP-Server gestartet werden:



Paket installieren (falls nicht schon vorhanden):

Code: Select all
# apt-get install dnsmasq




DHCP und DNS Server kann man mit folgendem Befehl starten:

Code: Select all
# dnsmasq --interface=tap0 --dhcp-range=192.168.254.10,192.168.254.110




Auf diese Weise werden automatisch IP-Adressen aus dem angegebenen Bereich zugewiesen.

Der Parameter --interface=tap0 beschränkt dnsmasq dabei auf das virtuelle Interface.



Damit das auch klappt, muss DHCP auf dem virtuellen Interface erlaubt sein.

Also in Guarddog "tap0" als DHCP-Interface und DHCP-Server zulassen.

Um DNS-Anfragen aus dem virtuellen Netzwerk beantworten zu können, muss ausserdem

DNS - Domain Name Server von "Lokal" für "VLAN" bereitgestellt werden.



dnsmasq liefert aber auch schon ein Skript zum Starten mit:

Code: Select all
# /etc/init.d/dnsmasq start




Die Einstellungen werden in einer Konfigurationsdatei vorgenommen:

Code: Select all
/etc/dnsmasq.conf




Dort kann man den DHCP und DNS Server z.B. auf das virtuelle Interface beschränken

und die zu vergebenen IP Adressen festlegen:

Code: Select all
interface=tap0

dhcp-range=192.168.254.10,192.168.254.110




Um auch dnsmasq beim Systemstart zu laden, legen wir im Verzeichnis

mit den im Runlevel 5 zu startenden Scripten einen symbolischen Link an:

Code: Select all
# ln -s /etc/init.d/dnsmasq /etc/rc5.d/S21dnsmasq




Die Priorität "21" sorgt dafür, das zuerst das Virtuelle Netzwerk

gestartet wird (Priorität "20").





Auf meinem System verhinderte die Firewall trotz vorgenommener Einstellungen

immer noch die DNS-Anfragen.

Das liegt höchstwahrscheinlich daran, das zum Ladezeitpunkt der Firewall-Regeln

das virtuelle Netzwerk und der DNS/DHCP-Server noch gar nicht stehen.

Daher lade ich nach dem Aufbau des VLAN die Regeln noch einmal neu.

Dazu dient folgender symbolischer Link auf das Guarddog-Skript im Runlevel-Verzeichnis:

Code: Select all
# ln -s /etc/init.d/guarddog /etc/rc5.d/S22guarddog






Damit es bei mehreren VM's nicht zu Konflikten im VLAN kommt,

müssen wir jeweils eine MAC-Adresse übergeben.

Das funktioniert mit folgenden Parametern:

Code: Select all
-net vde -net nic,macaddr=00:11:22:33:44:55


[/EDIT]





So das war's. Jetzt haben wir ein virtuelles Netzwerk und können munter

Samba-Konfigurationen, Firewall-Regeln und andere Dinge testen, ohne einen

zweiten Rechner laufen lassen zu müssen.
Last edited by madblueimp on Tue Mar 28, 2006 19:05, edited 1 time in total.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

SAMBA HOWTO

Postby madblueimp » Thu Feb 23, 2006 06:05

SAMBA HowTo

(Verzeichnisse per SMB-Protokoll freigeben)



Die Rechtevergabe für Dateien und Verzeichnisse unter Linux erfolgt immer auf Benutzerebene

(von erweiterten Sicherheitslösungen wie SELinux mal abgesenen ;)).



Daher erstellen wir uns zuerst einen neuen Systembenutzer ohne Login-Shell mit einer zugehörigen

privaten Systemgruppe:

Code: Select all
# adduser --system --shell /bin/false share --group




Der Parameter --system bewirkt, das die UID aus dem Bereich 100-999 (für dynamisch zugewiesene Systembenutzer)

zugewiesen wird und der Benutzer im Anmeldeschirm nicht angezeigt wird.



Das Programm /bin/false beendet sich nach dessen Aufruf sofort wieder, sodass es beim Login zu keiner Shell-Session kommt.

Durch die Shell-Zuweisung --shell /bin/false definieren wir also einen Benutzer ohne Login-Shell.



der Parameter --group bewirkt, das dem Systembenutzer automatisch eine private Gruppe mit

der selben ID und dem gleichen Namen zugewiesen wird.



share ist schliesslich der Name unseres neuen Benutzers und der Name seiner privaten Gruppe.

Mit dem Namen legen wir auch gleichzeitig dessen Home-Verzeichnis unter /home/share fest.



Der Gruppe share fügen wir nun alle Benutzer hinzu, die vollen Zugriff auf das

share-Verzeichnis haben sollen (in meinem Fall, nur mein Hauptbenutzer):

Code: Select all
# adduser madblueimp share




Jetzt ändern wir die Zugriffsrechte dahingehend, das Benutzer (share) und Gruppe (share)

volle Zugriffsrechte haben, und damit alle Mitglieder der Gruppe share:

Code: Select all
# chmod 775 /home/share/




Ausserdem setzen wir die Gruppen-ID (GID):

Code: Select all
# chmod g+s /home/share/


Das bedeutet, neue Dateien/Verzeichnisse werden statt mit der Hauptgruppe des

Benutzers (z.B. madblueimp) mit der Gruppe des Verzeichnisses (share) angelegt.







Jetzt kommen wir zur eigentlichen Samba-Konfiguration:



Zuerst erstellen wir basierend auf dem User share den Samba-User share:

Code: Select all
# smbpasswd -a share


Dabei müssen wir ein Passwort angeben.

Das ist das selbe, das nachher auch beim Zugriff auf die freigegebenen Verzeichnisse abgefragt wird.



Dann öffnen wir die Sama-Konfigurations-Datei:

Code: Select all
# vi /etc/samba/smb.conf




Code: Select all
$ man smb.conf


liefert uns die Informationen zu den möglichen Parametern.



Als Vorlage kann aber auch diese Beispiel-Datei dienen:

Code: Select all
;

; /etc/samba/smb.conf

;





[global]



; Paranoid ;) check so root cannot access the smb shares:

invalid users = root



; This will require a Unix account for every user accessing the server:

security = user



; Hosts/networks that may access the samba share:

hosts allow = 192.168.1.0/255.255.255.0, 192.168.254.0/255.255.255.0



; Workgroup the samba server will be part of:

workgroup = ALEA



; Server identification (%h resolves to the hostname):

server string = %h paradise



; This socket options speeds up Samba under Linux:

socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096



; Encrypt passwords, so the latest Windows 95 and NT clients can connect with no problems:

encrypt passwords = true



; Set the maximum disk size (MB) apparent to the clients for all shares:

max disk size = 1024





[share]



; Description of the public share

comment = Free bananas for everyone



; Valid users to connect to the public share

valid users = share



; Path to the public share

path = /home/share



; Set to no to dissallow browsing the public share

browseable = yes



; Set to no to disallow creation and modification of files

writeable = yes



; Permission bits set when creating new files:

create mask = 0774



; Permission bits set when creating new directories:

directory mask = 0775



; Permission bits that may be changed for files (set 0777 for all):

security mask = 0000



; Permission bits that may be changed for directories (set 0777 for all):

directory security mask = 0000




In dieser Konfiguration kann man sich als Benutzer share per SMB-Protokoll anmelden.

Im Windows Explorer wird dazu z.B. die URL \\192.168.254.254 eingeben,

im Konqueror dagegen z.B. smb://192.168.254.254/.

Erlaubt ist ein Zugriff jedoch nur von den aufgeführten lokalen Netzwerken,

unabhängig von Firewall-Regeln.

Nach Eingabe von Benutzername und (Samba-)Passwort können Dateien und Verzeichnisse

gelesen, erstellt und wieder modifiziert oder gelöscht werden.

Alle Mitglieder der Gruppe sharegroup haben vollen Zugriff,

alle anderen Lesezugriff.



Um die Sambakonfiguration zu testen muss auch nicht unbedingt ein (virtuelles) Netzwerk

aufgesetzt werden. Über den Aufruf smb://127.0.0.1/ kann man auf seine eigenen Freigaben

zugreifen, solange nicht der Parameter "deny hosts = 127.0.0.1" gesetzt wurde.



Zur Überprüfung der internen Fehlerfreiheit kann man die smb.conf Datei auch noch mit dem Tool testparm überprüfen:

Code: Select all
$ testparm /etc/samba/smb.conf




Damit der Zugriff über das Netzwerk klappt muss der Rechner natürlich erreichbar sein.

In Guarddog kann dazu einfach im Reiter "Protokoll" in Abschnitt "Netzwerk" das

"Microsoft SMB über TCP" aktiviert werden.

In meinem Fall ist es das einzige Protokoll, das mein Rechner ("Lokal") für Rechner

in der Zone "LAN" und "VLAN" bereitstellt.

LAN ist meine lokale Netzwerkzone mit der Adresse 192.168.1.0/255.255.255.0 und

VLAN ist meine virtuelle lokale Netzwerkzone mit der Adresse 192.168.254.0/255.255.255.0.

Somit haben Rechner aus diesen beiden Netzwerken Zugriff auf meine Freigaben.

Damit der Zugriff auch in umgekehrter Richtung klappt, müssen dieselben Ports auch

für die "Lokale Zone" von LAN und VLAN bereitgestellt werden.





Zuletzt behandeln wir noch kurz das Starten/Beenden des Samba-Servers.

Im Verzeichnis /etc/init.d/ gibt es dazu das Skript samba.

Es kann mit den Parametern start|stop|reload|restart|force-reload aufgerufen werden.

Mit folgendem Aufruf werden die Dämonen nmbd (NetBIOS name server) und

smbd (der SMB Server) gestartet:

Code: Select all
# /etc/init.d/samba start




Wir könnten nun z.B. einen symbolischen Link in den Runlevel-Ordnern setzen,

um die Dämonen bei Betriebssystemstart automatisch zu laden.

Oder ein Wrapper-Skript in /usr/sbin setzen und es der sudoers liste hinzufügen.



Auf jeden Fall wissen wir jetzt, wie man Dateifreigaben unter Linux einrichtet. ;)





P.S.: Es ist auch möglich, SMB verschlüsselt über SSH zu tunneln.

Für den Fall, das man Dateien verschlüsselt übertragen möchte, ist aber wahrscheinlich

FTPS oder SFTP die bessere Lösung.
Last edited by madblueimp on Thu May 18, 2006 05:01, edited 4 times in total.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Postby madblueimp » Mon Apr 10, 2006 17:18

Internet Explorer 6 (IE6) mit WINE unter Linux installieren





Neuen Benutzer "windows" hinzufügen:



Code: Select all
# adduser --system --shell /bin/bash windows --group




Der Parameter --system bewirkt, das die UID aus dem Bereich 100-999 (für dynamisch zugewiesene Systembenutzer)

zugewiesen wird und der Benutzer im Anmeldeschirm nicht angezeigt wird.



Durch die Shell-Zuweisung --shell /bin/bash bekommt der Systembenutzer eine Shell zugewiesen.



der Parameter --group bewirkt, das dem Systembenutzer automatisch eine private Gruppe mit

der selben ID zugewiesen wird.



windows ist schliesslich der Name unseres neuen Benutzers.

Mit dem Namen legen wir auch gleichzeitig dessen Home-Verzeichnis unter /home/windows fest.





Dann vergeben wir ein Passwort für den "windows"-Benutzer:

Code: Select all
# passwd windows






Als nächstes fügen wir den Benutzer windows noch den Audio und Video -Gruppen hinzu:

Code: Select all
   # adduser windows audio

   # adduser windows video






Folgende Dateien herunterladen:

http://www.kievinfo.com/2/ie6_overrides.reg

Sowie von Microsoft: DCOM98.exe und ie6setup.exe





Eine Shell als Benutzer windows starten:

Code: Select all
$ kdesu -u windows "xterm -font 10x20"


(Der Parameter -font 10x20 sorgt für eine grössere Font beim Aufruf)





Als windows-User mit wine die heruntergeladenen Programme installieren:

Code: Select all

   $ wine regedit ie6_overrides.reg

   $ wine DCOM98.exe

   $ wine ie6setup.exe




ie6setup.exe installiert IE6 direkt von Microsoft.

Um das IE6 Setup dauerhaft zu speichern, kann die Setup-Datei folgendermassen aufgerufen werden:

Code: Select all
$ wine ie6setup.exe /c:"ie6wzd.exe /d /s:""#E"


Damit bekommt man einen Auswahldialog was man herunterladen möchte und wo es gespeichert werden soll.

Danach kann man IE6 immer wieder folgendermassen installieren:

Code: Select all
$ wine "C:\\Windows Update Setup-Dateien\\ie6setup.exe"








Starten kann man IE6 schliesslich mit

Code: Select all
$ wine "C:\\Programme\\Internet Explorer\\IEXPLORE.EXE"








Zusätzlich kann man noch den aktuellen Flash Player 8 von Macromedia installieren, dazu einfach:

Code: Select all
$ wine install_flash_player_active_x_8.0.24.0


Damit hat man dann auch Flash 8 unter Linux. :)





------------------------

UPDATE - 14.05.2006

------------------------

Weitaus einfacher und schneller geht die IE-Installation mit IEs 4 Linux.

Das Anlegen eines weiteren Benutzers "windows", wie oben beschrieben würde ich dennoch empfehlen.
Last edited by madblueimp on Sun May 14, 2006 13:22, edited 3 times in total.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Postby madblueimp » Sat Apr 15, 2006 11:53

Konfigurieren zusätzlicher Maustasten (+ Scrollrad) mit Hilfe von imwheel



Versionen ab:

X.org 6.9

imwheel 1.0.0pre12-7




imwheel installieren:

Code: Select all
   # apt-get install imwheel




Folgender Eintrag in

/etc/X11/xorg.conf

Code: Select all

Section "InputDevice"

          Identifier      "USB Mouse"

          Driver          "mouse"

          Option          "Device"                "/dev/input/mice"

          Option      "SendCoreEvents"   "true"

          Option          "Protocol"              "ExplorerPS/2"

EndSection







Folgende Einträge sind NICHT nötig und sollten entfernt werden,

da sie ansonsten eventuell mit imwheel interferieren,

in dem sie Default-Einträge überschreiben:

Code: Select all
          Option          "ZAxisMapping"          "4 5"

          Option          "Buttons"               "7"




Wer sich unsicher ist, kann diese Einträge auch mit # auskommentieren.



Wichtig: Änderungen an xorg.conf werden erst nach einem Neustart des X-Servers aktiv.





Mit Hilfe des Tools xev kann man nun die Button-Events der Maus ermitteln:

Code: Select all
   $ xev




Bei mir erscheinen die Daumentasten als Button8 und Button9.



Ich habe zwar keine 9 Maustasten, die Belegung liegt aber an

folgenden Zuweisungen durch X.org:



- Button1 ist die linke Maustaste.

- Button2 ist die mittlere Maustaste (Klick auf das Mausrad).

- Button3 ist die rechte Maustaste.

- Button4 ist reserviert für horizontales Mausrad hoch --> In imwheel "Up"

- Button5 ist reserviert für horizontales Mausrad herunter --> In imwheel "Down"

- Button6 ist reserviert für vertikales Mausrad links --> In imwheel "Left"

- Button7 ist reserviert für vertikales Mausrad rechts --> In imwheel "Right"



Zusätzliche Maustasten beginnen mit Button8.



Bei mir also:



- Button8 ist die hintere Daumentaste --> In imwheel "Thumb1"

- Button9 ist die vordere Daumentaste --> In imwheel "Thumb2"





imwheel können beim Start Parameter übergeben werden.



-k bedeutet, das vorhandene imwheel Instanzen "gekillt" werden.

-b ist die Button Zuweisung, nach folgendem Schema:



Up, Down, Left, Right, Thumb1, Thumb2, ExtBt7, ExtBt8, etc.



Also z.B.:



Code: Select all
   $ imwheel -k -b "4 5 6 7 8 9"




Oder, falls z.B. nur die Daumentasten von imwheel Kontrolliert werden sollen:



Code: Select all
   $ imwheel -k -b "0 0 0 0 8 9"




Wichtig sind seit Version 1.0.0pre12-7 die Leerzeichen zwischen den Button Nummern!



Siehe dazu auch

/usr/share/doc/imwheel/NEWS.Debian.gz

/usr/share/doc/imwheel/README.Debian.gz



oder



Code: Select all
   $ man imwheel






Equivalent zu den benötigten Einstellungen sieht die Startup-Datei für imwheel aus:

/etc/X11/imwheel/startup.conf



Code: Select all
   # Configuration file for setting imwheel startup parameters.

   

   # Set this to "1" to make imwheel start with X.

   IMWHEEL_START=1

   

   # Specify the command line parameters to pass to imwheel.

   # Simply uncomment the bottom line, and replace the default

   # options with your own if necessary.

   IMWHEEL_PARAMS="-kb 4 5 6 7 8 9"






Nun müssen wir nur dafür sorgen, das imwheel auch zusammen mit X startet.

Dazu fügen wir folgende Zeilen in der X11-Startdatei ein, für die systemweite Konfiguration unter

/etc/X11/xinit/xinitrc



Code: Select all
   # Autostart imwheel:

   /usr/bin/imwheel




Etwaige Fehlermeldungen beim Start von X werden in folgender Datei geloggt:

~/.xsession-errors





Jetzt muss noch die eigentliche Konfigurationsdatei von imwheel angelegt werden,

in der festgelegt wird, was imwheel beim Betätigen der angegeben Buttons tun soll.



Systemweit ist das

/etc/X11/imwheel/imwheelrc



Diese wird benutzt, wenn imwheel keine benutzerspezifische Konfigurationsdatei findet:

~/.imwheelrc





Meine Konfigurationsdatei sieht sehr einfach aus:



Code: Select all
   ".*"

   None,   Thumb1,   Alt_L|Left

   None,   Thumb2,   Alt_L|Right






".*" bedeutet, diese Konfiguration gilt für alle (Programm-)Fenster.

None bedeutet, es ist keine zusätzliche Taste zu drücken.

Thumb1 steht für die gedrückte Maustaste (siehe oben).

Alt_L|Left sind schließlich die Keyboard Events, die von imwheel ausgelöst werden.

In diesem Fall also die Linke ALT-Taste gleichzeitig mit der "Nach-Links"-Taste

auf dem Cursor-Block.



In Opera, Firefox und Konqueror steht diese Tastenkombination für "zurück" in der Browser-History.

Alt_L|Right steht dagegen für "vorwärts" in der Browser-History.



Damit die Änderungen wirksam werden, reicht es, imwheel neu zu starten, es ist in diesem Fall

kein Neustart des X-Servers nötig:



Code: Select all
   $ imwheel -k -b "4 5 6 7 8 9"






Eine Umfangreiche Beispiel-Konfigurations-Datei ist auf der Projektseite unter folgendem Link zu finden:

http://imwheel.sourceforge.net/imwheelrc
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Verschlüsselte Home-Partition mit dm-crypt

Postby madblueimp » Wed May 03, 2006 00:13

Verschlüsselte Home-Partition mit dm-crypt



- Crypt-Device-Mapper erstellen:

Code: Select all
# cryptsetup -y -c aes-cbc-essiv:sha256 create home /dev/hda7


Der Parameter -y bewirkt eine Verifikation der Passphrase (zweimal eingeben)

Der Parameter -c ist der Code-Schlüssel. in dieser Version resistent gegen "Watermark"-Angriffe

home ist der Name des Mappers

/dev/hda7 die zu verschlüsselnde Partition



- Dateisystem auf der verschlüsselten Partition erstellen

Code: Select all
# mkfs.reiserfs /dev/mapper/home




- Temporären Mount-Point erstellen:

Code: Select all
# mkdir /mnt/tmp




- Verschlüsselte Partition mounten:

Code: Select all
# mount /dev/mapper/home /mnt/tmp




- Den Inhalt von /home auf die verschlüsselte Partition übertragen:

Code: Select all
# rsync -a /home /mnt/tmp




- In /etc/crypttab folgendes einfügen:

Code: Select all
home /dev/hda7 none cipher=aes-cbc-essiv:sha256




- Die /etc/fstab anpassen:

Code: Select all
/dev/mapper/home       /home    reiserfs defaults        0       2




- /etc/modules erweitern:

Code: Select all
   aes




- Symbolischen Link zum automatischen Erstellen des Mappers:

Code: Select all
# ln -s /etc/init.d/cryptdisks /etc/rcS.d/S28cryptdisks




- Neustart des Systems.

Wenn alles glatt läuft, kann mit einer Live-CD das alte /home

entfernt werden.

(Das im laufenden System ja nicht mehr erreichbar ist).
Last edited by madblueimp on Mon May 15, 2006 00:00, edited 1 time in total.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

System-Änderungen durch Neu-Partitionierung

Postby madblueimp » Wed May 03, 2006 00:14

System-Änderungen durch Neu-Partitionierung



Generell gilt bei Änderungen an der Partitionierung:



- Backups aller wichtigen Daten

- Partitionen per Live-CD ändern



Falls die root- oder boot-Partition eine

neue Position bekommen hat:



- Grub neu installieren:

Code: Select all
# grub-install --recheck --no-floppy --root-directory=/media/hda8 /dev/hda




- /boot/grub/menu.lst anpassen

- /etc/fstab anpassen



- In /boot/grub/menu.lst die Zeile mit "initrd" auskommentieren.



- Jetzt kann das System wieder starten.



- Im laufenden System, die initrd neu erzeugen, z.B.:

Code: Select all
# mkinitrd -o /boot/initrd-2.6.x.img




- Alternativ: Kernel-Update durchführen.



- Jetzt kann die Zeile mit "initrd" in der /boot/grub/menu.lst wieder entkommentiert werden.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Verschlüsselte Partition mit LUKS (Linux Unified Key Setup)

Postby madblueimp » Mon May 15, 2006 01:57

Verschlüsselte Partition mit LUKS (Linux Unified Key Setup) und pam-mount



pam-mount installieren:

Code: Select all
# apt-get install libpam-mount






Partition mit Nullen überschreiben:

Code: Select all
# dd if=/dev/zero of=/dev/sda8 bs=1M




Bereich des LUKS-Headers mit zufälligen Daten überschreiben:

Code: Select all
# dd if=/dev/urandom of=/dev/sda8 bs=1M count=2




LUKS-Formatierung und Eingabe des ersten Passworts:

Code: Select all
# cryptsetup luksFormat -c aes-cbc-essiv:sha256 -s 256 -y /dev/sda8




Verschlüsselte Partition öffnen:

Code: Select all
# cryptsetup luksOpen /dev/sda8 data




Das über den Device-Mapper eingebundene Volume mit Nullen beschreiben:

Code: Select all
# dd if=/dev/zero of=/dev/mapper/data




Ein Dateisystem anlegen:

Code: Select all
# mkfs.reiserfs /dev/mapper/data




Die verschlüsselte Partition wieder schliessen:

Code: Select all
# cryptsetup luksClose data




Informationen über ein LUKS-Volume ausgeben:

Code: Select all
# cryptsetup luksDump /dev/sda8




Informationen (inklusive LUKS Master Keys) über alle eingebundenen Volumes ausgeben:

Code: Select all
# dmsetup table






pam-mount bringt zwei praktische Skripte zum Umgang

mit LUKS-Volumes mit:



Mounten eines LUKS-Volumes:

Code: Select all
# mount.crypt /dev/sda8 /mnt/data




Aushängen des LUKS-Volumes:

Code: Select all
# umount.crypt /mnt/data






Nachdem die verschlüsselte Partition angelegt wurde

sind noch folgende Schritte notwendig, um die Partition über

das Benutzerpasswort beim Login einzubinden:



Benutzerpasswort als neuen Keyslot hinzufügen:

Code: Select all
# cryptsetup luksAddKey /dev/sda8




Dazu muss zweimal ein vorhandenes Passwort eingegeben werden

und anschliessend zweimal das neue Passwort.

Es sind insgesamt 8 Keyslot für Passwörter vorhanden.



Keyslots können auch wieder deaktiviert werden.

Dadurch wird das zum angegebenen Slot gehörende Passwort gelöscht:

Code: Select all
# cryptsetup luksDelKey /dev/sda8 1






In /etc/pam.d/login (Konsole-Login)

und /etc/pam.d/kdm (Grafisches Login)

hinter der Zeile



Code: Select all
@include common-session




die folgende Zeile einfügen:



Code: Select all
@include common-pammount




Somit ist pam-mount aktiviert und ein Login auf eine der Konsolen (STRG+ALT+F1)

sollte Debug-Ausgaben liefern.

Falls alles gut funktioniert können die Debug-Ausgaben durch folgenden Eintrag zu Beginn

der Datei /etc/security/pam_mount.conf entfernt werden:



Code: Select all
debug 0




Am Ende von /etc/security/pam_mount.conf kommt nun der Eintrag zum Mounten

der verschlüsselten Partition:



Code: Select all
volume madblueimp crypt - /dev/sda8 /mnt/data - - -




Statt dem User madblueimp kann an der Stelle eine Komma-getrennte Liste von

Benutzern stehen, welche das Volume einbinden dürfen, solange ihr Passwort einen

Keyslot entsperrt. * erlaubt allen Nutzern das einbinden.





Auf diese Weise lässt sich auch die Home-Partition prima verschlüsseln

und beim Login einbinden.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Postby madblueimp » Thu May 18, 2006 20:06

FTP-Server sicher einrichten mit SSL/TLS-Verschlüsselung



Heute beschreibe ich die Einrichtung eines sicheren FTP-Servers.



"Sicher" bezieht sich dabei auf vier Aspekte:

    Der Code des FTP-Servers ist auf Sicherheit optimiert.

    FTP-Benutzer haben so wenige Rechte wie möglich und keinen Zugriff auf das System.

    Der Zugang zum FTP-Server ist durch Benutzerauthentifizierung geschützt

    Die Kommunikation zwischen Client und Server ist durch Verschlüsselung geschützt



Wir verwenden als Server daher vsftpd.

vsftpd ist im Hinblick auf Sicherheit, Performanz und Stabilität entwickelt worden.



Er wird von einigen namhaften Webseiten eingesetzt, darunter z.B.:

    ftp.redhat.com

    ftp.suse.com

    ftp.debian.org

    ftp.openbsd.org

    ftp.freebsd.org

    ftp.gnu.org

    ftp.gnome.org

    ftp.kde.org

    ftp.kernel.org



vsftpd kann "standalone" sowie als "inetd operation" laufen.

"inetd operation" bedeutet, vsftpd läuft als einer von mehren Internet-Diensten, die man über /etc/inetd.conf konfigurieren kann.



In meiner Konfiguration läuft vsftpd "standalone".

D.h. ich starte ihn per Kommandozeilenbefehl nach Bedarf, da mein Rechner nicht immer online oder überhaupt hochgefahren ist und ich den FTP-Server auch nicht immer brauche.





Jetzt aber zur Installation und Einrichtung:

Code: Select all
# apt-get install vsftpd


Mit diesem Befehl installieren wir unter Debian vsftpd.

Eventuell wird dabei ein schon vorhandener FTP-Dämon deinstalliert.



Als nächstes richten wir uns einen eingeschränkten FTP-Benutzer ein.

Ich habe dazu den Samba-User share benutzt, den ich im Artikel zur Samba-Konfiguration beschrieben habe.



Hier noch einmal die Befehle zur Einrichtung:

Code: Select all

# adduser --system --shell /bin/false share --group

# adduser madblueimp share

# chmod 775 /home/share/

# chmod g+s /home/share/



Damit haben wir einen System-Benutzer ohne Login-Shell, der nicht im Anmeldebildschirm auftaucht.

Seiner (eigentlich) privaten Gruppe gehört auch unser Hauptbenutzer an (in meinem Fall "madblueimp").

Benutzer und Gruppe haben Lese+Schreibrechte.

Neue Dateien in /home/share werden automatisch mit der Gruppe share angelegt.



Damit der FTP-Login mit dem Benutzer share funktioniert, müssen wir zusätzlich zu der Einrichtung im Samba-Artikel noch eine weitere Konfiguration vornehmen.

Wir fügen /bin/false der Liste der "validen" Login-Shells in der Datei

/etc/shells hinzu:

Code: Select all
# vi /etc/shells


Ausserdem muss für share ein Passwort vergeben werden, das damit auch als FTP-Passwort dient:

Code: Select all
# passwd share




Jetzt kommen wir zu eigentlichen Konfiguration des FTP-Servers.

Dazu müssen wir zwei Konfigurationsdateien editieren.

Die vsftpd-Benutzerliste:

Code: Select all
# vi /etc/vsftpd.user_list


Und die vsftpd-Konfigurationsdatei:

Code: Select all
# vi /etc/vsftpd.conf




Die Benutzerliste ist noch nicht vorhanden und wird daher von vi angelegt.

Darin tragen wir zeilenweise die Benutzer ein, die sich per FTP einloggen können sollen.

Alternativ kann diese Liste auch als "Banlist" dienen, also als Ausschluss-Kriterium für den FTP-Login.

In meiner Konfiguration steht dort nur der Benutzername share, als einziger FTP-Benutzer:

Code: Select all
share




Die vsftpd Konfigurationsdatei (/etc/vsftpd.conf) ist etwas umfangreicher.

Nach der Installation ist schon eine Beispieldatei vorhanden, in der aber die meisten Optionen auskommentiert sind.

Die Beispieldatei führt allerdings nicht alle möglichen Einstellungen auf.

Eine Übersicht aller Optionen bietet die zugehörige Manpage:

Code: Select all
$ man vsftpd.conf




Hier nun meine vsftpd-Konfigurationsdatei:

Code: Select all

# Run standalone?  vsftpd can run either from an inetd or as a standalone

# daemon started from an initscript.

listen=YES

#

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).

anonymous_enable=NO

#

# Uncomment this to allow local users to log in.

local_enable=YES

#

# Activate logging of uploads/downloads.

xferlog_enable=YES

#

# You may fully customise the login banner string:

ftpd_banner=Welcome to banana paradise.

#

# Restrict local users to their home directories.

chroot_local_user=YES

#

# Allow only users in /etc/vsftpd.user_list to login

userlist_deny=NO

userlist_enable=YES

#

# Port range for passive FTP incoming requests

pasv_min_port=30000

pasv_max_port=30999

#

# Allow ASCII Mode transfers:

ascii_download_enable=YES

ascii_upload_enable=YES

#

# Set this to YES if you want to allow uploads

write_enable=YES

#

# Display all user and group information in directory listings as "ftp"

hide_ids=YES

#

# Disallow chmod commands

chmod_enable=NO

#

# File creation mask for local users

local_umask=007

#

# Allow SSL encryption:

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv3=YES

ssl_sslv2=YES

force_local_logins_ssl=NO

force_local_data_ssl=NO

rsa_cert_file=/etc/ssl/certs/vsftpd.pem





Zusammengefasst erlaubt diese Konfiguration nur lokal vorhandenen Benutzern den Login.

Diese werden durch die Benutzerliste (/etc/vsftpd.user_list) nochmals einegrenzt, so das sich nur der Benutzer share per FTP auf den Server verbinden kann.

Anonyme Verbindungen werden nicht zugelassen.

Der per FTP eingeloggte Benutzer wird in einer chroot-Umgebung eingesperrt.

D.h. das Home-Verzeichnis (in diesem Fall /home/share) entspricht der obersten Verzeichnishierarchie (/).

Es ist also kein Wechsel in ein Verzeichnis ausserhalb des eigenen Home-Verzeichnis für den FTP-Benutzer möglich.

Dadurch, das unser FTP-Benutzer auch keine Login-Shell zur Verfügung hat, ist er also vom System abgeschottet.

In meiner Konfiguration hat der FTP-Benutzer Schreibzugriff, d.h., er kann auch Dateien hochladen.

Benutzer und Gruppe share haben automatisch Lese+Schreibzugriff auf hochgeladene Dateien.

Damit hat auch unser Hauptbenutzer vollen Zugriff, da er der Gruppe share angehört.

Dies kann vom FTP-Benutzer nicht geändert werden, da er laut Konfiguation keine chmod-Befehle ausführen darf.



Die letzten Einträge in meiner Konfigurationsdatei aktivieren die SSL/TLS-Verschlüsselung.

Damit das auch funktioniert, müssen wir uns noch ein Zertifikat erstellen:

Code: Select all
# openssl req -new -x509 -nodes -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/certs/vsftpd.pem




Damit unser FTP-Server auch hinter einer Firewall erreichbar ist, müssen wir ein paar Regeln erstelleln.

In Guarddog gibt es für FTP einen vorgefertigten Regelsatz.

Es reicht jedoch nicht aus, FTP lokal für andere Zonen bereitzustellen.

Zumindest in meiner Konfiguration funktionierte so die passive Dateiübertragung noch nicht.

Daher habe ich ein benutzerdefiniertes Protokoll erstellt, in dem ich zusätzlich die Ports 30000-30999 (TCP) freigebe.

Diesen Portrange hatte ich zuvor in meiner vsftpd-Konfigurationsdatei festgelegt.



Jetzt kann unser FTP-Server (im "Standalone-Modus") gestartet werden:

Code: Select all
# vsftpd




Erreichen können wir unseren FTP-Server wahlweise unverschlüsselt über FTP:

Code: Select all
ftp://share@localhost


Oder verschlüsselt über FTPS:

Code: Select all
ftps://share@localhost




Programme, die das Protokoll FTPS beherrschen, sind unter Linux z.B. die grafischen FTP-Client Kasablanca und gFTP, oder das Kommandozeilenprogramm LFTP.

Leider ist das per apt-get installierbare Package von gFTP ohne FTPS-Unterstützung kompiliert.



Unter Windows gibt es z.B. den praktischen FTP-Client FileZilla, der auch FTPS beherrscht.





Damit potenzielle Clients auch etwas per FTP oder FTPS herunterladen können, müssen wir natürlich auch etwas auf unserem Server bereitstellen.

Meist liegen die Dateien, die wir freigeben möchten schon irgendwo auf einer Daten-Partition.

Daher wäre es unsinnig, diese nochmal in das Verzeichnis /home/share zu kopieren.

Falls wir die Dateien per SMB-Protokoll über Samba freigeben wollen, reichen Symbolische Links:

Code: Select all
$ ln -s /freiedaten /home/share/download


Dadurch muss das Verzeichnis /freiedaten und die enthaltenen Dateien nur für den Benutzer share lesbar sein um sie per SMB herunterladen zu können.



Der gleiche SymLink würde aber per FTP nicht funktionieren.

Das liegt daran, das wir ja in einer chroot-Umgebung eingesperrt sind und alles ausserhalb von /home/share für uns somit nicht erreichbar ist.



Es gibt allerdings zwei Alternativen, die jeweils Vor- und Nachteile haben.



Man könnte statt Symbolischen Links einfach HardLinks benutzen:

Code: Select all
$ ln /freiedaten/freiedatei /home/share/freiedatei


Dadurch kopieren wir im Prinzip doch Dateien nach /home/share.

Allerdings brauchen diese keinen zusätzlichen Speicherplatz.

Der Vorteil dieser Methode ist, das wir sie als eingeschränkter Benutzer ausführen können.

Der Nachteil ist, das HardLinks nur auf Dateien, jedoch nicht auf Verzeichnisse anwendbar sind.



Alternativ kann man den mount-Befehl mit der Option --bind verwenden:

Code: Select all

$ mkdir /home/share/download

# mount --bind /freiedaten /home/share/download



Mit dieser Option können bereits eingebundene Verzeichnisse zusätzlich unter einem anderen Dateipfad eingebunden werden.

Dadurch können wir auch komplette Verzeichnisse freigeben.

Der Nachteil ist allerdings, das wir diesen Befehl nur als root ausführen können.





Abschliessend haben wir einen in mehrerer Hinsicht sicheren FTP-Server.



vsftpd bietet auch Möglichkeiten, die in diesem Artikel nicht angesprochen wurden, darunter:

    Virtual IP configurations

    Virtual users

    Bandwidth throttling

    Per-source-IP configurability

    Per-source-IP limits

    IPv6



Zur weiteren Konfiguration empfehle ich hier nochmals die zugehörige Manpage:

Code: Select all
$ man vsftpd.conf




IPv6 Support ließe sich z.B. einfach dadurch aktivieren, indem der Eintrag

Code: Select all
listen=YES


durch

Code: Select all
listen_ipv6=YES


ersetzt wird.

Damit wäre unser FTP-Server aus dem grossen Adressbereich von IPv6 erreichbar, allerdings nicht mehr über den immer noch alltäglichen Standard IPv4.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

vsftpd mit virtuellen Benutzern

Postby madblueimp » Sat May 20, 2006 16:45

vsftpd mit virtuellen Benutzern



Jetzt erweitern wir den im vorangegangenen Artikel eingerichteten FTP-Server um virtuelle Benutzer.



Dazu erstellen wir uns zuerst einen neuen System-Benutzer "virtual":

Code: Select all
# adduser --system --shell /bin/false virtual --ingroup share --home /home/share/\$USER --no-create-home




virtual hat keine eigene Gruppe, sondern gehört "share" an.

Das home-Verzeichnis für virtual existiert nicht, sondern verweist auf

/home/share/$USER

$USER ist ein Platzhalter für die Benutzernamen der virtuellen Benutzer, die wir später anlegen werden.



Als nächstes erstellen wir eine Datei login.txt, mit Benutzer und Passwort in je einer Zeile hintereinander:

Code: Select all
$ vi login.txt


Für die Benutzer download und upload würde die Datei folgendermassen ausehen:

Code: Select all
download

password

upload

password



Wichtig: Die letzte Zeile muss eine Leerzeile sein, sonst beschwert sich db_load.



Daraus die Datenbank der virtuellen Benutzer erstellen:

Code: Select all
# db3_load -T -t hash -f login.txt /etc/vsftpd_login.db




Zugriffsrechte beschränken:

Code: Select all
# chmod 600 /etc/vsftpd_login.db




PAM-Datei in /etc/pam.d/vsftpd erstellen:

(vorhandene Datei vorher umbenennen)

Code: Select all
# mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd_old

# vi /etc/pam.d/vsftpd




Darin folgende zwei Zeilen erstellen:

Code: Select all
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login




Die erstellten User in /etc/vsftpd.user_list eintragen:

Code: Select all
# vi /etc/vsftpd.user_list


Code: Select all
download

upload




Für jeden erstellten Benutzer ein Verzeichnis unterhalb /home/share anlegen,

der Gruppe (share) Schreibzugriff geben und virtual als Besitzer setzen:

Code: Select all
# mkdir /home/share/download

# chmod g+w /home/share/download

# chown virtual /home/share/download

# mkdir /home/share/upload

# chmod g+w /home/share/upload

# chown virtual /home/share/upload




/etc/vsftpd.conf anpassen:

Code: Select all
# vi /etc/vsftpd.conf


Code: Select all

listen=YES

anonymous_enable=NO

local_enable=YES

xferlog_enable=YES

ftpd_banner=Welcome to banana paradise.

chroot_local_user=YES

userlist_deny=NO

userlist_enable=YES

pasv_min_port=30000

pasv_max_port=30999

ascii_download_enable=YES

ascii_upload_enable=YES

write_enable=NO

chmod_enable=NO

hide_ids=YES

local_umask=007

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv3=YES

ssl_sslv2=YES

force_local_logins_ssl=NO

force_local_data_ssl=NO

rsa_cert_file=/etc/ssl/certs/vsftpd.pem

guest_enable=YES

guest_username=virtual

user_config_dir=/etc/vsftpd_user_conf

user_sub_token=$USER





Benutzer-Konfigurations-Verzeichnis erstellen:

Code: Select all
# mkdir /etc/vsftpd_user_conf




Die Konfigurationseinstellung je Benutzer überschreiben:

(Achtung. Virtuelle Benutzer gelten als "Anonyme" Benutzer)

Code: Select all
# vi /etc/vsftpd_user_conf/upload


Code: Select all
write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_umask=002






Damit hätten wir zwei virtuelle Benutzer:

- download dürfte Dateien herunterladen, die sich in /home/share/download befinden, aber sonst nichts

- upload dürfte Dateien herunterladen, die sich in /home/share/upload befinden, sowie dort neue Verzeichnisse erstellen und neue Dateien hochladen, jedoch nichts löschen, umbenennen oder modifizieren





Abschliessend können wir das Passwort des Benutzers share wieder sperren:

Code: Select all
# usermod --lock share


und /bin/false wieder aus der Liste der validen Login-Shells (/etc/shells) entfernen:

Code: Select all
# vi /etc/shells


Das dürfen wir deswegen, weil share nicht mehr als FTP-Benutzer gebraucht wird.

Die Authentifizierung der virtuellen FTP-Benutzer geschieht über die erstellte Berkeley-Datenbank (/etc/vsftpd_login.db), d.h. auch der System-Benutzer virtual benötigt keine valide Login-Möglichkeit.



Damit haben wir abschliessend die Sicherheit unseres FTP-Server nochmal verbessert und eine flexible Möglichkeit zur Benutzerverwaltung.
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

IPv6 Toredo-Tunnel mit Miredo

Postby madblueimp » Mon Jun 05, 2006 16:30

IPv6 Toredo-Tunnel mit Miredo

==============================



In diesem Artikel geht es darum, aus einem IPv4-Netzwerk

hinter einem Router, der IPv6 nicht beherrschen muss

auf das IPv6 zuzugreifen.




Auf Wikipedia ist Teredo wie folgt definiert:

Das Teredoprotokoll definiert eine Methode für den Zugriff auf das IPv6-Netzwerk hinter einem NAT-Gerät.

Es besteht darin, dass die IPv6-Pakete mit UDP über IPv4 gekapselt werden.

Dies geschieht mit Hilfe sogenannter Teredoserver.


(http://de.wikipedia.org/wiki/Teredo)



Miredo ist eine Teredo-Implementierung

für Linux.



Da Miredo noch nicht im Debian Repository ist, müssen wir es uns selbst kompilieren.



Zuerst das aktuelle "stable"-Archiv von

http://www.remlab.net/files/miredo/

herunterladen.



Das Archiv auspacken, konfigurieren, kompilieren und installieren:

Code: Select all
   $ ./configure

   $ make

   # make install




Miredo installiert Libraries nach /usr/local/lib,

aber das Default-Verzeichnis für Libraries auf meinem

System ist /usr/lib, deswegen habe ich noch folgende

symbolische Links erstellt:



Code: Select all
   # ln -s /usr/local/lib/libtun6.so.0 /usr/lib/libtun6.so.0

   # ln -s /usr/local/lib/libteredo.so.0 /usr/lib/libteredo.so.0






Damit der IPv6 Stack verfügbar ist, muss das betreffende

IPv6 Modul geladen werden:

Code: Select all
   # modprobe ipv6




Ob das Modul geladen wurde, erkennt man an der Ausgabe von ifconfig, das nun zu jedem

Interface weitere Zeilen listet, die mit "inet6" beginnen, z.B.:

Code: Select all
# ifconfig tap0

   tap0      Protokoll:Ethernet  Hardware Adresse 66:63:E4:FA:D9:E1

             inet Adresse:192.168.254.254  Bcast:192.168.254.255  Maske:255.255.255.0

             inet6 Adresse: fe80::6463:e4ff:fefa:d9e1/64 Gültigkeitsbereich:Verbindung

             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

             RX packets:1 errors:0 dropped:0 overruns:0 frame:0

             TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

             Kollisionen:0 Sendewarteschlangenlänge:500

             RX bytes:53 (53.0 b)  TX bytes:468 (468.0 b)





Jetzt kann der miredo Dämon gestartet werden:

Code: Select all
# /usr/local/sbin/miredo




Miredo benutzt die Konfigurationsdatei /usr/local/etc/miredo.conf.

In der Default-Einstellung startet Miredo als Teredo-Client und verbindet sich

mit dem Teredo-Server teredo.remlab.net (Miredo official testing Teredo server).





Teredo UDP Port

----------------------

Die Teredo-Server lauschen auf dem UDP-Port 3544 auf eingehende Verbindungen.

In den Firewall-Einstellungen muss es also erlaubt sein, Pakete an diesen Port

zu versenden.

In Guarddog wäre das etwa die folgende Einstellung:

UDP Port 3544 muss von der Zone Internet für die Lokale Zone bereitgestellt werden.





Sicherheitsanmerkung:

----------------------

Miredo muss zwar als root gestartet werden, setzt seine Rechte aber per Default

auf den Benutzer "nobody" herab, was schon mal weitaus sicherer ist.



Alternativ kann man miredo auch mit der Option "--enable-miredo-user" konfigurieren.

So kompiliert versucht Miredo unter dem Benutzer "miredo" zu laufen, der dazu

natürlich angelegt werden muss.



Als dritte Option kann der Benutzer, unter dem miredo laufen soll, auch mit dem

Parameter -u angegeben werden, ohne Miredo neu kompilieren zu müssen:



Code: Select all
# /usr/local/sbin/miredo -u miredo






Nach der initialisierung haben wir eine weiteres Interface namens "teredo":

Code: Select all
# ifconfig teredo

   teredo    Protokoll:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

             inet6 Adresse: 2001:0:8ac3:8248:0:fbbe:c129:2d6a/32 Gültigkeitsbereich:Global

             inet6 Adresse: fe80::5445:5245:444f/64 Gültigkeitsbereich:Verbindung

             UP PUNKTZUPUNKT RUNNING NOARP  MTU:1280  Metric:1

             RX packets:138 errors:0 dropped:0 overruns:0 frame:0

             TX packets:149 errors:0 dropped:0 overruns:0 carrier:0

             Kollisionen:0 Sendewarteschlangenlänge:500

             RX bytes:136049 (132.8 KiB)  TX bytes:15916 (15.5 KiB)






Damit haben wir eine öffentliche Teredo IPv6 Adresse und somit Zugang zum IPv6.





Zur Bestätigung dienen folgende Tests:



- IPv6-Ping zu http://www.kame.net:



Code: Select all
$ ping6 -c 4 www.kame.net

   PING www.kame.net(orange.kame.net) 56 data bytes

   64 bytes from orange.kame.net: icmp_seq=1 ttl=49 time=889 ms

   64 bytes from orange.kame.net: icmp_seq=2 ttl=49 time=349 ms

   64 bytes from orange.kame.net: icmp_seq=3 ttl=49 time=351 ms

   64 bytes from orange.kame.net: icmp_seq=4 ttl=49 time=351 ms

   

   --- www.kame.net ping statistics ---

   4 packets transmitted, 4 received, 0% packet loss, time 2998ms

   rtt min/avg/max/mdev = 349.410/485.432/889.667/233.387 ms






- Aufruf der Website http://www.kame.net/ , z.B. mit Opera oder Firefox (beide IPv6-fähig).



Dort sollte beim Aufruf über IPv6 eine animierte Schildkröte zu sehen sein, im Gegensatz

zu einer statischen Childkröte bei einem Aufruf über IPv4.

Es wird ein animiertes GIF (http://www.kame.net/img/kame-anime-small.gif) eingebunden,

anstatt einem statischen GIF (http://www.kame.net/img/kame-noanime-small.gif).



Alternativ zum Aufruf der Domain kann auch direkt die IPv6-Adresse der Seite aufgerufen

werden. Dieser Aufruf funktioniert garantiert nur über IPv6:

http://[2001:200:0:8002:203:47ff:fea5:3085]/



kame.net bietet auch Zugriff über FTP, so kann man auch gleich die IPv6-Fähigkeit des bevorzugten

FTP-Clients testen:

ftp://[2001:200:0:8002:203:47ff:fea5:3085]/



Mit Krusader funktioniert es jedenfalls. ;)





- Aufruf der Website http://www.ipv6.org/



Dort bekommt man seine öffentliche IP-Adresse präsentiert:

You are using IPv4 from 62.214.210.149

oder

You are using IPv6 from 2001:0:8ac3:8248:0:fb7e:c129:2d6a




Die Seite listet ausserdem weitere Informationen zu IPv6.





Beendet werden kann der miredo Dämon mit dem kill-Befehl.

Dazu müssen wir zuerst die Process-ID des miredo-Dämons herausfinden:



Code: Select all
$ ps -U nobody | grep miredo

   26071 ?        00:00:00 miredo




Danach können wir dem betreffenden Prozess das Signal zum Beenden (SIGTERM) schicken:



Code: Select all
# kill 26071




Jetzt sollte auch das toredo-Interface verschwunden sein.





------------------------------------------------

Weitergehende Informationen zu IPv6:



http://www.join.uni-muenster.de

--> Die Seite wird zwar nicht mehr aktualisiert,

bietet aber immer noch praktische Testtools und Informationen.



http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-de/

--> Linux IPv6 HowTo



http://de.wikipedia.org/wiki/Ipv6

--> IPv6 auf Wikipedia
My hands are bananas.
User avatar
madblueimp
Guardian Hero - Banana Buddha
Guardian Hero - Banana Buddha
 
Posts: 3043
Joined: Sun Jul 18, 2004 23:57
Location: Bananiversum

Next

Return to Information Technologies

Who is online

Users browsing this forum: No registered users and 0 guests