Mit der Veröffentlichung von OpenSSH 4.9p1 müssen Sie sich nicht mehr auf Hacks von Drittanbietern oder komplizierte Chroot-Setups verlassen, um Benutzer auf ihre Home-Verzeichnisse zu beschränken oder ihnen Zugriff auf SFTP-Dienste zu gewähren.
Bearbeiten Sie / etc / ssh / sshd_config (/ etc / sshd_config bei einigen Distributionen) und legen Sie die folgenden Optionen fest:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Stellen Sie sicher, dass sich die Anweisung "Match" am Ende der Datei befindet. Dies teilt OpenSSH mit, dass alle Benutzer in der sftp-Gruppe zu ihrem Ausgangsverzeichnis geleitet werden sollen (das% h im ChrootDirectory-Befehl darstellt)
Fügen Sie Benutzer, die Sie chrooten möchten, der sftp-Gruppe hinzu, indem Sie Folgendes verwenden:
# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe
Der obige Befehl usermod fügt den Benutzer joe zur sftp-Gruppe hinzu und setzt seine Shell auf / bin / false, sodass er auf keinen Fall auf die Shell zugreifen kann. Mit den Befehlen chown und chmod werden die erforderlichen Berechtigungen für das Verzeichnis festgelegt. Mit diesen Berechtigungen kann der Benutzer Dateien hochladen und herunterladen, jedoch keine Verzeichnisse oder Dateien im Stammverzeichnis erstellen
Das Chrooten von Shell-Konten ist etwas komplizierter, da bestimmte Gerätedateien und eine Shell im Home-Verzeichnis des Benutzers verfügbar sein müssen. Die folgenden Befehle richten ein sehr einfaches Chroot-System unter Mandriva Linux ein:
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
Mit dem oben genannten kann der Benutzer joe ssh in und wird auf die Chroot beschränkt. Leider macht dies nicht viel, aber es gibt Ihnen eine Vorstellung davon, wie es eingerichtet werden kann. Je nachdem, was Sie bereitstellen möchten, müssen Sie zusätzliche Bibliotheken und Binärdateien installieren.
Eine Chroot erstellen
Installieren Sie die Pakete dchroot und debootstrap.
Erstellen Sie als Administrator (dh mit sudo) ein neues Verzeichnis für die Chroot. In diesem Verfahren wird das Verzeichnis /var/chroot
verwendet. Geben Sie dazu sudo mkdir /var/chroot
in eine Befehlszeile ein.
Öffnen Sie als Administrator
/etc/schroot/schroot.conf
einen Texteditor. Geben Sie ein cd /etc/schroot
, gefolgt von gksu gedit schroot.conf
. Auf diese Weise können Sie die Datei bearbeiten.
Fügen Sie die folgenden Zeilen hinzu schroot.conf
und speichern und schließen Sie die Datei. Ersetzen Sie
your_username
durch Ihren Benutzernamen.
[lucid] description = Ubuntu Lucid location = / var / chroot priority = 3 Benutzer = Ihr_Benutzername groups = sbuild root-groups = root
Öffnen Sie ein Terminal und geben Sie Folgendes ein:
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \
http://mirror.url.com/ubuntu/
Dadurch wird eine Basisinstallation von Ubuntu 10.04 (Lucid Lynx) in der Chroot erstellt. Es kann eine Weile dauern, bis die Pakete heruntergeladen sind. Hinweis: Sie können lucid durch eine Ubuntu-Version Ihrer Wahl ersetzen. Hinweis: Sie müssen die oben angegebene mirror.url.com
URL mit der URL eines gültigen, für Sie lokalen Archivspiegels ändern . Eine grundlegende Chroot sollte jetzt erstellt worden sein. Geben Sie ein sudo chroot /var/chroot
, um zu einer Root-Shell innerhalb der Chroot zu wechseln.
Einrichten der Chroot
Es gibt einige grundlegende Schritte, die Sie ausführen können, um die Chroot einzurichten. Dazu gehören Funktionen wie die DNS-Auflösung und der Zugriff auf /proc
.
Hinweis: Geben Sie diese Befehle in eine Shell ein, die sich außerhalb der Chroot befindet.
Geben Sie Folgendes ein, um das /proc
Dateisystem in der Chroot bereitzustellen (für die Verwaltung von Prozessen erforderlich):
sudo mount -o bind /proc /var/chroot/proc
Geben Sie Folgendes ein, um die DNS-Auflösung in der Chroot zuzulassen (für den Internetzugang erforderlich):
sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
Sehr wenige Pakete werden standardmäßig in einer Chroot installiert (auch sudo ist nicht installiert). Verwenden Sie apt-get install package_name
diese Option, um Pakete zu installieren.