Instalace FTP serveru Proftpd

Nápověda > Cloud Server Linux > 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ů.

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>
~