Benutzer-Werkzeuge

Webseiten-Werkzeuge


ssh_bash_mit_change_root

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
ssh_bash_mit_change_root [2017-12-08 14:32:12] manfredssh_bash_mit_change_root [2017-12-08 15:21:05] (aktuell) – [Diese Variante aktualisiert automatisch] manfred
Zeile 1: Zeile 1:
 +====== SSH/BASH mit Change Root ======
 +
 +
 +===== Diese Variante aktualisiert automatisch =====
 +
 +Hier wird einem Benutzer //showlog//, der sich mit diesem Rechner nur per //ssh// verbinden kann und aus sein Home-Verzeichnis nicht raus kommt, der Zugriff auf die Log-Dateien gegeben.
 +
 +Benutzer anlegen:
 +  > groupadd chroot
 +  > useradd -mg chroot -s /bin/bash showlog
 +  > id showlog
 +  uid=1024(showlog) gid=1025(chroot) Gruppen=1025(chroot)
 +
 +SSH-Schlüssel ablegen:
 +  > mkdir /home/showlog/.ssh/
 +  > vi /home/showlog/.ssh/authorized_keys
 +  > chown -R showlog:chroot /home/showlog/.ssh
 +  > chmod 0600 /home/showlog/.ssh/authorized_keys
 +  > mkdir /home/showlog/dev/
 +  > for V in dev bin lib lib64 usr/bin ; do mkdir -p /home/showlog/${V} ; echo "/${V} /home/showlog/${V} none bind 0 0" >> /etc/fstab ; mount -B /home/showlog/${V} ; done
 +
 +globales SFTP-System deaktivieren:
 +  sed -i 's/^Subsystem sftp.*sftp-server/#&/' /etc/ssh/sshd_config
 +  
 +  echo "
 +  Match Group chroot
 +          ChrootDirectory /home/%u
 +          X11Forwarding no
 +          AllowTcpForwarding no
 +  " >> /etc/ssh/sshd_config
 +  
 +  /etc/init.d/ssh restart
 +
 +
 +=== weitere Benutzer kann man mit diesem Skript anlegen ===
 +
 +<file bash /root/bin/chroot_ssh_user_add.sh>
 +#!/bin/bash
 +
 +#
 +# Dieses Skript legt einen neuen SSH-Benutzer an,
 +# der nach dem login immer in eine ChRoot eingesperrt wird.
 +#
 +
 +if [ -z "${1}" ] ; then
 +        echo "${0} [Benutzername]"
 +        exit 1
 +else
 +        if [ -e /home/${1} ] ; then
 +                echo "Dieser Benutzername existiert schon."
 +                exit 1
 +        fi
 +fi
 +
 +BENUTZER="${1}"
 +
 +# groupadd chroot
 +useradd -mg chroot -s /bin/bash ${BENUTZER}
 +id ${BENUTZER}
 +mkdir -p /home/${BENUTZER}/.ssh
 +touch /home/${BENUTZER}/.ssh/authorized_keys 
 +# vi /etc/ssh/sshd_config
 +# service ssh restart
 +for V in dev bin lib lib64 usr/bin ; do mkdir -p /home/${BENUTZER}/${V} ; echo "/${V} /home/${BENUTZER}/${V} none bind 0 0" >> /etc/fstab ; mount -B /home/${BENUTZER}/${V} ; done
 +chown -R 0:0 /home/${BENUTZER}
 +chown -R ${BENUTZER}:chroot /home/${BENUTZER}/.ssh
 +# vi /etc/fstab
 +ls -lha /home/${BENUTZER}/
 +
 +</file>
 +
 +
 +===== klassische Variante =====
 +
 +**Damit das funktioniert, müssen alle benötigten Programmteile (wie zum Beispiel die SHELL) in die ChRoot-Umgebung kopiert werden!**
 +
 +Wenn man auf einem Rechner mit //Ubuntu-Linux 12.04 LTS//
 +die im folgenden beschriebenen Schritte abarbeitet,
 +\\ dann wird der Benutzer //fritz// in eine ChRoot eingespert,
 +wenn er sich per SSH auf dem Rechner einlogt.
 +
 +Er kann dann nur im //Arbeitsverzeichnis// schreiben!
 +
 +  > useradd -m -s /bin/bash fritz
 +  > mkdir -p /home/fritz/.ssh
 +  > mkdir -p /home/fritz/Arbeitsverzeichnis
 +  > chown -R 0:0 /home/fritz
 +  > chown -R fritz:fritz /home/fritz/.ssh
 +  > chown -R fritz:fritz /home/fritz/.bash*
 +  > chown -R fritz:fritz /home/fritz/Arbeitsverzeichnis
 +
 +SSH-Schl≠ssel ablegen:
 +  > vi /home/fritz/.ssh/authorized_keys
 +
 +Bin␍rdateien, die inder ChRoot-Umgebung ben┴tigt werden,
 +dort ablegen:
 +  > tar cvzf - --exclude=/lib/modules /bin/ /lib/ /lib64/ /usr/bin/ | tar xzf - -C /home/fritz/
 +  > cd /home/fritz/
 +  > mkdir dev
 +  > mknod dev/null c 1 3
 +  > mknod dev/zero c 1 5
 +  > chmod 0666 dev/{null,zero}
 +
 +den SSH-Dienst konfigurieren:
 +  > vi /etc/ssh/sshd_config
 +  ...
 +  #------------------------------------------------------------------------------#
 +  Match user fritz
 +          ChrootDirectory %h
 +          X11Forwarding no
 +          AllowTcpForwarding no
 +  
 +  #------------------------------------------------------------------------------#
 +  
 +  > /etc/init.d/ssh restart
 +
 +fertig! ;-)
 +
 +
 +===== zusätzliche Möglichkeiten =====
 +
 +man kann dem Benutzer auch Einblick in andere Verzeichnisse geben, wenn man sie per Bind-Mount in sein Home-Verzeichnis rein-mountet:
 +  > mkdir /home/fritz/mnt
 +  > chown -R fritz:fritz /home/fritz/mnt
 +  > mount -o bind /mnt /home/fritz/mnt
 +
 +damit der Bind-Mount bereits beim booten ausgeführt wird, genügt dieser Eintrag in der ///etc/fstab//:
 +  > vi /etc/fstab
 +  /mnt          /home/fritz/mnt    none   bind            0       0
 +