Netzflut

Webdesign, Webentwicklung, Drupal & Zeuchs

SSH

Inhaltsverzeichniss

    http://www.planet-metax.de/html/Weblog/SSH-fuer-Fortgeschrittene-I-SSH-Tunnel/

    Installation von SSH

    http://wiki.ubuntuusers.de/SSH

    apt-get install openssh-server openssh-client

     

    Authentifizierung über Public-Key-Verfahren

    Die User-Authentifizierung erfolgt mittels Private/Public Keys. Wird beim Erstellen der Schlüsselpaare kein zusätzliches Kennwort hinterlegt, so ist die Anmeldung ohne Passwort-Eingabe auf dem RemotePC möglich.

    Diese Passwortlose Authentifizierung ist besonders vom Einsatz von Diensten und Scripts sinnvoll, die sich ohne Benutzermitwirkung automatisch auf Remote-Systemen einloggen können sollen.

     

    Im folgendem Beispiel gehen wir von dem Rechner A(nna) und dem Rechner B(ob) aus. Der Benutzer Anna (von Rechner A) möchte sich am Ende als User Bob am Rechner B ohne Eingabe eines Kennworts anmelden.

     

    Zunächst erstellt Anna ein Schlüsselpaar auf ihrem Rechner A:

    Rechner A:
    anna@AnnaPC:~/.ssh$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/anna/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/anna/.ssh/id_rsa.
    Your public key has been saved in /home/anna/.ssh/id_rsa.pub.
    The key fingerprint is:
    73:06:8f:e2:fc:f8:7e:08:da:65:8d:e0:3a:0f:4c:29 anna@AnnaPC:
    The key's randomart image is:
    +--[ RSA 2048]----+
    | |
    | |
    | . |
    | .. + |
    | E o...So+ |
    | + oo.++. |
    | o+o+ . |
    | +..o. . |
    | ooo+. |
    +-----------------+

    Nun befinden sich zwei Dateien in ihrem ~/.ssh Verzeichnis:

    anna@AnnaPC:~/.ssh$ ls -al
    -rw------- 1 anna anna 1675 2009-12-02 16:02 id_rsa (<-- private Key)
    -rw-r--r-- 1 anna anna 397 2009-12-02 16:02 id_rsa.pub (<-- public Key) 

    Jetzt loggt sich anna per SSH auf dem Rechner B als User Bob ein und erstellt, sofern es noch nicht vorhanden ist, ein .ssh Verzeichnis in dessen Home-Folder:  anna@AnnaPC:~/ ssh -p 22 bob@BobPC The authenticity of host '[BobPC]:22 ([192.168.7.10]:22)' can't be established. RSA key fingerprint is f0:c4:e1:3a:f7:59:ac:c5:c8:7b:41:bf:d3:4a:3f:3c. Are you sure you want to continue connecting (yes/no)? y Please type 'yes' or 'no': yes Warning: Permanently added '[BobPC]:22,[192.168.7.10]:22' (RSA) to the list of known hosts. bob@BobPC's password: bob@BobPC:~$ bob@BobPC:~$ mkdir .ssh Jetzt kopiert anna ihren zuvor erstellen public-key (id_rsa.pub) in das .ssh Verzeichnis von bob.  anna@AnnaPC:~/.ssh$ ls -al anna@AnnaPC:~/.ssh$ scp -P 22 /home/anna/.ssh/id_rsa.pub bob@BobPC:~/.ssh bob@BobPC's password: id_rsa.pub 100% 397 0.4KB/s 00:00 Damit sich anna in zukunft ohne Eingabe eines Kennwortes als Bob anmelden darf, muss sie nun noch ihren zuvor kopierten public-key den authorisierten Schlüsseln von Bob hinzufügen. Der public-key von anna wird mittels des Befehls cat an die datei /.ssh/authorized_keys angehängt.

     bob@BobPC:~/.ssh$ cat id_rsa.pub >> ~/.ssh/authorized_keys)

    Jetzt kann anna testen, ob sie sich ohne pwd als bob am Rechner B anmelden kann.

    anna@AnnaPC:~$ ssh -p 22 bob@BobPC

    oder alternativ

    anna@AnnaPC:~$ ssh -p 22 -l bob BobPC whoami

    Security Tweaks

    http://wiki.hetzner.de/index.php/Sshd
    Generell: http://www.linux.com/learn/tutorials/305769-advanced-ssh-security-tips-and-tricks

    http://www.howtoforge.com/set-up-ssh-with-public-key-authentication-debian-etch

     

    1. Change Port

    cd /etc/ssh/ the file is called sshd_config
    Port 337 als Beispiel
    Protocol nur 2 2,1 -> 2

    2. DS Key, siehe oben
    Erstmal key mit puttygen.exe erzeugen einmal private(ppk) und einmal public -> FAILED
    WICHTIG: immer eine shell offenhalten, WEIL, wenns ein root server ist kann man sich nach fehlerhafter config NICHT mehr einloggen

    keys auf dem server erzeugen!

    ssh-keygen -t dsa
    inhalt von id_dsa.pub nach .ssh/authorized_keys kopieren
    Rechte checken, nur der user hat rw, der rest hat nix
    keys löschen auf dem server, lokal speichern!
    /etc/init.d/sshd restart

    Testen. Wenns nicht klappt mit der noch offenen shell zurückändern,fixen
    keys runterladen und mit puttygen eine ppk exportieren, andernfalls kann das file nicht zum einloggen benutz werden!

    3. Timelock, nur x versuche pro minute

    Custom ssh banner
    Banner /etc/ssh/ssh-banner.txt
    das file wird als banner genommen. sicher nix, is aber ganz schön cool ^^

    Disable root login
    INFO: wenn du das machst, dann is nix mehr mit WinSCP und einfach editieren.
    disable root login. create e new user and only permit this user to login

    PermitRootLogin no
    #only users can login
    AllowUsers username root foobar

    Helpdesk: