Mehr Sicherheit durch scponly
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