FTP server

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.

Inštalácia FTP Servera - vsftpd

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

Konfigurácia anonymného FTP

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.

Konfigurácia FTP s autentifikáciou

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
[Warning]

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.

Zabezpečenie FTP

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.

Zdroje