Instalace FTP serveru Proftpd

FTP server je služba pro přenos dat na server. Používá se pro nahrávání souborů webových prezentací a CMS systémů.

Upozornění: Služba používá přihlášení a heslem a je častým cílem útoků na servery. Po prolomení hesla může útočník na vás server nahrát malware a dostat ho do stránek. Zabezpečení SSL certifikátem, které je v návodu uvedeno, nemusí být dostatečné, protože útočníci heslo mohou prolomit. Doporučujeme proto využít SFTP protokol přes SSH, pokud vysloveně nepotřebujete FTP.

Instalace balíků

Instalace balíku provedeme příkazem apt-get install proftpd openssl
Při instalaci zvolte Standalone verzi.

Vytvoření uživatelů

Aby se na server mohl uživatel přihlásit a nahrát soubory, musíme vytvořit uživatelské účty.Do terminálu zadejte addgroup ftpgroup, čímž se vytvoří skupina uživatelů. Jednotlivce potom vytváříte příkazem adduser pepa -shell /bin/false -home /ftpshare. Parametr /ftpshare udává sdílenou složku uživatele. Server se vás zeptá na nové heslo a několik údajů o uživateli, které můžete nechat prázdné.

Uživatele přidáme do skupiny adduser pepa ftpgroup
Nakonec nastavte práva sdílené složky: chmod -R 1777 /ftpshare/

Nastavení serveru

Krátce se musíme podívat i na nastavení FTP serveru. Otevřete jeho konfigurační soubor: nano /etc/proftpd/proftpd.conf Vypneme možnost přihlášení Roota nastavením RootLogon off

Direktiva DefaultRoot určuje, jaká je výchozí složka uživatelů. Hodnota (vlnovka) v příkladu znamená jejich domovskou složku.

Doplňte do konfigurace tyto řádky:

<Global>
RootLogin   off
RequireValidShell off
</Global>
<Limit LOGIN>
DenyGroup !ftpgroup
</Limit>

Doporučujeme nastavit FTP port z bezpečnostních důvodů na jiný, než 21.
Například 999. Hodnotu můžete změnit v direktivě Port.

V nastavení uvidíte i uímstění dvou užitečných logů:

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

Po dokončení nastavení server restartujte service proftpd restart
Nyní se na server můžete přihlásit.

Zapnutí šifrování

Jak jsme upozornili v úvodu, FTP protokol je nutné zabezpečit TLS protokolem.
To ochrání přenášená data a přihlašovací údaje před odposlechem, nikoliv však server před prolomením hesla na FTP.

Povolení TLS

Otevřete znovu konfigurační soubor: nano /etc/proftpd/proftpd.conf
V něm „odkomentujte“ (zrušte # před řádkem s ) Include /etc/proftpd/tls.conf

Uložte a otevřete konfiguraci TLS: nano /etc/proftpd/tls.conf

Tam nastavte tyto hodnoty:

<IfModule mod_tls.c>
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol                TLSv1
TLSOptions                 NoCertRequest
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key
TLSVerifyClient            off
TLSRequired                on
</IfModule>

Nyní vytvoříme SSL certifikát pro FTP připojení. Můžete si vytvořit vlastní self signed.
openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/proftpd.crt -keyout /etc/ssl/private/proftpd.key

Údaje pro CSR vyplňte podle svého uvážení, pouze věnujte pozornost Common name, což je adresa serveru, kde ftp poběží (většinou doména 3. řádu).

Privátní klíč musí být chráněn proti přístupu nepovolených uživatelů: chmod 0440 /etc/ssl/private/proftpd.key
Restartujte server pomocí service proftpd restart a můžete ho začít používat.

Otestování

K připojení na váš server pomocí protokolu FTP doporučujeme využít například svobodného klienta Filezilla. V ní vyplníte adresu serveru (IP nebo doménové jméno), vyplníte uživatelské jméno a připojíte se. Protože jsme na serveru vynutili TLS šifrování, vložte před adresu serveru prefix ftpes://.

Klient by vás měl vyzvat k odsouhlasení certifikátu a pak vás připojí do sdílené složky, která jsme nastavili dříve v konfiguraci.

Anonymní přístup

Na svém FTP serveru můžete též povolit anonymní přístup, tedy i uživatelům bez jména a hesla. Pokud nemáte důvod toho povolit, tak to nedělejte. V opačném případě doplňte do konfigurace následující.

Otevřete konfiguraci: nano /etc/proftpd/proftpd.conf

[...]
###Anonymous share#####
<Anonymous ~ftp>
User                         ftp
Group                        nogroup
<Limit LOGIN>
AllowAll
</Limit>
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias                    anonymous ftp
# Cosmetic changes, all files belongs to ftp user
DirFakeUser  on ftp
DirFakeGroup on ftp
RequireValidShell            off
# Limit the maximum number of anonymous logins
MaxClients                   10
# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
~            

Tým ZonerCloud
Web: www.zonercloud.cz
E-mail: admin@zoner.cz