torsdag 20 november 2008

sftp med minsta möjliga rättigheter

FTP är krångligt att sätta upp bakom en brandvägg. Dessutom verkar många ha väldigt svårt för att använda ftp-program. Därtill är ftp okrypterat.
Ett bra alternativ är sftp (notera skillnaden mot ftps).

Att sätta upp en sftp-server är lika lätt som att installera en sshserver, i debian (och ubuntu?) är det bara att installera packetet openssh-server så är det klart.
Däremot krävs det en del extra för att kunna ha användare som har tillgång till sftp men inte ett normalt shellkonto.

Jag följde guiden här, men det är ganska lätt bara man kommer ihåg följande steg:
  1. skapa gruppen sftponly: $addgroup sftponly
  2. konfigurera sshd (filen /etc/ssh/sshd_conf) så att en avdelning med "match group sftponly..." finns med innehåll
    Match group sftponly
    ChrootDirectory /home/%u
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    Glöm inte heller att ändra
    Subsystem sftp /usr/lib/openssh/sftp-server
    till
    Subsystem sftp internal-sftp
  3. ladda om konfigurationen med $/etc/init.d/ssh reload
  4. skapa en användare du vill ska kunna enbart använda sftp: $adduser unlucky
  5. tilldela gruppgemenskap: $addgroup unlucky sftponly
  6. sätt hemkatalog till / : $usermod -d / unlucky
  7. se till att hemkatalogen ägs av root (för att ssh-servern ska kunna göra chroot): $chown root:root /home/unlucky
  8. se till att användaren inte kan logga in normalt: $chsh -s /bin/false unlucky
Prova sedan att logga in med den nya användaren. Det ska inte gå vare sig direkt, via ssh, via su - unlucky utan enbart via sftp.
För windows finns winscp och filezilla som går att ansluta sig med.

Jag monterar kataloger inuti /home/unlucky med --bind readonly så att den nya användaren kan läsa men inte skriva. Mer om det någon annan dag!

Inga kommentarer: