Cíl
Cílem je nejprve nakonfigurovat základní server ProFTPD na CentOS 7. Jakmile budeme mít základní nastavení FTP serveru, přidáme pasivní režim FTP a zvýšíme zabezpečení přidáním Transport Layer Security (TLS).
Nakonec přidáváme volitelnou anonymní konfiguraci, která umožní anonymnímu uživateli přihlásit se na FTP server bez uživatelského jména a hesla.
Verze operačního systému a softwaru
- Operační systém: – Vydání CentOS Linux 7.5.1804
- Software: – ProFTPD verze 1.3.5e
Požadavky
Privilegovaný přístup k vašemu systému Ubuntu jako root nebo přes sudo
je vyžadován příkaz.
Obtížnost
STŘEDNÍ
Konvence
- # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí
sudo
příkaz - $ – dané linuxové příkazy, které mají být spouštěny jako běžný neprivilegovaný uživatel
Pokyny
Základní konfigurace FTP
Začněme základní instalací a konfigurací ProFTP serveru. To zahrnuje instalaci, definici pravidel brány firewall a testování klienta.
Nastavení serveru
FTP server ProFTPD je součástí úložiště EPEL. Prvním krokem je proto povolit úložiště EPEL a poté nainstalovat server ProFTPD:
# yum install epel-release # yum install proftpd
Dále spusťte server ProFTPD a potvrďte jeho správný start kontrolou otevřeného portu 21
# service proftpd start # ss -nlt
Dále musíme vložit celek do brány firewall serveru, abychom umožnili příchozí provoz na portu 21
# firewall-cmd --add-port=21/tcp --permanent # firewall-cmd --reload
Pro potvrzení otevřeného příchozího portu 21
provést:
# firewall-cmd --list-ports

V této fázi se každý stávající uživatel systému může přihlásit pomocí FTP k nově nakonfigurovanému serveru ProFTPD. Volitelně můžeme vytvořit nového uživatele, např. lubos
s přístupem do adresáře /var/ftp-share
:
# useradd lubos -s /sbin/nologin -d /var/ftp-share # passwd lubos # chmod -R 750 /var/ftp-share # setsebool -P allow_ftpd_full_access=1
Připojení klienta
V tomto okamžiku bychom měli být schopni provést FTP připojení ze vzdáleného klientského počítače. Nejjednodušší test je použít ftp
příkaz.
Vzhledem k tomu, že náš server ProFTPD lze vyřešit pomocí ftp.linuxconfig.org
název hostitele a uživatel lubos
existuje provést:
$ ftp ftp.linuxconfig.org Connected to ftp.linuxconfig.org. 220 FTP Server ready. Name (ftp.linuxconfig.org:lubos): lubos 331 Password required for lubos Password: 230 User lubos logged in Remote system type is UNIX. Using binary mode to transfer files. ftp>POZNÁMKA:Upozorňujeme, že v tuto chvíli můžeme vytvářet pouze „Aktivní připojení FTP“! Jakýkoli pokus o vytvoření „pasivního připojení FTP“ se nezdaří.
Konfigurace FTP v pasivním režimu
Nastavení serveru
Chcete-li, aby náš FTP server akceptoval i pasivní připojení FTP, proveďte následující příkazy, které povolí pasivní připojení na rozsahu dočasných portů registrovaných IANA:
echo "PassivePorts 49152 65534" >> /etc/proftpd.conf
Restartujte server ProFTPD:
# service proftpd restart
Otevřete bránu firewall pro porty v rozsahu 49152-65534
:
# firewall-cmd --add-port=49152-65534/tcp --permanent # firewall-cmd --reload
Zkontrolujte, zda byly porty správně otevřeny:
# firewall-cmd --list-ports

Připojení FTP klienta
Stejně jako dříve můžeme nyní otestovat pasivní připojení FTP pomocí ftp
příkaz. Ujistěte se, že tentokrát použijete -p
možnost, jak je uvedeno níže:
$ ftp -p ftp.linuxconfig.org Connected to ftp.linuxconfig.org. 220 FTP Server ready. Name (ftp.linuxconfig.org:lubos): lubos 331 Password required for lubos Password: 230 User lubos logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (192,168,1,111,209,252). 150 Opening ASCII mode data connection for file list 226 Transfer complete ftp>
Vše funguje podle očekávání!
Zabezpečte server FTP pomocí protokolu TLS
Nastavení serveru
V případě, že plánujete používat váš FTP server mimo vaši lokální síť, je doporučeno použít nějaký druh šifrování. Naštěstí je konfigurace ProFTPD s TLS extrémně snadná. Nejprve, pokud ještě není k dispozici, nainstalujte openssl
balíček:
# yum install openssl
Dále vytvořte certifikát pomocí následujícího příkazu. Jedinou požadovanou hodnotou je Common Name
což je název hostitele vašeho FTP serveru:
# openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem Generating a 1024 bit RSA private key ...++++++ .......++++++ writing new private key to '/etc/pki/tls/certs/proftpd.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:ftp.linuxconfig.org Email Address []:
Dále jako uživatel root otevřete /etc/sysconfig/proftpd
pomocí svého oblíbeného textového editoru a změňte:
FROM: PROFTPD_OPTIONS="" TO: PROFTPD_OPTIONS="-DTLS"
Jakmile budete připraveni, restartujte server ProFTPD:
# service proftpd restart
Připojení klienta
Tentokrát používáme FileZilla jako našeho FTP testovacího klienta:

Encryption
a Logon Type
. 
Unknown Certificate
. Zaškrtněte Always Trust
a stiskněte OK
. 
Konfigurace anonymního uživatele FTP
Nastavení serveru
Chcete-li umožnit anonymnímu uživateli přihlásit se k serveru FTP, otevřete /etc/sysconfig/proftpd
pomocí svého oblíbeného textového editoru a změňte:
FROM: PROFTPD_OPTIONS="-DTLS" TO: PROFTPD_OPTIONS="-DTLS -DANONYMOUS_FTP"
Výše předpokládáme, že jste již dříve povolili TLS. Až budete připraveni, restartujte FTP server:
# service proftpd restart
Připojení klienta
Používání FileZilla jako našeho FTP testovacího klienta:

Logon Type
vyberte Anonymous

Příloha
Blokovat/odmítat přístup uživatele FTP
V případě, že potřebujete zablokovat/odmítnout přístup k FTP serveru kterémukoli systémovému uživateli, přidejte jeho uživatelské jméno do /etc/ftpusers
. Jedno uživatelské jméno na řádek. Pokud tak učiníte, jakýkoli pokus uživatele o přihlášení selže s 530
chyba přihlášení:
$ ftp ftp.linuxconfig.org Connected to ftp.linuxconfig.org. 220 FTP Server ready. Name (ftp.linuxconfig.org:lubos): lubos 331 Password required for lubos Password: 530 Login incorrect. Login failed. Remote system type is UNIX. Using binary mode to transfer files. ftp>