Anzeige:
Ergebnis 1 bis 5 von 5

Thema: ssh und chroot mit PAM

  1. #1
    spymande
    Gast

    ssh und chroot mit PAM

    Hi,

    da ich in diesen Foren schon viele Anfragen gelesen habe wie man eine
    chroot-Umgebung für SSH einrichtet, habe ich mal folgende Anleitung
    geschrieben um den Einstieg zu erleichtern.

    Vorne weg: Mein System ist RedHat 8, es kann also durchaus sein dass
    die Pfade bzw. Programmnamen je nach Distribution unterschiedlich sind !

    --- Bemerkung: ---
    Das Script habe ich entworfen um die nötigen
    Abhängigkeiten der einzelnen Programme zu automatisieren.


    Schritt

    Vorbereitung

    - Von der URL
    http://www.kernel.org/pub/linux/lib...root-0.6.tar.gz
    das Paket downloaden

    - pam muß installiert sein
    - pam-devel muß installiert sein
    - sed muß installiert sein, überprüfen mit z.B.
    which sed
    - expr muß installiert sein, überprüfen mit z.B.
    which expr, ggf. den Pfad im Script anpassen !
    - ldd muß installiert sein, überprüfen mit z.B.
    which ldd

    - WICHTIG:
    In der Datei
    /etc/ssh/sshd_config
    die Zeile
    UsePriviliegeSeperation yes
    nach
    UsePriviliegeSeperation no
    ändern und ggf. die # entfernen !

    Nun gehts ans eingemachte :

    1. Als root in das System einloggen
    2. Das tar.gz-File entpacken mit
    tar xfz pam_chroot-0.6.tar.gz
    3. In das Verzeichnis
    ./pam_chroot-0.6
    wechseln
    4. Das Modul compilieren mit
    make
    5. Das Modul
    pam_chroot.so
    mit
    cp ./pam_chroot.so /lib/security
    kopieren
    6. Die config-Datei chroot.conf mit einem Editor öffnen und die User
    eintragen, die eine chroot-Umgebung erhalten sollen
    (Achtung, der User root sollte NICHT eingetragen werden !)

    Syntax:
    Benutzername chroot-dir

    Beispiel:
    foo /home
    (Die Benutzer sollten schon vorhanden sein...)
    7. Die config-Datei
    chroot.conf
    mit
    cp ./chroot.conf /etc/security
    kopieren
    8. Die Datei
    /etc/pam.d/sshd
    mit einem Editor öffnen und die Zeile
    session required /lib/security/pam_chroot.so
    einfügen (am Ende der Datei oder wo sollte egal sein).

    9. Dieses Script anpassen/ausführen:

    --- Script-Anfang : ---

    chrootdir=/chroot # Ziel-chroot-Verzeichnis
    lapp_n=2 # Maximale Anzahl der Extra-Programme
    # Bei 0 werden keine Dateien kopiert !
    lapp_1=/bin/bash # Progname und Pfad
    lapp_2=/bin/ls # Progname und Pfad

    etc_n=1 # Maximale Anzahl der Extra-/etc-Dateien
    # Bei 0 werden keine Dateien kopiert !
    etc_1="/etc/passwd"
    etc_2="/etc/shadow"
    etc_3="/etc/group"

    dirs="bin dev dev/pts"
    # Verzeichniss die im chroot angelegt werden muessen
    # Muessen mit den lapp_xy uebereinstimmen !
    # Die dev -Verzeichnisse DUERFEN NICHT entfernt werden !

    ###
    # Nicht aendern !
    ###

    mkdir $chrootdir
    cd $chrootdir
    mkdir $dirs
    chkmnt=`mount | grep devpts | grep -c $chrootdir`
    mnt=`mount | grep devpts | grep "$chrootdir" | cut -f3 -d" "`
    chkfst=`grep -c "$chrootdir/dev/pts" /etc/fstab`
    if [ $chkfst -ne 1 ]; then
    echo "devpts $chrootdir/dev/pts devpts defaults 0 0" >>/etc/fstab
    fi

    idx=1
    if [ $lapp_n -gt 1 ]; then
    while [ $idx -le $lapp_n ]; do
    eval apps='$lapp_'$idx
    cutldd=`ldd $apps | cut -f2 -d">" | cut -f1 -d"(" | sed /":"/d`
    cp $apps $chrootdir$apps
    cp --parents $cutldd $chrootdir
    idx=`/usr/bin/expr $idx + 1`
    done
    else
    if [ $lapp_n -gt 0 ]; then
    cutldd=`ldd $lapp_1 | cut -f2 -d">" | cut -f1 -d"(" | sed /":"/d`
    cp $lapp_1 $chrootdir$lapp_1
    cp --parents $cutldd $chrootdir
    fi
    fi

    idx=1
    if [ $etc_n -gt 1 ]; then
    while [ $idx -le $etc_n ]; do
    eval et='$etc_'$idx
    cp $et $chrootdir$et
    cp --parents $cutldd $chrootdir
    idx=`/usr/bin/expr $idx + 1`
    done
    else
    if [ $etc_n -gt 0 ]; then
    cp $etc_1 $chrootdir$etc_1
    cp --parents $cutldd $chrootdir
    fi
    fi

    if [ $chkmnt -gt 0 ]; then
    umount $mnt
    mount -t devpts devpts $chrootdir/dev/pts
    else
    mount -t devpts devpts $chrootdir/dev/pts
    fi

    --- Script-Ende ---

    Führt man dieses Script mehrmals aus, dann können die
    Fehlermeldungen von mkdir ignoriert werden !

    Syntaxerklärung:
    Die Variablen _n=x müssen immer mit der Anzahl der Dateien übereinstimmten,
    die auch kopiert werden sollen.
    Wird eine zu geringe Anzahl eingegeben,
    dann werden keine Dateien von dem Variablensatz kopiert.

    Bitte genau darauf achten !

    Es kann je nach Rechnertyp einige Zeit dauern, bis das Script
    durchgelaufen ist.

    10. Als letztes muß nun noch die Datei /etc/passwd angepasst werden,
    da sich ja der Pfad zu dem Homeverzeichnis geändert hat:
    Beispiel:
    Was vorher war:
    foo:x:500:100::/home/foo:/bin/bash
    wird nun zu
    foo:x:500:100::/foo:/bin/bash

    Ich habe alle meine User in ein zweites, oberes Verzechnis gesteckt,
    aus Sicherheitsgründen.
    Die Homeverzeichnisse liegen bei mir z.B. in
    /user/home

    Anmerkung: Die Datei /etc/passwd MUSS unbedingt in das /chrootdir/etc-Verzeichnis mitkopiert werden, NACHDEM sie angepaßt wurde !

    Viel Spaß beim Testen,

    wenn Fehler entdeckt werden bitte eine Mail an chaman@web.de

    Grüße,

    Malte

    PS: Das selbige kann auch mit den lokalen Logins gemacht werden, dazu einfach
    nur den selben Syntax wie in Schritt 8 in die Datei /etc/pam.d/login einfügen.

  2. #2
    spymande
    Gast
    Nachtrag: Damit beim reboot auch das pts-Verzeichnis gemountet wird,
    sollte man in /etc/rc.local (so heist die Datei bei mir, Redhat 8) folgende
    Zeile einfügen:
    mount -t devpts devpts /chrootdir/dev/pts

    Wobei chrootdir das Chroot-Verzeichniss ist, welches man im Script angegeben hat.

    Oder in der /etc/fstab defaults nach auto umändern.

    Damit es später beim Script dann richtig eingetragen wird, sollte man folgende Zeile ändern:

    echo "devpts $chrootdir/dev/pts devpts defaults 0 0" >>/etc/fstab
    nach
    echo "devpts $chrootdir/dev/pts devpts auto 0 0" >>/etc/fstab

    Mfg,

    Malte

  3. #3
    Debianer Avatar von msi
    Registriert seit
    Jan 2002
    Ort
    München
    Beiträge
    1.963
    dieser link könnte euch auch interessieren:
    http://chrootssh.sourceforge.net/

  4. #4
    spymande
    Gast
    NACHTRAG #2 :

    Da anscheinend diese Forum NICHT mit LANGEN (!) URLs zurecht kommt und diese
    einfach durch ... kürzt, poste ich hier die oben genannte URL in mehreren Teilen :

    http://www.kernel.org/ \
    pub/linux/libs/pam/ \
    pre/modules/pam_chroot-0.6.tar.gz

    \ = Nur fuer dieses Forum, bitte im Browser ohne Leerzeichen UND \ !

  5. #5
    spymande
    Gast
    Neuer Nachtrag...

    Man sollte die /etc/passwd NICHT umändern, da es Systemweite Konsequenzen haben kann, insbesondere auf der Hinsicht von den Mailprogrammen usw.

    Daher sollte man besser folgendes tun:

    chroot-dir: /home
    benutzer: foo

    In das Verzeichnis /home/foo wechseln,
    dort ein neues Verzeichnis das ebenfalls /home heißt anlegen
    und
    das Verzeichnis foo von dem Verzeichnis /home nach
    /home/foo/home

    man sollte alle anderen chroot-Benutzern ebenfalls kopieren da sonst bei einem ssh-login die Meldung erscheint das das home-verz. nicht gefunden werden konnte...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •