FTP-kiszolgáló

A fájlátviteli protokoll (FTP) egy TCP protokoll fájlok számítógépek közti fel- és letöltésére. Az FTP kliens/szerver modell alapján működik. A kiszolgáló összetevőt FTP démonnak hívják. Folyamatosan figyeli a távoli kliensek FTP-kéréseit. Kérés fogadásakor kezeli a bejelentkezést, és létrehozza a kapcsolatot. A munkamenet időtartama alatt végrehajtja az FTP kliens által küldött parancsokat.

Az FTP-kiszolgáló elérése kétféleképp kezelhető:

  • Névtelenül

  • Hitelesítve

Névtelen módban a távoli kliensek az „anonymous” vagy „ftp” nevű alapértelmezett felhasználói fiók használatával, és jelszóként egy e-mail cím küldésével érhetik el az FTP-kiszolgálót. Hitelesített módban a felhasználónak rendelkeznie kell fiókkal és jelszóval. Az FTP kiszolgáló könyvtárainak és fájljainak elérése a bejelentkezéshez használt fiók jogosultságaitól függ. Általánosságban az FTP-démon elrejti az FTP-kiszolgáló gyökérkönyvtárát, és az FTP home könyvtárára változtatja. Ez elrejti a fájlrendszer többi részét a távoli munkamenetek elől.

vsftpd – FTP-kiszolgáló telepítése

A vsftpd az Ubuntuban elérhető egyik FTP-démon. Egyszerű telepíteni, beállítani és karbantartani. A vsftpd telepítéséhez adja ki a következő parancsot:

sudo apt-get install vsftpd

Névtelen FTP beállítása

Alapértelmezésben a vsftpd csak a névtelen letöltés engedélyezésére van beállítva. A telepítés során létrejön egy ftp felhasználó, a saját könyvtára pedig a /home/ftp. Ez az alapértelmezett FTP könyvtár.

Ha meg szeretné változtatni ezt a helyet, akkor egyszerűen hozza létre a könyvtárat (például: /srv/ftp), és módosítsa az ftp felhasználó saját könyvtárát.

sudo mkdir /srv/ftp
sudo usermod -d /srv/ftp ftp 

A módosítás után indítsa újra a vsftpd démont:

sudo /etc/init.d/vsftpd restart

Végül másoljon át minden, a névtelen FTP-n megosztani kívánt fájlt és könyvtárat az /srv/ftp könyvtárba.

Felhasználókat hitelesítő FTP konfigurálása

A vsftpd beállításához a rendszer felhasználóinak hitelesítésére, és fájlok feltöltésének engedélyezéséhez szerkessze az /etc/vsftpd.conf fájlt:

local_enable=YES
write_enable=YES

Indítsa újra a vsftpd démont:

sudo /etc/init.d/vsftpd restart

Miután a rendszer felhasználói bejelentkeznek az FTP-re, a saját könyvtáraikba fognak belépni, és onnan tölthetnek le illetve fel, hozhatnak létre könyvtárakat stb.

Ehhez hasonlóan alapértelmezésben a névtelen felhasználók nem tölthetnek fel fájlokat az FTP-kiszolgálóra. Ezen beállítás módosításához vegye ki a következő sort megjegyzésből, és indítsa újra a vsftpd démont:

anon_upload_enable=YES
[Figyelem]

A névtelen FTP-feltöltés engedélyezése hatalmas biztonsági kockázat. A legjobb megoldás a névtelen feltöltés letiltva hagyása az internetről közvetlenül elérhető kiszolgálókon.

A konfigurációs fájl számos paramétert tartalmaz. Az egyes paraméterek leírása megtalálható a konfigurációs fájlban. Emellett a fájl kézikönyvoldalán (man 5 vsftpd.conf) is megtalálhatja ezek leírását.

FTP biztonságossá tétele

Az /etc/vsftpd.conf tartalmaz a vsftpd biztonságosabbá tételét segítő beállításokat is. A felhasználók például saját könyvtárukra korlátozhatók a következő kivételével a megjegyzésből:

chroot_local_user=YES

Korlátozhatja felhasználók adott csoportját is a saját könyvtárukra:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

A fenti beállítások megjegyzésből való kivétele után hozzon létre egy /etc/vsftpd.chroot_list nevű fájlt, amely tartalmazza a felhasználók listáját, soronként egy felhasználót. Ezután indítsa újra a vsftpd démont:

sudo /etc/init.d/vsftpd restart

Az /etc/ftpusers fájl azon felhasználók listáját tartalmazza, akiknek nem engedélyezett az FTP elérése. Az alapértelmezett lista a root, daemon, nobody stb. felhasználókat tartalmazza. További felhasználók FTP-használatának megtiltásához egyszerűen vegye fel őket erre a listára.

Az FTP titkosítható is az FTPS segítségével. Az FTPS az SSL fölötti FTP rövidítése és nem azonos az SFTP-vel. Az SFTP egy FTP-szerű munkamenet titkosított SSH kapcsolat fölött. A fő különbség, hogy az SFTP felhasználóknak szükségük van egy parancsértelmező fiókra a rendszeren, és nem a nologin parancsértelmezőt használják. Nem biztos, hogy egyes környezetekben – például közös webkiszolgálók esetén – ideális minden felhasználónak parancsértelmezőt adni.

Az FTPS beállításához szerkessze az /etc/vsftpd.conf fájlt, és vegye fel a végére a következőt:

ssl_enable=Yes

Vegye észre a tanúsítvánnyal és kulccsal kapcsolatos beállításokat is:

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Ezek a beállítások alapértelmezésben az ssl-cert csomag által biztosított tanúsítványra és kulcsra vannak állítva. Éles környezetben ezeket az adott géphez generált tanúsítvánnyal és kulccsal kell helyettesíteni. A tanúsítványokkal kapcsolatos további információkért lásd a „Tanúsítványok” szakaszt.

Most indítsa újra a vsftpd démont, és a nem névtelen felhasználók az FTPS használatára lesznek kényszerítve:

sudo /etc/init.d/vsftpd restart

Ahhoz, hogy a /usr/sbin/nologin parancsértelmezővel rendelkező felhasználók elérhessék az FTP-t, szerkessze az /etc/shells fájlt, és vegye fel a nologin parancsértelmezőt:

# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/usr/sbin/nologin

Erre azért van szükség, mert a vsftpd alapértelmezésben a PAM-ot használja hitelesítésre, és az /etc/pam.d/vsftpd konfigurációs fájl tartalmazza a következőt:

auth    required        pam_shells.so

A shells PAM modul korlátozza a parancsértelmezők elérését az /etc/shells fájlban felsoroltakra.

A legtöbb népszerű FTP-kliens beállítható az FTPS használatával történő csatlakozásra. Az lftp parancssori FTP-kliens is képes az FTPS használatára.

Hivatkozások