FTP toegang

Het idee is om gebruikers via ftp files te kunnen uploaden naar hun eigen directory en van alle gebruikers downloaden. Er kan niets worden geupload of worden verwijderd in de directory van de andere gebruikers (dus geen schrijf rechten). Voor het gemak is het geen secure FTP, maar een paswoord is ook niet gelijk aan het paswoord via SSH. Daarnaast hebben de meeste FTP gebruikers geen SSH toegang.

HTTPS toegang tot de FTP directory

Via het HTTPS gedeelte van de site kunnen gebruikers inloggen en door de FTP files en directory’s browsen. Het paswoord voor de HTTPS toegang is gelijk aan het FTP paswoord. Hier gaat het paswoord wel beveiligd (door HTTPS) via internet. Er staat overigens geen kritische informatie in de FTP directory’s. Maar het is niet de bedoeling dat door FTP users geuploade files door derden gedownload kunnen worden.

Configureren van ProFTPD

In Webmin de nieuwe gebruiker aanmaken met:

  • Ga naar menu System->Users and Groups
  • Klik op “Create new user”
  • Vul in “User name” en “Real name”.
  • Home directory: /home/www/ftp/
  • Shell: /bin/bash of /bin/false
  • Password->Normal password: (Niet gelijk aan SSH)
  • Primary group->Existing group: ftpusers
  • Secondary group: www-data
  • Klik op “Create” In ProFTPD Server, ook deze gebruiker met het FTP paswoord aanmaken.

De directory beveiligen met .htaccess

Maak een nieuwe Apache passwd file aan met (als er al eentje is, laat -c weg):

$ htpasswd -c /etc/apache2/passwd jan

of

$ htpasswd /etc/apache2/passwd kees

Ga dan naar de FTP directory om deze met .htaccess te beveiligen:

$ cd /home/www/ftp
$ vi .htaccess
AuthType Basic  
AuthName "Restricted Files"  
AuthUserFile /etc/apache2/passwd  
Require user jan piet klaas

Instellingen in Webmin

  • Ga in Webmin naar Servers->Apache Webserver->Virtual Server port:443
  • Vul de gewenste directory in “Create Per-Directory” bij Path en klik op Create
  • Klik daarna op deze nieuwe directory erboven in “Per-Directory Options“ In dit menu moet het volgende worden invuld (alleen de vet gedrukte instellingen hoeven te worden gewijzigd:
    • Authentication realm name: Restricted Files
    • Authentication type: Basic
    • Restrict access by login: All valid users
    • Clients must satisfy: Default
    • Pass basic login failures to next module?: Default
    • Basic login user file types: Text File
    • User text file: /etc/apache/passwd
    • Klik op Edit users als je nog gebruikers wilt toevoegen of paswoord wil veranderen.
    • Group text file: Default
    • Restrict access: Allow->All requests

Uitloggen uit .htaccess

De browser slaat het .htaccess paswoord op. Om deze te verwijderen, kan met een dummy user ingelogd worden, zodat de oude sessie overschreven wordt.

Ga naar de directory onder de FTP directory en maak daar de logout directory aan:  

$ cd /home/www/  
$ mkdir logout  
$ chown www-data:www-data logout

Even voor de test komt in deze directory een logout.html:

$ vi logout.html
<html>  
<a href="https://dummy:dummy@arjanwooning.nl/logout/">Logout</a>  
</hmtl>

Nu gaan we in de logout directory een .htaccess en een .htpasswd file zetten inclusief de dummy gebruiker:

$ cd logout  
$ vi .htaccess
AuthType Basic  
AuthName "Logout dir"  
AuthUserFile /home/www/logout/.htpasswd  
Require user dummy  

$ htpasswd ./.htpasswd dummy

Als je nu op de logout.html klikt en daarna op Logout, dan ben je uit de FTP directoy uitgelogd en ingelogd op de logout directory.