ssh_bash_mit_change_root
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| ssh_bash_mit_change_root [2017-12-08 14:32:12] – manfred | ssh_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 // | ||
| + | |||
| + | 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 / | ||
| + | > vi / | ||
| + | > chown -R showlog: | ||
| + | > chmod 0600 / | ||
| + | > mkdir / | ||
| + | > for V in dev bin lib lib64 usr/bin ; do mkdir -p / | ||
| + | |||
| + | globales SFTP-System deaktivieren: | ||
| + | sed -i ' | ||
| + | | ||
| + | echo " | ||
| + | Match Group chroot | ||
| + | ChrootDirectory /home/%u | ||
| + | X11Forwarding no | ||
| + | AllowTcpForwarding no | ||
| + | " >> / | ||
| + | | ||
| + | / | ||
| + | |||
| + | |||
| + | === weitere Benutzer kann man mit diesem Skript anlegen === | ||
| + | |||
| + | <file bash / | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # Dieses Skript legt einen neuen SSH-Benutzer an, | ||
| + | # der nach dem login immer in eine ChRoot eingesperrt wird. | ||
| + | # | ||
| + | |||
| + | if [ -z " | ||
| + | echo "${0} [Benutzername]" | ||
| + | exit 1 | ||
| + | else | ||
| + | if [ -e /home/${1} ] ; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | BENUTZER=" | ||
| + | |||
| + | # groupadd chroot | ||
| + | useradd -mg chroot -s /bin/bash ${BENUTZER} | ||
| + | id ${BENUTZER} | ||
| + | mkdir -p / | ||
| + | touch / | ||
| + | # vi / | ||
| + | # service ssh restart | ||
| + | for V in dev bin lib lib64 usr/bin ; do mkdir -p / | ||
| + | chown -R 0:0 / | ||
| + | chown -R ${BENUTZER}: | ||
| + | # vi /etc/fstab | ||
| + | ls -lha / | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ===== klassische Variante ===== | ||
| + | |||
| + | **Damit das funktioniert, | ||
| + | |||
| + | Wenn man auf einem Rechner mit // | ||
| + | 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 // | ||
| + | |||
| + | > useradd -m -s /bin/bash fritz | ||
| + | > mkdir -p / | ||
| + | > mkdir -p / | ||
| + | > chown -R 0:0 /home/fritz | ||
| + | > chown -R fritz:fritz / | ||
| + | > chown -R fritz:fritz / | ||
| + | > chown -R fritz:fritz / | ||
| + | |||
| + | SSH-Schl≠ssel ablegen: | ||
| + | > vi / | ||
| + | |||
| + | Bin␍rdateien, | ||
| + | dort ablegen: | ||
| + | > tar cvzf - --exclude=/ | ||
| + | > cd / | ||
| + | > mkdir dev | ||
| + | > mknod dev/null c 1 3 | ||
| + | > mknod dev/zero c 1 5 | ||
| + | > chmod 0666 dev/ | ||
| + | |||
| + | den SSH-Dienst konfigurieren: | ||
| + | > vi / | ||
| + | ... | ||
| + | # | ||
| + | Match user fritz | ||
| + | ChrootDirectory %h | ||
| + | X11Forwarding no | ||
| + | AllowTcpForwarding no | ||
| + | | ||
| + | # | ||
| + | | ||
| + | > / | ||
| + | |||
| + | 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 / | ||
| + | > chown -R fritz:fritz / | ||
| + | > mount -o bind /mnt / | ||
| + | |||
| + | damit der Bind-Mount bereits beim booten ausgeführt wird, genügt dieser Eintrag in der /// | ||
| + | > vi /etc/fstab | ||
| + | /mnt / | ||
| + | |||
