File Transfer Protocol (FTP) je TCP protokol na nahrávanie a sťahovanie súborov medzi počítačmi. FTP pracuje na princípe klient/server. Serverová časť sa volá FTP démon. Tento démon neustále čaká na požiadavky vzdialených FTP klientov. Ak príde požiadavka, riadi prihlásenie a nastavenie spojenia. Počas trvania spojenia vykonáva príkazy odoslané FTP klientom.
Prístup na FTP server môže byť vykonaný dvoma spôsobmi:
Anonymne
S autentifikáciou
Pri anonymnom móde môžu vzdialení klienti pristupovať k FTP serveru pomocou predvoleného konta z názvom "anonymous" alebo "ftp" a ako heslo použiť svoju emailovú adresu. V móde s prihlásením musí mať každý používateľ svoje konto s heslom. Prístup používateľa k priečinkom FTP servera je riadený podľa prístupových práv definovaných pre konto používateľa. Všeobecným pravidlom je, že FTP démon skryje kmeňový priečinok systému a nahradí ho domovským priečinkom FTP Home. Týmto sa skryje zvyšok súborového systému pred pripojeným používateľom.
vsftpd je FTP démon dostupný v Ubuntu. Je jednoduché ho nainštalovať, nastaviť a udržiavať. Ak chceme nainštalovať vsftpd, zadáme nasledujúci príkaz:
sudo apt-get install vsftpd
V predvolenom stave je vsftpd nakonfigurované tak, aby umožňovalo len anonymné sťahovanie. Počas inštalácie je vytvorený používateľ
ftp s domovským priečinkom /home/ftp
. Toto je predvolený FTP priečinok.
Keby sme chceli zmeniť toto umiestnenie napríklad na /srv/ftp
, jednoducho vytvoríme priečinok na novom mieste a zmeníme domovský priečinok používateľa ftp:
sudo mkdir /srv/ftp
sudo usermod -d /srv/ftp ftp
Po vykonaní zmien reštartujeme vsftpd:
sudo /etc/init.d/vsftpd restart
Nakoniec do priečinka /srv/ftp
nakopírujeme súbory, ktoré majú byť viditeľné pri anonymnom FTP prístupe.
Ak chceme vsftpd nakonfigurovať tak, aby autentifikoval systémových používateľov a umožnil im nahrávať súbory na server, upravíme súbor
/etc/vsftpd.conf
:
local_enable=YES
write_enable=YES
Reštartujeme vsftpd:
sudo /etc/init.d/vsftpd restart
Teraz sa môžu používatelia prihlasovať k FTP a po prihlásení sa im zobrazí ich domovský priečinok, v ktorom si môžu súbory sťahovať, nahrávať, vytvárať podpriečinky, atď.
V predvolenom stave anonymný používateľ nemôže nahrávať súbory na FTP server. Ak to chceme zmeniť, stačí odkomentovať nasledujúci riadok a reštartovať vsftpd:
anon_upload_enable=YES
![]() |
Povolenie nahrávania na FTP server anonymnému používateľovi predstavuje veľké bezpečnostné riziko. Najlepšie je, ak túto možnosť nezapnete na serveroch, ktoré sú dostupné z Internetu. |
---|---|
Konfiguračný súbor obsahuje mnoho ďalších konfiguračných parametrov. Informácie o jednotlivých parametroch sa nachádzajú priamo v konfiguračnom súbore. Druhou možnosťou je pozrieť si ich význam na man stránkach: man 5 vsftpd.conf.
V konfiguračnom súbore /etc/vsftpd.conf
sa nachádzajú aj nastavenia, ktoré nám pomôžu vsftpd urobiť bezpečnejším. Napríklad prístup používateľov môžeme obmedziť len na ich domovský priečinok odkomentovaním nastavenia:
chroot_local_user=YES
Používateľov, ktorých chceme takto obmedziť, môžeme vypísať do osobitného súboru:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Po odkomentovaní predchádzajúceho riadka, vytvoríme súbor /etc/vsftpd.chroot_list
tak, že meno každého používateľa zapíšeme na nový riadok. Potom reštartujeme vsftpd:
sudo /etc/init.d/vsftpd restart
Do súboru
/etc/ftpusers
môžeme zasa napísať zoznam používateľov, ktorým zakážeme FTP prístup. V predvolenom zozname sa nachádzajú aj používatelia root, daemon, nobody, atď. Ak by sme chceli FTP prístup zakázať ďalším používateľom, stačí ich dopísať do zoznamu.
FTP sa dá aj zašifrovať použitím FTPS. Na rozdiel od SFTP je FTPS FTP cez Secure Socket Layer (SSL). SFTP je FTP pripojenie cez šifrované SSH spojenie. Hlavným rozdielom je to že používatelia SFTP musia mať v systéme aj shell konto (konto pre príkazový riadok), namiesto nastavenia nologin (zákaz prihlásenia). Poskytnutie prístupu k príkazovému riadku všetkým používateľom nemusí byť ideálnym riešením pre rozhrania zdieľané cez web.
Ak chceme povoliť FTPS, otvoríme súbor /etc/vsftpd.conf
a na jeho koniec pridáme:
ssl_enable=Yes
Tiež bude potrebné upraviť nastavenia certifikátu a kľúča:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
V predvolenom stave je tento certifikát a kľúč poskytnutý balíkom ssl-cert. V ostrej prevádzke by sme však mali tieto súbory nahradiť certifikátom a kľúčom vygenerovaným pre konkrétnu stanicu. Viac informácií o certifikátoch sa nachádza v časti "Certifikáty".
Teraz reštartujeme vsftpd, a neanonymný používatelia budú nútený použiť FTPS:
sudo /etc/init.d/vsftpd restart
Ak chceme používateľom s príkazovým riadkom /usr/sbin/nologin
(zákaz prihlásenia) povoliť prístup k FTP, ale nechceme aby mali prístup k príkazovému riadku, otvoríme súbor /etc/shells
a pridáme druh príkazového riadka nologin:
# /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
Toto je nevyhnutné, pretože vsftpd v predvolenom stave používa na atentifikáciu PAM a konfiguračný súbor
/etc/pam.d/vsftpd
obsahuje:
auth required pam_shells.so
Modul PAM s názvom shells zakazuje prístup k príkazovým riadkom vypísaným v súbore /etc/shells
.
Najpopulárnejší FTP klienti sa dajú nakonfigurovať tak, aby sa pripájali pomocou FTPS. Ako klient sa dá tiež použiť príkaz príkazového riadka lftp, ktorý sa tiež pripája cez FTPS.
Viac informácií sa nachádza na stránke vsftpd website.
Detailný popis konfiguračných možností v súbore /etc/vsftpd.conf
sa nachádza na stránke
vsftpd.conf man page.
Článok CodeGurus FTPS vs. SFTP: What to Choose sú užitočné informácie o rozdieloch FTPS a SFTP.
Viac informácii sa nachádza ja na stránke Ubuntu Wiki vsftpd.