Mehr Sicherheit durch scponly

Aus Laub-Home Wiki

Dieses kleine Tool sorgt dafür, das Benutzer nur via scp Dateien hin und her schaufeln und sich nicht via ssh auch am System anmelden können. Der Benutzer kann auch wenn gewünscht in seine eigene chroot Umgebung gesperrt werden.
Eine Alternative wäre rsh, siehe hier:

Installation

unter Debian/Ubuntu einfach via aptitude installieren:

aptitude install scponly-full

Wenn eine chroot Umgebung gewünscht ist, die Frage mit dem SUID Bit mit Ja/Yes beantworten!

Konfiguration ohne chroot

Will man einem Benutzer nur den Zugriff auf ein System via SFTP oder SCP erlauben, legt man den Benutzer ganz normal mit dem Kommando useradd an und gibt ihm als Shell das scponly Binary.

useradd testuser -m -s /usr/bin/scponly

einen bestehenden Benutzer kann man nachträglich so modifizieren:

usermod -m -s /usr/bin/scponly testuser

Konfiguration mit chroot

Um einen Benutzer anzulegen der nur SCP bzw. SFTP auf einem System machen darf und diesen in einem Ordner festzuhalten, einfach mit dem setup_chroot.sh einen User anlegen.

cd /usr/share/doc/scponly-full/setup_chroot
gunzip setup_chroot.sh.gz
chmod +x setup_chroot.sh
./setup_chroot.sh

Hier dann den gewünschten SCP Usernamen eingeben, das Homedirectory wählen, ein Verzeichniss anlegen in welchem der User schreiben darf und zum Schluss noch das Passwort eingeben.
Nun kann man versuchen sich via scp, bzw. WinSCP zu verbinden. Bei mir und bei 2 Ubuntu Maschinen kam bei den ersten Versuchen, Dateien von einem Linux Rechner mittels scp Kommando, folgende Fehlermeldung:

unknown user 1001
lost connection

Unter WinSCP macht sich dieses Problem mit folgender Fehlermeldung bemerkbar:

Befehl 'groups'
fehlgeschlagen mit Beendigungscode 1 und Fehlernachricht
/usr/bin/groups: cannot find name for group ID 1001.

Die Lösung für dieses Porblem ist, das die Datei libnss_files.so.2 im chroot des Users fehlt. Also diese Dateien einfach vom System ins chroot kopieren:

cp /lib/libnss_files.so.2 /home/scponlyuser/lib

Tests und Debugging

Testen kann man das ganze folgendermaßen:

sftp user@systemname

SSH direkt sollte einem keine Shell zur Verfügung stellen:

ssh user@systemname

und scp Datei Übertragungen sollten auch funktionieren:

scp /root/test.txt user@systemname:/root/

Um das Debugging zu aktivieren einfach folgendes eingeben:

echo 2 > /etc/scponly/debuglevel

zum deaktivieren:

echo 0 > /etc/scponly/debuglevel

Quellen