Openssh: Unterschied zwischen den Versionen
(init) |
K (new link) |
||
Zeile 1: | Zeile 1: | ||
http://blog.markvdb.be/2009/01/sftp-on-ubuntu-and-debian-in-9-easy.html<br> | |||
<br> | <br> | ||
local copy<br> | local copy from http://blog.schalanda.name/archives/154-chroot2-Unterstuetzung-fuer-OpenSSH.html<br> | ||
= chroot(2) Unterstützung für OpenSSH = | = chroot(2) Unterstützung für OpenSSH = | ||
Zeile 52: | Zeile 52: | ||
<br>Sobald ein Benutzer mit dieser sshd-Konfiguration mit `gpasswd -a sftp` der Gruppe "sftp" hinzugefügt wird, kann dieser sich in Zukunft nur noch innerhalb seines zugewiesenen Verzeichnisses bewegen. Ideal zur Absicherung eines Servers mit mehreren nicht vertrauenswürdigen Benutzern. | <br>Sobald ein Benutzer mit dieser sshd-Konfiguration mit `gpasswd -a sftp` der Gruppe "sftp" hinzugefügt wird, kann dieser sich in Zukunft nur noch innerhalb seines zugewiesenen Verzeichnisses bewegen. Ideal zur Absicherung eines Servers mit mehreren nicht vertrauenswürdigen Benutzern. | ||
Quellen:<br>[http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5 sshd_config(5)]<br>[http://undeadly.org/cgi?action=article&sid=20080220110039 OpenBSD Journal - Chroot in OpenSSH]<br>[http://www.debian-administration.org/articles/590 Debian Administration - OpenSSH SFTP chroot() with ChrootDirectory]<br> | Quellen:<br>[http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5 sshd_config(5)]<br>[http://undeadly.org/cgi?action=article&sid=20080220110039 OpenBSD Journal - Chroot in OpenSSH]<br>[http://www.debian-administration.org/articles/590 Debian Administration - OpenSSH SFTP chroot() with ChrootDirectory]<br> | ||
[[ | [[Category:Linux]] [[Category:Security]] [[Category:Tips_und_Tricks]] | ||
[[ | |||
[[ |
Aktuelle Version vom 10. Januar 2009, 00:04 Uhr
http://blog.markvdb.be/2009/01/sftp-on-ubuntu-and-debian-in-9-easy.html
local copy from http://blog.schalanda.name/archives/154-chroot2-Unterstuetzung-fuer-OpenSSH.html
chroot(2) Unterstützung für OpenSSH
Seit OpenSSH 4.9 unterstützt der SSH-Daemon des OpenBSD Projekts das Einsperren der Benutzer in einem beliebigen Verzeichnis über den chroot(2) Systemaufruf. Zuvor war dies nur mit einem Thirdparty Patch wie chrootssh oder im Fall der Einschränkung auf SFTP/SCP mit speziellen Shells wie scponly oder rssh möglich.
Ebenfalls mit Version 4.9 wurde eine Variante des sftp-server(8) eingeführt, die direkt in sshd(8) gelinkt ist. Das hat den großen Vorteil, dass nicht mehr alle Binaries und Programme, die ein Benutzer ausführen können soll oder muss (z. B. seine Shell oder die SFTP-Bibliothek) sowie die Gerätedateien /dev/null und /dev/urandom innerhalb der chroot-Umgebung vorhanden sein müssen. Das erspart dem Administrator die fehlerträchtige Erstellung einer solchen Umgebung sowie die Redundanz der in den chroot-Umgebungen benötigten Dateien.
Die Einrichtung erfolgt sehr einfach in der sshd_config(5). Zunächst muss das Subsystem "sftp" mit dem intern vorhandenen SFTP-Server ("internal-sftp") geladen werden:
Subsystem sftp internal-sftp
Danach können entweder global alle Benutzer in eine chroot-Umgebung eingesperrt werden (nicht zu empfehlen) oder über einen Match-Block nur einzelne Benutzer, Gruppen oder IP-Adressen bzw. IP-Adressbereiche. Die Festlegung des Verzeichnisses, in dem der Benutzer eingesperrt wird, erfolgt über die Direktive ChrootDirectory. Als Parameter wird das Verzeichnis erwartet, wobei die Zeichenkette einige Variablen enthalten kann:
Variable Bedeutung
%h Home-Verzeichnis des Benutzers
%u Benutzername des Benutzers
%% '%' Zeichen
Die Direktive ChrootDirectory /srv/www/%u würde den Benutzer "web1" also im Verzeichnis /srv/www/web1 einsperren. Soll der Benutzer zusätzlich wirklich nur via SFTP auf den Server zugreifen können, kann dies mit der Direktive ForceCommand internal-sftp erzwungen werden.
Achtung: Dadurch ist wirklich nur noch ein Zugriff via SFTP möglich. Auch SCP funktioniert dann nicht mehr!
Hier ein paar Beispieleinträge in der sshd_config. Die Match-Blöcke müssen unbedingt am Ende der Datei stehen, da sonst alle folgenden Direktiven, die auch in einem Match-Block stehen könnten, dem letzten Block zugeordnet werden!
#Clients aus dem IP-Adressbereich 10.0.1.0/24 einsperren. Match Address 10.0.1.* ChrootDirectory %h #Benutzer mit der Gruppe sftp im Homeverzeichnis einsperren und nur SFTP erlauben Match Group sftp ChrootDirectory %h ForceCommand internal-sftp #Benutzer web* (z. B. web1, web42, web123, web4711) in /srv/www/ einsperren und nur SFTP erlauben Match User web* ChrootDirectory /srv/www/%u ForceCommand internal-sftp
Sobald ein Benutzer mit dieser sshd-Konfiguration mit `gpasswd -a sftp` der Gruppe "sftp" hinzugefügt wird, kann dieser sich in Zukunft nur noch innerhalb seines zugewiesenen Verzeichnisses bewegen. Ideal zur Absicherung eines Servers mit mehreren nicht vertrauenswürdigen Benutzern.
Quellen:
sshd_config(5)
OpenBSD Journal - Chroot in OpenSSH
Debian Administration - OpenSSH SFTP chroot() with ChrootDirectory