Tips en Trucs 2014

vsFTPd FTP server

Iedereen die dagelijks met internet werkt, kent FTP. Vandaag installeren we in openSUSE 13.1 zelf zo'n FTP Server. Daarenboven bekijken we enkele beveiligingstips voor uw nieuwe FTP configuratie. Als software gebruiken we de kleine, maar efficiënte vsFTPs server. Deze is speciaal ontworpen om te werken op servers die zwaar belast worden.

Wat is FTP

FTP staat voor File Transfer Protocol. Zoals de naam reeds doet vermoeden, wordt het FTP protocol gebruikt om bestanden en mappen tussen computers in een LAN netwerk of het internet uit te wisselen.

De belangrijkste kenmerken van vsFTPd zijn: virtuele IP configuraties, virtuele gebruikers, configuraties per gebruiker, bandbreedte beperking, configuraties per IP, beperkingen per IP, IPv6 en versleuteling via SSL.

Installatie

Zoals in veel Linux distributies, installeer je een FTP server met één enkele opdracht. Start een terminal en voer de volgende opdracht uit:

dany@linux-nlfy:~> sudo zypper install vsftpd
root's password:
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Afhankelijkheden tussen pakketten oplossen...

Het volgende NIEUWE pakket zal worden geïnstalleerd:
  vsftpd 

1 nieuw te installeren pakket.
Totale downloadgrootte: 141,7 KiB Na de operatie zal aanvullend 327,3 KiB worden 
gebruikt.
Doorgaan? [j/n/? alle opties tonen] (j): 
pakket vsftpd-3.0.2-10.1.2.x86_64 wordt opgehaald
                                             (1/1), 141,7 KiB (327,3 KiB uitgepakt)
Ophalen: vsftpd-3.0.2-10.1.2.x86_64.rpm ......................[klaar (728,2 KiB/s)]
(1/1) Installeert: vsftpd-3.0.2-10.1.2 .....................................[klaar]

vsFTPd starten

vsFTPd heeft zijn eigen startscript, namelijk /usr/lib/systemd/system/vsftpd.service. Met dit script kan je de FTP dienst beheren. Met enkele specifieke opdrachten kan een beheerder (root gebruiker) zo de FTP dienst als volgt beheren:

Om de ftp server te starten, herstarten of zijn status op te vragen, gebruiken we de systemctl opdrachten:

dany@linux-nlfy:~> sudo systemctl start vsftpd.service
dany@linux-nlfy:~> sudo systemctl restart vsftpd.service
dany@linux-nlfy:~> sudo systemctl status vsftpd.service
vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
   Active: active (running) since za 2014-09-27 14:38:22 CEST; 12s ago
 Main PID: 2571 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─2571 /usr/sbin/vsftpd /etc/vsftpd.conf

sep 27 14:38:22 linux-nlfy.site systemd[1]: Starting Vsftpd ftp daemon...
sep 27 14:38:22 linux-nlfy.site systemd[1]: Started Vsftpd ftp daemon.

Na het starten van de ftp server, kan je met de volgende opdracht nagaan of de ftp server naar poort 21 luistert:

dany@linux-nlfy:~> netstat -ant | grep 21
tcp        0      0 :::21                   :::*                    LISTEN      

Onze eerste FTP verbinding

De vsFTPd FTP server laat standaard anonieme toegang toe. Zo kan je de ftp server installatie eenvoudig testen. Daarvoor voer je de ftp opdracht met het argument localhost uit:

dany@linux-nlfy:~> ftp localhost
Trying ::1:21 ...
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:dany): anonymous
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Bovenstaande test bevestigt dat de FTP server werkt op uw lokale systeem.

Configuratie

Het configuratiebestand kan je met de opdracht sudo joe /etc/vsftpd.conf aanpassen. Na een aanpassing sla je het configuratiebestand op en verlaat je de teksteditor joe met de toetscombinatie Ctrl + k en daarna de toets x. Een overzicht van de opdrachten die je in de teksteditor joe kunt uitvoeren, krijg je met de toetscombinatie ctrl + k en daarna de h toets. Na elke aanpassing moet je de FTP server herstarten om de aangepaste configuratie te activeren.

Anonieme FTP toegang

Standaard laat de vsFTPd FTP server anonieme toegang toe. Als je dat wilt, kan je de anonieme toegang nog vereenvoudigen door het wachtwoord uit te schakelen. Daarvoor voeg je de instelling no_anon_password met de waarde YES toe (liefst in de sectie Anonymus FTP user Settings). Handig voor later is de mogelijkheid om commentaar aan het configuratiebestand toe te voegen (regels voorafgegaan door #)

# Bij anonieme toegang geen wachtwoord vragen
no_anon_password=YES

FTP toegang voor lokale gebruikers

Om gebruikers die op uw systeem aangemaakt zijn, FTP toegang te geven, moet je de instelling local_enable de waarde YES geven (standaard in openSUSE 13.1).

# Uncomment this to allow local users to log in.
local_enable=YES

Nu kan elke in het bestand /etc/passwd gedefinieerde gebruiker met zijn bijhorende wachtwoord zich aanmelden:

dany@linux-nlfy:~> ftp localhost
Trying ::1:21 ...
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:dany): dany
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Toegangslijst met gebruikers

Met een toegangslijst kan je gebruikers weren of juist toelaten. Een toegangslijst wordt meestal aangemaakt in de /etc/ map. De naam van het bestand mag je zelf kiezen en bevat alle gebruikersnamen die je de toegang wilt ontzeggen of juist toelaten. Als voorbeeld maken we een toegangslijst met één gebruiker:

dany@linux-nlfy:~> su -c "echo dany > /etc/vsftpd.userlist"

Daarna voeg je de instellingen voor toegangslijsten aan het configuratiebestand /etc/vsftpd.conf toe:

# Toegangslijst met gebruikers
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

Na een herstart heeft de gebruiker dany geen toegang meer tot de FTP server:

dany@linux-nlfy:~> sudo systemctl restart vsftpd.service
dany@linux-nlfy:~> ftp localhost
Trying ::1:21 ...
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:dany): dany
530 Permission denied.
ftp: Login failed
ftp> quit
221 Goodbye.

Om enkel de gebruikers vermeldt in de toegangslijst toegang tot de FTP dienst te geven, moet je de instelling userlist_deny met de waarde NO toevoegen aan het configuratiebestand.

userlist_deny=NO

In de toegangslijst mag elke regel maar één gebruikersnaam bevatten.

De standaard poort aanpassen

Elke FTP server luistert bij de gebruikers verificatie standaart naar poort 21 en gebruikt voor de bestandsoverdracht poort 20. De vsFTPd is geen uitzondering. Om de standaard poort aan te passen, voeg je in het configuratiebestand /etc/vsftpd.conf de instelling listen_port toe.

# Toegangspoort
listen_port=2121

Na het herstarten van de FTP server, luistert vsFTPd op poort 2121 naar aanvragen.

dany@linux-nlfy:~> sudo systemctl restart vsftpd.service
dany@linux-nlfy:~> netstat -ant | grep 2121
tcp        0      0 :::2121                 :::*                    LISTEN      

Nog meer instellingen

De vsFTPd server kent veel instellingen om de FTP dienst naar uw wensen te configureren. Hier volgen enkele van deze instellingen:

De FTP dienst vanaf andere computers gebruiken

Nu de FTP server volledig klaar is en zijn diensten binnen het lokale systeem aanbiedt, kunnen we de firewall openen om de FTP server ook aan andere computers aan te bieden. Daar het gebruik van de standaard ingestelde FTP poort in een LAN voldoende veilig is, kan je de firewall met de volgende opdracht openen voor de FTP server:

dany@linux-nlfy:~> sudo /sbin/yast2 firewall services add zone=EXT service=service:vsftpd

Wil je de FTP server via een niet standaard poort gebruiken, dan moet je deze poort met de volgende opdracht openen:

dany@linux-nlfy:~> sudo /sbin/yast firewall services add zone=EXT tcpport=2121

In het voorbeeld gebruikt de FTP server poort 2121. Met de volgende ftp opdracht test je vanaf een andere computer de toegang tot de FTP server op de computer met het IP-adres 192.168.1.3:

dany@linux-55yl:~> ftp 192.168.1.3 -P 2121
Connected to 192.168.1.3.
220 (vsFTPd 3.0.2)
Name (192.168.1.3:dany): dany    
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Elke zichzelf respecterende grafische omgeving kan standaard de bestanden en mappen op een FTP server benaderen. Het voorbeeld hieronder toont de KDE bestandsbeheerder Dolphin.
FTP toegang in Dolhin

Waarschuwing

De toegang van het internet openen voor de FTP server, raad ik niet aan. De gevaren zijn te groot. Om een dienst op uw computer via het internet toegankelijk te maken, moet je een hele resem beveiligingsmaatregelen nemen. Dat verreist niet alleen een grondige kennis, maar eveneens een pak ervaring en veel inzet. De hier beschreven opzet is echter wel binnen een LAN netwerk in te zetten.