Instalace a konfigurace ftp serveru ubuntu. Instalace a konfigurace serveru FTP v systému Linux

V tomto tutoriálu vám ukážeme, jak nainstalovat server FTP na VPS se systémem Ubuntu. Budeme používat server vsftpd, který je považován za nejrychlejší a nejbezpečnější FTP server pro systémy UNIX.

FTP nebo File Transfer Protocol je protokol pro příjem a přenos souborů v síti. Díky použití modelu klient / server a zabezpečení SSL / TLS umožňuje FTP uživatelům bezpečnou, efektivní a spolehlivou výměnu souborů se vzdálenými počítači přenosem dat přes TCP / IP.

FTP funguje jako HTTP nebo SMTP, pouze s tím rozdílem, že je zodpovědný za bezpečný přenos dat od odesílatele příjemci, nikoli za webovou stránku ze serveru k uživateli nebo e-mail přes internet. Tento výukový program vás provede vytvořením serveru FTP v systému Ubuntu 16.04.

Poznámka: Aktuální výukový program je založen na verzi operačního systému Ubuntu 16.04. Stejným způsobem však můžete vytvořit server FTP v systému Ubuntu 14.04.

Nejprve si před zahájením instalace démona vsftpd aktualizujme všechny balíčky. Chcete-li to provést, spusťte příkaz:

Sudo apt-get aktualizace

Počkejte, až se dokončí všechny procesy, a zobrazí se potvrzovací zpráva:

Poté nainstalujte démona vsftpd pomocí následujícího příkazu:

Sudo apt-get install vsftpd

Obdržíte oznámení vyžadující potvrzení, klikněte na Ya Enterpokračovat v instalaci.

Po dokončení instalace vytvoříme zálohu původního konfiguračního souboru, abychom mohli začít s čistým konfiguračním souborem:

Sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

Nyní můžeme přejít k dalšímu kroku a nakonfigurovat bránu firewall.

Krok 2 - Povolení přenosu FTP na bráně firewall

Chcete-li umožnit serveru FTP nasazenému v operačním systému Ubuntu komunikovat s vnějším světem, musíte nakonfigurovat cestu přes bránu firewall. Nejprve se podívejme, jestli je firewall povolen. Spuštěním následujícího příkazu určete stav:

Stav Sudo ufw

Pokud se zobrazí taková zpráva:

Ufw: příkaz nebyl nalezen

To znamená, že firewall není nainstalován a můžete přejít k dalšímu kroku.

Pokud výstup zobrazuje pravidla nebo zprávu, že je firewall aktivní, musíte určit, jak bude zpracovávat přenosy FTP. Udělejme následující, otevřete porty 20 a 21 pro přenos FTP; porty 40000-50000 budou vyhrazeny jako rozsah pasivních portů, který bude nakonec nastaven v konfiguračním souboru; port 990 bude použit, když je povolen TLS. Provedeme následující příkazy:

Sudo ufw povolit 20 / tcp sudo ufw povolit 21 / tcp sudo ufw povolit 990 / tcp sudo ufw povolit 40 000: 50 000 / tcp

Nyní se podívejme na stav:

Výsledek bude vypadat asi takto:

Stav výstupu: aktivní do akce od - - - - - - 990 / tcp POVOLIT kdekoli 20 / tcp POVOLIT kdekoli 21 / tcp POVOLIT kdekoli 40000: 50000 / tcp POVOLIT kdekoli 20 / tcp (v6) POVOLIT kdekoli ( v6) 21 / tcp (v6) ALLOW Anywhere (v6) 990 / tcp (v6) ALLOW Anywhere (v6) 40000: 50000 / tcp (v6) ALLOW Anywhere (v6)

Nyní, když jsou pro nás všechny potřebné porty otevřené a přístupné, můžeme přejít k dalšímu kroku.

Krok 3 - Vytvoření adresáře uživatelů

Ve třetím kroku vytváření FTP serveru Ubuntu musíte vybrat uživatele, který se připojí přes FTP. Chcete-li to provést, vytvořte nového uživatele spuštěním následujícího příkazu:

sudo adduser alex

Na požádání vyplňte své heslo a další podrobnosti. V ideálním případě by z hlediska bezpečnosti měl být FTP omezen na jeden speciální adresář. Vsftpd používá k vytvoření této ochrany chroot. Se zapnutým chrootem je místní uživatel omezen na svůj domovský adresář (ve výchozím nastavení). Může se však ukázat, že kvůli ochraně vsftpd nebude uživatel schopen v adresáři nic vytvořit. Neodstraňujeme oprávnění k zápisu do domovského adresáře, místo toho vytvoříme adresář ftp, který se chová jako chroot spolu se zachováním schopnosti zápisu uchovávat soubory. Tento příkaz použijte k vytvoření adresáře FTP:

sudo mkdir / home / alex / ftp

Nastavit vlastnictví:

sudo chown nikdo: nogroup / home / alex / ftp

Nakonec odeberte oprávnění k zápisu:

sudo chmod a - w / home / alex / ftp

Nyní pomocí následujícího příkazu zkontrolujte oprávnění:

sudo ls - la / home / alex / ftp

Na výstupu uvidíme něco takového:

celkem 8 dr - xr - xr - x 2 nikdo podskupina 4096 29. června 11:32. drwxr - xr - x 3 alex alex 4096 29. června 11:32. ...

V dalším kroku vytvoříme soubor obsahující adresáře a přístupová práva k nim:

sudo mkdir / home / alex / ftp / soubory sudo chown alex: alex / home / alex / ftp / soubory

Nakonec přidáme testovací soubor do adresáře, který použijeme při testování něčeho:

echo "ukázkový soubor vsftpd" | sudo tee / home / alex / ftp / files / sample. txt

Krok 4 - Konfigurace vsftpd

Abychom mohli pokračovat v instalaci FTP serveru na Ubuntu VPS, musíme nakonfigurovat vsftpd a náš FTP přístup. V tomto kurzu umožníme jednomu uživateli připojit se přes FTP pomocí místní konzoly. Požadované dvoustupňové nastavení je již nastaveno v konfiguračním souboru ( vsftpd.conf). Nejprve zkontrolujte, zda se nastavení v souboru shodují s nastaveními níže:

sudo nano / etc / vsftpd. konf. ... ... # Povolit anonymní FTP? (Ve výchozím nastavení zakázáno). anonymous_enable \u003d NE # # Odkomentujte toto, aby se mohli místní uživatelé přihlásit. local_enable \u003d ANO. ... ...

Ve stejném souboru pokračujte odstraněním # zapnout write_enable:

... ... ... write_enable \u003d ANO. ... ...

Také odkomentujeme chroot, abychom se ujistili, že má uživatel FTP přístup k souborům uvnitř povoleného adresáře:

... ... ... chroot_local_user \u003d ANO. ... ...

Několik nových hodnot bude také nutné přidat ručně. Stačí je vložit na konec souboru. Zpočátku, user_sub_token přidat local_root do cesty k adresáři. To umožní konfiguraci pracovat s aktuálním uživatelem a jakýmkoli dalším uživatelem, který bude přidán později:

user_sub_token \u003d $ USER local_root \u003d / home / $ USER / ftp

Abychom se ujistili, že je k dispozici dostatek připojení, omezíme počet portů použitých v konfiguračním souboru:

pasv_min_port \u003d 40000 pasv_max_port \u003d 50000

V tomto kurzu plánujeme udělit přístup individuálně, takže pojďme nastavit nastavení tak, aby poskytovalo přístup pouze těm uživatelům, kteří jsou přímo přidáni do seznamu:

userlist_enable \u003d ANO userlist_file \u003d / etc / vsftpd. userlist userlist_deny \u003d NE

Vlajka userlist_deny zodpovědný za přepínání logiky, když je nastavena na „NE“, mají přístup pouze uživatelé, kteří jsou na seznamu. Po dokončení klikněte na CTRL + X a potvrďte uložení změn do souboru.

Nakonec pokračujme v vytváření a přidávání našeho uživatele do souboru:

ozvěna "alex" | sudo tee - a / etc / vsftpd. seznam uživatelů

Zkontrolujeme, zda je uživatel skutečně aktivní, spuštěním příkazu:

kočka / etc / vsftpd. seznam uživatelů

Výstup by měl být „ alex„Jak je znázorněno na snímku obrazovky:

Restartujte démona pomocí následujícího příkazu ke spuštění změn konfigurace:

sudo systemctl restart vsftpd

Krok 5 - Vytvoření zabezpečeného FTP

Ve výchozím nastavení FTP neprovádí žádné šifrování dat, proto se o zabezpečení postaráme pomocí protokolu TLS / SSL. Jako první krok musíme vytvořit certifikát SSL a použít jej k zabezpečení FTP serveru Ubuntu. Nejprve spusťte následující příkaz:

Sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Vlajka - dnů činí certifikát platným po dobu jednoho roku a do stejného příkazu zahrneme 2048bitový soukromý klíč RSA. Po zobrazení výzvy k zadání požadovaných údajů je zadejte do příslušného pole.

Po vytvoření certifikátu znovu otevřete konfigurační soubor:

Sudo nano /etc/vsftpd.conf

Na konci souboru je řádek s „ _rsa“. Komentujte tyto dva řádky:

# rsa_cert_file \u003d / etc / ssl / certs / ssl-cert-snakeoil.pem # rsa_private_key_file \u003d / etc / ssl / private / ssl-cert-snakeoil.key

Místo toho nasměrujeme konfigurační soubor na certifikát, který jsme vytvořili. Přidejte takové řádky:

Rsa_cert_file \u003d / etc / ssl / private / vsftpd.pem rsa_private_key_file \u003d / etc / ssl / private / vsftpd.pem

Nyní povolíme SSL a zajistíme, aby s námi mohli komunikovat pouze uživatelé s povoleným SSL. Změňte hodnotu ssl_enable na ANO:

ssl_enable \u003d ANO

Nyní přidejte následující řádky, abyste pokračovali ve vytváření zabezpečení (to je zakázání všech anonymních připojení pomocí SSL):

Allow_anon_ssl \u003d NE force_local_data_ssl \u003d ANO force_local_logins_ssl \u003d ANO

Konfigurujte TLS pomocí:

Ssl_tlsv1 \u003d ANO ssl_sslv2 \u003d NE ssl_sslv3 \u003d NE

Zde přidáme další 2 možnosti. Za prvé, opětovné použití SSL nebude nutné, protože to může vést k přerušení pro velký počet klientů. Zadruhé použijeme vysoce zabezpečený šifrovací kód, což znamená, že délka klíče se rovná (nebo více než) 128 bitům.

Require_ssl_reuse \u003d NO ssl_ciphers \u003d HIGH

Restartujeme znovu, aby se změny projevily:

Sudo systemctl restart vsftpd

Dokonale! Nyní jste ve svém Ubuntu VPS nakonfigurovali server FTP tak, aby fungoval s SSL / TLS.

Krok 6 - Testování připojení pomocí FileZilla

Klienti FTP dnes podporují konfiguraci šifrování TLS, takže je to skvělá příležitost zkontrolovat, zda náš server FTP FTP funguje správně. K otestování připojení použijeme. Nejprve spusťte FileZilla kliknutím na ikonu Stavbyvedoucí.

Klikněte na tlačítko Nový web v okně, které se objeví, začněte vyplňovat informace o FTP serveru Ubuntu.

Vyplňte povinná pole informacemi o nově vytvořeném FTP serveru Ubuntu. Protože jsme to nakonfigurovali pomocí TLS, můžeme označit nastavení šifrování v “ explicitní FTP přes TLS ”pozice. Okno konečného nastavení vypadá takto:

Po nastavení stiskněte Připojita objeví se okno s dotazem na heslo uživatele FTP.

Nakonec budete muset ověřit certifikát SSL na serveru FTP na vašem Ubuntu VPS.

Po potvrzení se na vaší obrazovce objeví kořenový adresář s testovacím souborem.

Je to všechno! Nyní můžete provádět jakýkoli přenos souborů z počítače na server FTP FTP Ubuntu a naopak.

Závěr

V tomto kurzu jsme prošli krok za krokem k vytvoření bezpečného způsobu, jak může místní uživatel přenášet soubory přes FTP pomocí SSL / TLS na FTP server Ubuntu. Také jsme testovali připojení pomocí FileZilla, abychom se ujistili, že vše funguje.

Články jsou brány jako základ:

Téměř každý uživatel internetu narazil na FTP alespoň jednou. Zde je návod, jak nainstalovat FTP server na stroj a zajistit jeho bezpečnost.

Budeme používat lehký a efektivní FTP server vsFTPd určený pro servery s vysokým zatížením. Ve zbytku tohoto článku si povíme jen o FTP serveru, což znamená vsFTPd.

1. Co je to FTP

FTP znamená File Transfer Protocol. Název naznačuje, že tento protokol se používá k přenosu souborů nebo adresářů z jednoho hostitele na druhého přes síť - místní i přes internet.

2. Instalace serveru FTP v Ubuntu

Chcete-li nainstalovat vsftpd, otevřete konzolu a spusťte příkaz:

sudo apt-get install vsftpd
Po provedení tohoto příkazu bude server nainstalován a spuštěn.
Nastavení vsftpd (2.3.5-1ubuntu2) ...

vsftpd start / běh, proces 1891

3. Možnosti spuštění služby FTP

vsftpd lze spustit třemi různými způsoby. První způsob je spustit jej přes inetd. Druhá je prostřednictvím xinetd, třetí je ruční spuštění serveru (offline režim).
Ve výchozím nastavení se vsftpd spouští v samostatném režimu, ve kterém služba spuštěná serverem používá svůj vlastní spouštěcí skript nazývaný démon. V případě vsftpd je to /etc/init.d/vsftpd. Tento samostatný démon převezme kontrolu nad službou FTP v okamžiku spuštění služby FTP. Démon vsftpd poskytuje správci několik příkazů pro správu FTP serveru vsftpd:

start nebo stop - slouží ke spuštění nebo zastavení serveru ftp.
status - Zobrazí podrobné informace o aktuálním stavu vašeho FTP serveru.
restart je alternativou k posloupnosti zastavení a spuštění serveru. Pokud je server již zastaven, spustí se příkaz restart.
znovu načíst - Tento příkaz umožňuje znovu načíst a použít všechna nová nastavení. Jeho rozdíl od restartu spočívá v tom, že jsou použita nová nastavení bez zastavení serveru.
Chcete-li provést tyto příkazy, zadejte:

sudo start / stop / status / restart / reload vsftpd

Režim offline je však méně flexibilní, inetd je starý, takže doporučujeme spustit vsftp přes xinetd... Má věci jako požadavky na protokolování, řízení přístupu, vázání služby na konkrétní síťové rozhraní atd.

4. Spusťte službu FTP přes xinetd

Nainstalujte xinetd superserver:

sudo apt-get install xinetd
Výše uvedený příkaz nainstaluje a spustí superserver xinetd. Pokud ji již máte nainstalovanou, není tento příkaz nutný. Dále vytvořte soubor vsftpd v adresáři /etc/xinetd.d/ s následujícím obsahem:

služba ftp

Zakázat \u003d ne

Socket_type \u003d stream

Počkejte \u003d ne

Uživatel \u003d root

Server \u003d / usr / sbin / vsftpd

Per_source \u003d 5

Instance \u003d 200

No_access \u003d 10.1.1.10

Banner_fail \u003d /etc/vsftpd.busy

Log_on_success + \u003d PID HOST DURATION

Log_on_failure + \u003d HOST

Zároveň můžete změnit libovolné možnosti a přizpůsobit superserver podle svých požadavků.
Možnosti, na které je třeba dávat pozor:
server - na příkazovém řádku zadejte „$ which vsftpd“, abyste zjistili správnou cestu.
no_access - všichni hostitelé s IP adresami specifikovanými v této směrnici budou blokováni.
banner_fail - zde můžete určit cestu k textovému souboru, jehož obsah se zobrazí u všech blokovaných IP adres.

Tato směrnice nařídí serveru FTP, aby neotevíral žádné porty, a zcela je deleguje na superserver xinetd. Před spuštěním serveru v normálním režimu se ujistěte, že je démon vsftpd deaktivován:
sudo služba vsftpd stop

Nyní můžete spustit server FTP pomocí příkazu:
sudo service xinetd restart

Chcete-li zajistit, aby server FTP fungoval správně, otestujte a otevřete port 21 pomocí příkazu netstat:
$ netstat -ant | grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* POSLOUCHEJTE

5. Nastavení serveru FTP

Konfigurace vsftpd se provádí úpravou konfiguračního souboru /etc/vsftpd.conf.

Poznámka: Při provádění jakýchkoli změn v nastavení serveru FTP nezapomeňte je aktivovat pomocí příkazu restart / znovu načíst.

5.1 Nastavení přístupu uživatele

vsftpd umožňuje udělit anonymní přístup nebo uživatelům ze souboru / etc / passwd nebo z jeho vlastního seznamu.

Anonymní přístup

Poznámka: Otevření anonymního přístupu je nebezpečné a anonymní přístup bez hesla je ještě nebezpečnější. Je to špatný nápad. Raději to nedělejte, prostě si to přečtěte jako referenci.

Chcete-li poskytnout anonymní přístup, nastavte v konfiguračním souboru direktivu anonymous_enable na ANO:

anonymous_enable \u003d ANO

Pro přístup bez hesla navíc napište:

no_anon_password \u003d ANO

Nyní lze na server FTP přistupovat prostřednictvím anonymního uživatele. Chcete-li to provést, jednoduše zadejte příkaz ftp s argumentem localhost nebo IP adresou vašeho serveru:

$ ftp localhost Připojeno k localhost. 220 (vsFTPd 2.3.5) Název (localhost: root): anonymní 331 Zadejte heslo. Heslo: 230 Úspěšné přihlášení. Typ vzdáleného systému je UNIX. Použití binárního režimu k přenosu souborů. ftp\u003e ftp\u003e ukončete 221 Sbohem.

Přístup místního uživatele

Chcete-li umožnit přihlášení všem uživatelům uvedeným v souboru / etc / passwd, je třeba změnit hodnotu směrnice local_enable v souboru /etc/vsftpd.conf.
local_enable \u003d ANO
Nyní se každý uživatel uvedený v souboru / etc / passwd bude moci přihlásit pomocí svého hesla.

Seznam uživatelů

Nejprve vytvořme přístupový seznam používaný serverem vsFTPd. Obvykle jej můžete nastavit v adresáři / etc /. Vytvořte soubor s libovolným názvem a seznamem všech uživatelů, kterým chcete udělit nebo odepřít přístup. Vytvořme například nový seznam s jediným uživatelem „root“:
echo root\u003e /etc/vsftpd.userlist
Dále definujeme nový seznam uživatelů v konfiguračním souboru /etc/vsftpd.conf a aktivujeme direktivu userlist_enable:
userlist_file \u003d / etc / vsftpd.userlistuserlist_enable \u003d ANO Proto budou všichni uživatelé uvedení v souboru /etc/vsftpd.userlist odmítnuti v přístupu na FTP server.

$ ftp localhost Připojeno k localhost.220 (vsFTPd 2.3.5) Název (localhost: root): lubos530 Oprávnění odepřeno. Přihlášení se nezdařilo.ftp\u003e Chcete-li povolit přístup všem uživatelům uvedeným v souboru /etc/vsftpd.userlist, nastavte direktivu userlist_deny na „NE“. Tímto způsobem otevřete přístup pouze uživatelům uvedeným v /etc/vsftpd.userlist. Každé uživatelské jméno v tomto souboru musí být na samostatném řádku.

5.2 Další nastavení

VsFTPd má k dnešnímu dni 125 možností konfigurace. Díky tomu je velmi flexibilní konfigurovat a zároveň snadno používat a spravovat. Ať už jej chcete použít doma, v podnikové síti nebo na vzdáleném serveru, můžete si být jisti, že vsFTPd plně vyhovuje vašim potřebám.

Každý správce systému čas od času potřebuje server FTP, nejčastěji je to kvůli potřebě zajistit výměnu informací v automatickém režimu mezi aplikacemi, například během automatické výměny distribuované 1C infobáze nebo pro přístup k souborům na webovém serveru. Dnes vám řekneme, jak vytvořit takový server na platformě Ubuntu za méně než půl hodiny.

Ale nejprve trochu teorie. FTP (File Transfer Protocol) slouží, jak název napovídá, k přenosu souborů a objevil se v roce 1971, ale i přes svůj pokročilý věk je dodnes široce používán. Ačkoli jeho dnešní použití má spíše technickou povahu, je běžné, že koncoví uživatelé přistupují k datům pomocí prohlížeče a protokolu HTTP. Mezi výhody FTP patří schopnost obnovit soubor po přerušení připojení a schopnost číst soubory a zapisovat je stejně snadno. Existují však nevýhody, nejzávažnější je nízká úroveň zabezpečení, proto je třeba této otázce věnovat maximální pozornost.

FTP, stejně jako PPTP, používá různá připojení k přenosu příkazů a přenosu dat. Při inicializaci připojení klient vysílá řídicí příkazy na port 21 serveru, což zase vytváří odchozí připojení pro přenos dat na portu 20, port ze strany klienta je určen jako výsledek vyjednávání. Pokud je však klient za NAT, nelze připojení navázat tímto způsobem, proto byl vyvinut další pasivní režim FTP, kdy klient, nikoli server, naváže připojení pro přenos dat, ale s parametry určenými serverem. Tyto body by měly být brány v úvahu při předávání FTP a při konfiguraci síťového filtru.

Pro náš server použijeme vsftpd - jednoduchý, rychlý a bezpečný FTP server. Vzhledem k tomu, že bude sloužit jak externím, tak interním sítím, má smysl přidat tuto roli do naší. Instalace serveru je velmi jednoduchá:

Apt-get install vsftpd

Server je konfigurován prostřednictvím konfiguračního souboru /etc/vsftpd.conf má jednoduchou strukturu, je dobře komentován a umožňuje vám konfigurovat server bez jakýchkoli pokynů s minimálními znalostmi. Zvažme jeho hlavní parametry.

Server lze spustit nepřetržitě jako službu nebo spustit v případě potřeby, první možnost je pro nás vhodnější:

Poslouchejte \u003d ANO

Tato možnost má vzájemně se vylučující záznam, který by měl být zmenšen do podoby:

Listen_ipv6 \u003d NE

Povolit přihlášení pouze místním uživatelům:

Anonymous_enable \u003d NE
local_enable \u003d ANO

Umožněte uživatelům zapisovat soubory a řekněte serveru, aby automaticky nastavil potřebná práva (755 pro složky a 644 pro soubory):

Write_enable \u003d ANO
local_umask \u003d 022

Pokud potřebujete nastavit jinou sadu práv: 775 a 664, pak musí být umask 002.

Ve výchozím nastavení používá server čas GMT k nastavení souborů do vašeho časového pásma, použijte možnost:

Use_localtime \u003d ANO

Povolíme protokol nahraných a stažených souborů:

Xferlog_enable \u003d ANO

Povolit serveru navázat datová připojení na portu 20 (aktivní režim):

Connect_from_port_20 \u003d ANO

Následující možnosti určují umístění a formát pro ukládání protokolů:

Xferlog_file \u003d / var / log / vsftpd.log
xferlog_std_format \u003d ANO

Pojďme nastavit časové limity relace:

Idle_session_timeout \u003d 600
data_connection_timeout \u003d 120

Z bezpečnostních důvodů také izolujeme uživatele v jeho domovském adresáři a okamžitě povolíme zápis do jeho kořene:

Chroot_local_user \u003d ANO
allow_writeable_chroot \u003d ANO

Pro správnou práci s textovými daty můžete povolit podporu ASCII, což umožní při přenosu textového souboru ze systému Windows do systému UNIX (Linux) správně nahradit znaky zalomení řádku z CR + LF na LF pro správné zobrazení obsahu a provést reverzní transformaci při jeho zpětném přenosu.

Ascii_upload_enable \u003d ANO
ascii_download_enable \u003d ANO

Lze povolit pouze jednu možnost pro nahrávání nebo stahování. Upozorňujeme, že přenos binárního souboru v režimu ASCII může tento soubor poškodit.

Docela zajímavá možnost:

Ls_recurse_enable \u003d ANO

Umožňuje rekurzivní výpis adresářů, na jedné straně je to pohodlné, na druhé straně to může způsobit velké zatížení serveru, pokud například získáte výpis adresáře, který obsahuje velké množství souborů a adresářů.

Ve výchozím nastavení necháváme všechny ostatní možnosti, i když můžete pozdrav serveru upravit tak, že napíšete, co se vám líbí:

Ftpd_banner \u003d Vítejte na FTP Roga i Kopyta LLC

Na konci konfiguračního souboru nastavíme nastavení pro pasivní režim, doporučuje se explicitně nastavit porty, abyste je mohli specifikovat při přeposílání, pokud je server za NAT nebo v pravidlech firewallu:

Pasv_enable \u003d ANO
pasv_min_port \u003d 62000
pasv_max_port \u003d 62999

Restartujte server (toto je nutné provést pokaždé po provedení změn v konfiguraci):

Služba vsftpd restart

a zkuste se spojit s jakýmkoli klientem FTP pomocí přihlašovacích údajů existujícího uživatele. Musíme se dostat do jeho domovského adresáře a být v něm izolovaní.

V případě chyby související s nesprávným fungováním bezpečnostního systému vsftpd a seccomp:

500 OOPS: prctl PR_SET_SECCOMP se nezdařilo

přidat do souboru možnost bez dokladů:

Seccomp_sandbox \u003d NE

Nezapomeňte však, že FTP je nezabezpečený protokol, takže nechat jakéhokoli místního uživatele na serveru, jak je tomu nyní, není nejlepší volbou. Aby se tomu zabránilo, vsftpd má vestavěný mechanismus ovládání uživatele. Přidejte možnost do konfiguračního souboru:

Userlist_enable \u003d ANO

a vytvořte soubor seznamu uživatelů:

Dotkněte se /etc/vsftpd.user_list

Výchozí vsftpd zakazuje přístup na server pro uživatele uvedené v tomto seznamu ještě před zadáním hesla, tj. implementuje princip je povolen každému, kdo není zakázán. Bylo by však mnohem lepší uplatnit jiný přístup: zakázáno každému, kdo nemá povolení. Ty. dovolit přístup pouze k určeným uživatelům. Chcete-li to provést, přidejte možnost:

Userlist_deny \u003d NE

Nyní budou mít přístup k serveru FTP pouze výslovně uvedení uživatelé, měli by být uvedeni v vsftpd.user_list jeden na řádek, například:

Ivanov
petrov

Pokud není uvedeno jinak, uživatelé se připojují přes FTP do svého domovského adresáře. To není vždy výhodné, často je musíte přesměrovat do jiného adresáře. Pokud se jedná o společnou složku pro všechny, řekněme / var / ftp, můžete zadat možnost:

Local_root \u003d / var / ftp

Který přesměruje všechny uživatele do zadaného adresáře a tam je izoluje.

Toto je nejjednodušší situace, skutečné úkoly jsou obvykle obtížnější, řekněme, že musíme nastavit uživatele Ivanova jako kořenový adresář /var/www/example1.coma Petrov /var/www/example2.comtakže každý z nich pracuje se svou vlastní složkou. Pro tyto účely můžete použít další funkci vsftpd - uživatelské nastavení, které přepíše nastavení v hlavním konfiguračním souboru.

Chcete-li to provést, přidejte možnost:

User_config_dir \u003d / etc / vsftpd_user_conf

Poté vytvoříme samotný adresář

Mkdir / etc / vsftpd_user_conf

Chcete-li nastavit vlastní nastavení pro uživatele v tomto adresáři, vytvořte soubor s uživatelským jménem a přidejte do něj potřebné možnosti. Změny se použijí bez restartování serveru FTP při příštím připojení klienta.

Vytvořme soubor s nastavením pro Ivanova:

Tocuh / etc / vsftpd_user_conf / ivanov

a přidejte k tomu možnost:

Local_root \u003d / var / www / example1.com

Při příštím připojení se kořenový adresář uživatele změní na zadaný. Také v tomto souboru můžeme nastavit jakékoli osobní možnosti, například další umask nebo oprávnění souborů. Zde však nemůžeme použít globální nastavení: připojení, protokolování, možnosti ověřování, budou jednoduše ignorovány.

Pokud potřebujete skrýt skutečné vlastníky souborů a složek, můžete použít možnost:

Hide_ids \u003d ANO

V tomto případě bude místo skutečných vlastníků a skupin uvedeno ftp: ftp, což může být užitečné v případě veřejného serveru nebo v případě, že v seznamu uživatelů jsou neoprávněné osoby, kterým nechcete sdělit skutečná uživatelská jména vašeho systému.

Jak vidíte, ve skutečnosti jsme nastavili funkční FTP server za méně než půl hodiny.

File Transfer Protocol (FTP) je protokol TCP pro stahování souborů mezi počítači. V minulosti se také používalo pro nahrávání, ale protože tato metoda nepoužívá šifrování, pověření uživatele i data přenášená v čistém formátu a jsou snadno zachycena. Pokud tedy hledáte způsob, jak bezpečně nahrávat a stahovat soubory, přečtěte si místo toho část o OpenSSH ve Vzdálené správě.

FTP funguje na modelu klient / server. Součást serveru se nazývá FTP démon. Neustále naslouchá požadavkům FTP od vzdálených klientů. Když je přijat požadavek, spravuje přihlášení a nastaví připojení. Po dobu trvání relace provádí některý z příkazů odeslaných klientem FTP.

Přístup k serveru FTP lze spravovat dvěma způsoby:

V anonymním režimu mohou vzdálení klienti přistupovat na server FTP pomocí výchozího uživatelského účtu s názvem „anonymní“ nebo „ftp“ a zasláním e-mailové adresy jako hesla. V režimu Authenticated musí mít uživatel účet a heslo. Tato druhá volba je velmi nejistá a neměla by být používána, s výjimkou zvláštních okolností. Pokud chcete bezpečně přenášet soubory, podívejte se na SFTP v sekci na OpenSSH-Server. Uživatelský přístup k adresářům a souborům serveru FTP závisí na oprávněních definovaných pro účet použitý při přihlášení. Obecně platí, že démon FTP skryje kořenový adresář serveru FTP a změní jej na domovský adresář FTP. To skryje zbytek systému souborů ze vzdálených relací.

vsftpd - instalace serveru FTP

vsftpd je FTP démon dostupný v Ubuntu. Instalace, nastavení a údržba je snadná. Chcete-li nainstalovat vsftpd, můžete spustit následující příkaz:

sudo apt install vsftpd

Anonymní konfigurace FTP

Ve výchozím nastavení vsftpd není nakonfigurován tak, aby umožňoval anonymní stahování. Chcete-li povolit anonymní stahování, upravte soubor /etc/vsftpd.conf změnou:

anonymous_enable \u003d Ano

Během instalace je uživatel ftp vytvořen s domovským adresářem / srv / ftp. Toto je výchozí adresář FTP.

Chcete-li toto umístění změnit, například na / srv / files / ftp, jednoduše vytvořte adresář v jiném umístění a změňte domovský adresář uživatele ftp:

sudo mkdir / srv / soubory / ftp sudo usermod -d / srv / soubory / ftp ftp

Po provedení změny restartujte vsftpd:

Nakonec zkopírujte všechny soubory a adresáře, které chcete zpřístupnit prostřednictvím anonymního FTP, do / srv / files / ftp nebo / srv / ftp, pokud chcete použít výchozí.

Konfigurace FTP ověřená uživatelem

Ve výchozím nastavení je vsftpd nakonfigurován tak, aby ověřoval uživatele systému a umožňoval jim stahovat soubory. Pokud chcete, aby uživatelé mohli nahrávat soubory, upravte soubor /etc/vsftpd.conf:

write_enable \u003d ANO

Nyní restartujte vsftpd:

sudo systemctl restart vsftpd.service

Nyní, když se uživatelé systému přihlásí k FTP, začnou ve svých domovských adresářích, kde si mohou stahovat, nahrávat, vytvářet adresáře atd.

Podobně ve výchozím nastavení nemají anonymní uživatelé povoleno nahrávat soubory na FTP server. Chcete-li toto nastavení změnit, měli byste odkomentovat následující řádek a restartovat vsftpd:

anon_upload_enable \u003d ANO

Povolení anonymního nahrávání FTP může být extrémním bezpečnostním rizikem. Nejlepší je nepovolovat anonymní nahrávání na servery přistupované přímo z Internetu.

Konfigurační soubor se skládá z mnoha konfiguračních parametrů. Informace o každém parametru jsou k dispozici v konfiguračním souboru. Alternativně můžete odkazovat na manuálovou stránku, man 5 vsftpd.conf, kde najdete podrobnosti o každém parametru.

Zabezpečení FTP

V souboru /etc/vsftpd.conf jsou možnosti, které zvyšují bezpečnost vsftpd. Uživatelé mohou být například omezeni na své domovské adresáře odkomentováním:

chroot_local_user \u003d ANO

Můžete také omezit konkrétní seznam uživatelů pouze na jejich domovské adresáře:

chroot_list_enable \u003d ANO chroot_list_file \u003d / etc / vsftpd.chroot_list

Po odkomentování výše uvedených možností vytvořte /etc/vsftpd.chroot_list obsahující seznam uživatelů jednoho na řádek. Poté restartujte vsftpd:

sudo systemctl restart vsftpd.service

Soubor / etc / ftpusers je také seznam uživatelů, kterým je zakázán přístup FTP. Výchozí seznam obsahuje root, démona, nikoho atd. Chcete-li zakázat přístup FTP dalším uživatelům, jednoduše je přidejte do seznamu.

FTP lze také zašifrovat pomocí FTPS. Na rozdíl od SFTP je FTPS FTP přes Secure Socket Layer (SSL). SFTP je relace jako FTP přes šifrované připojení SSH. Hlavní rozdíl spočívá v tom, že uživatelé SFTP musí mít v systému shell účet, místo nologinového shellu. Poskytování shellu všem uživatelům nemusí být ideální pro některá prostředí, jako je například sdílený webový hostitel. Je však možné omezit tyto účty pouze na SFTP a zakázat interakci prostředí. Další informace najdete v části OpenSSH-Server.

Chcete-li konfigurovat FTPS, upravte soubor /etc/vsftpd.conf a dole přidejte:

Všimněte si také možnosti související s certifikátem a klíčem:

rsa_cert_file \u003d / etc / ssl / certs / ssl-cert-snakeoil.pem rsa_private_key_file \u003d / etc / ssl / private / ssl-cert-snakeoil.key

Ve výchozím nastavení jsou tyto možnosti nastaveny na certifikát a klíč poskytované balíčkem ssl-cert. V produkčním prostředí by měly být nahrazeny certifikátem a klíčem vygenerovaným pro konkrétního hostitele. Další informace o certifikátech najdete v části Certifikáty.

Nyní restartujte vsftpd a neanonymní uživatelé budou nuceni používat FTPS:

sudo systemctl restart vsftpd.service

Chcete-li uživatelům s shellem / usr / sbin / nologin povolit přístup na FTP, ale nemáte k nim přístup, upravte / etc / shells přidáním nologin shellu:

# / etc / shells: platné přihlašovací skořápky / 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 / obrazovka / usr / sbin / nologin

To je nutné, protože vsftpd ve výchozím nastavení používá pro ověřování PAM a konfigurační soubor /etc/pam.d/vsftpd obsahuje:

vyžadováno ověření pam_shells.so

Modul PAM skořápek omezuje přístup k skořápkám uvedeným v souboru / etc / shells.

Nejoblíbenější klienty FTP lze nakonfigurovat pro připojení pomocí FTPS. Klient FTP příkazového řádku lftp má schopnost používat také FTPS.

F TP (File Transfer Protocol) je standardní síťový protokol používaný k přenosu souborů do a ze vzdálené sítě. Pro bezpečnější a rychlejší přenos dat použijte SCP.

Pro Linux je k dispozici mnoho serverů FTP s otevřeným zdrojovým kódem. Nejoblíbenější a nejpoužívanější jsou PureFTPd, ProFTPD a vsftpd. V tomto tutoriálu budeme instalovat vsftpd. Jedná se o stabilní, bezpečný a rychlý server FTP. Ukážeme vám také, jak nakonfigurovat vsftpd tak, aby omezil přístup uživatelů do jejich domovského adresáře a šifroval veškerý přenos pomocí SSL / TLS.

Ačkoli byl tento článek napsán pro Ubuntu 18.04, stejné pokyny platí pro Ubuntu 16.04 a jakoukoli distribuci založenou na Debianu, včetně Debian, Linux Mint a Elementary OS.

Předpoklady

Instalace vsftpd na Ubuntu 18.04

Balíček vsftpd je k dispozici v úložištích. Chcete-li jej nainstalovat, stačí spustit následující příkazy:

Sudo apt update sudo apt install vsftpd

Služba vsftpd se automaticky spustí po dokončení procesu instalace. Zkontrolujte to vytištěním stavu služby:

Stav systému Sudo vsftpd

Výsledek bude vypadat asi takto, což ukazuje, že služba vsftpd je funkční:

* vsftpd.service - vsftpd FTP server Načteno: načteno (/lib/systemd/system/vsftpd.service; povoleno; předvolba dodavatele: povoleno) Aktivní: aktivní (běží) od pondělí 10. 10. 2018 03:38:52 PDT; Před 10 minutami Hlavní PID: 2616 (vsftpd) Úkoly: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 / usr / sbin / vsftpd /etc/vsftpd.conf

Konfigurace vsftpd

Server vsftpd lze konfigurovat úpravou souboru /etc/vsftpd.conf. Většina nastavení je zdokumentována uvnitř konfiguračního souboru. Všechny dostupné možnosti najdete na oficiální stránce vsftpd.

V následujících částech projdeme některá důležitá nastavení potřebná ke konfiguraci zabezpečené instalace vsftpd.

Začněte otevřením konfiguračního souboru vsftpd:

Sudo nano /etc/vsftpd.conf

1. FTP přístup

Povolíme pouze místním uživatelům přístup na server FTP, vyhledáme direktivy anonymous_enable a local_enable a zkontrolujeme, zda vaše konfigurace odpovídá následujícím řádkům:

/etc/vsftpd.conf

Anonymous_enable \u003d NO local_enable \u003d YES

2. Povolení stahování

Odkomentujte nastavení write_enable, abyste povolili změny v souborovém systému, jako je nahrávání a mazání souborů.

/etc/vsftpd.conf

Write_enable \u003d ANO

3. Chroot

Chcete-li uživatelům FTP zabránit v přístupu k jakýmkoli souborům mimo jejich domovské adresáře, odkomentujte nastavení chroot.

/etc/vsftpd.conf

Chroot_local_user \u003d ANO

Ve výchozím nastavení vsftp odmítne stahovat soubory, pokud je zapisovatelný adresář, ve kterém jsou uživatelé uzamčeni, aby se zabránilo ohrožení zabezpečení, když je povolen chroot.

  • Metoda 1. - Doporučeným způsobem, jak povolit nahrávání, je povolit chroot a konfigurovat adresáře FTP. V tomto výukovém programu vytvoříme v domácnosti uživatele adresář ftp, který bude sloužit jako chroot a zapíše adresář pro nahrávání pro nahrávání souborů.

    /etc/vsftpd.conf

    User_sub_token \u003d $ USER local_root \u003d / home / $ USER / ftp

  • Metoda 2. Další možností je přidat následující direktivu do konfiguračního souboru vsftpd. Tento parametr použijte, pokud musíte uživateli ve svém domovském adresáři udělit přístup pro zápis.

    /etc/vsftpd.conf

    Allow_writeable_chroot \u003d ANO

4. Pasivní připojení FTP

vsftpd může použít jakýkoli port pro pasivní připojení FTP. Určíme minimální a maximální rozsah portů a poté rozsah otevřete v naší bráně firewall.

Přidejte následující řádky do konfiguračního souboru:

/etc/vsftpd.conf

Pasv_min_port \u003d 30000 pasv_max_port \u003d 31000

5. Omezení přihlášení uživatele

Chcete-li povolit přihlášení pouze některých uživatelů na server FTP, přidejte na konec souboru následující řádky:

/etc/vsftpd.conf

Userlist_enable \u003d ANO userlist_file \u003d / etc / vsftpd.user_list userlist_deny \u003d NE

Pokud je tato možnost povolena, musíte explicitně určit, kteří uživatelé se mohou přihlásit, přidáním uživatelských jmen do souboru /etc/vsftpd.user_list (jeden uživatel na řádek).

6. Zabezpečení přenosu pomocí SSL / TLS

Chcete-li šifrovat přenosy FTP pomocí protokolu SSL / TLS, musíte mít certifikát SSL a nakonfigurovat server FTP tak, aby jej mohl používat.

Můžete použít podepsané důvěryhodnou certifikační autoritou nebo vytvořit certifikát podepsaný svým držitelem.

Pokud máte doménu nebo subdoménu ukazující na IP adresu FTP serveru, můžete snadno vytvořit bezplatný certifikát SSL pro šifrování.

V tomto článku vygenerujeme certifikát SSL podepsaný svým držitelem pomocí příkazu openssl.

Následující příkaz vygeneruje 2048bitový soukromý klíč a certifikát s vlastním podpisem platný 10 let. Soukromý klíč i certifikát se uloží do stejného souboru:

Sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Nyní, když byl vytvořen certifikát SSL, otevřete konfigurační soubor vsftpd:

Sudo nano /etc/vsftpd.conf

Najděte direktivy rsa_cert_file a rsa_private_key_file, změňte jejich hodnotu pam v cestě k souboru a nastavte direktivu ssl_enable na YES:

/etc/vsftpd.conf

Rsa_cert_file \u003d / etc / ssl / private / vsftpd.pem rsa_private_key_file \u003d / etc / ssl / private / vsftpd.pem ssl_enable \u003d ANO

Pokud není uvedeno jinak, použije server FTP k zajištění zabezpečeného připojení pouze protokol TLS.

Restartujte službu vsftpd

Jakmile dokončíte úpravy, konfigurační soubor vsftpd (kromě komentářů) by měl vypadat asi takto:

/etc/vsftpd.conf

Listen \u003d NE listen_ipv6 \u003d ANO anonymous_enable \u003d NE local_enable \u003d ANO write_enable \u003d ANO dirmessage_enable \u003d ANO use_localtime \u003d ANO xferlog_enable \u003d ANO connect_from_port_20 \u003d ANO chroot_local_user \u003d ANO secure_chroot_dir \u003d / vard / run atd. private / vsftpd.pem rsa_private_key_file \u003d / etc / ssl / private / vsftpd.pem ssl_enable \u003d ANO user_sub_token \u003d $ USER local_root \u003d / home / $ USER / ftp pasv_min_port \u003d 30000 pasv_max_port \u003d 31000 userlist_enable \u003d YES userlist_enable \u003d YES userlist_deny \u003d NE

Uložte soubor a restartujte službu vsftpd, aby se změny projevily:

Sudo systemctl restart vsftpd

Otevření brány firewall

Pokud používáte bránu firewall UFW, musíte povolit přenos FTP.

Chcete-li otevřít port 21 (port příkazu FTP), port 20 (datový port FTP) a 30000-31000 (rozsah pasivního portu), spusťte následující příkazy:

Sudo ufw povolit 20: 21 / tcp sudo ufw povolit 30000: 31000 / tcp

Abychom zabránili blokování, otevřeme port 22:

Sudo ufw povolit OpenSSH

Znovu načtěte pravidla UFW deaktivací a opětovným povolením UFW:

Sudo ufw zakáže sudo ufw povolit

Postup kontroly změn:

Stav Sudo ufw Stav: aktivní Do Akce Od - ------ ---- 20:21 / tcp ALLOW Anywhere 30000: 31000 / tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21 / tcp (v6) ALLOW Anywhere (v6 ) 30000: 31000 / tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Vytvořit uživatele FTP

Abychom otestovali náš FTP server, vytvoříme nového uživatele.

  • Pokud již máte uživatele, kterému chcete udělit přístup FTP, krok 1 přeskočte.
  • Pokud jste v konfiguračním souboru nastavili allow_writeable_chroot \u003d YES, přeskočte 3. krok.
  1. Vytvořte nového uživatele s názvem newftpuser: sudo adduser newftpuser
  2. Přidejte uživatele do seznamu povolených FTP: echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Vytvořte strom adresářů FTP a nastavte správná oprávnění: sudo mkdir -p / home / newftpuser / ftp / uploadsudo chmod 550 / home / newftpuser / ftpsudo chmod 750 / home / newftpuser / ftp / uploadsudo chown -R newftpuser: / home / newftpuser / ftp

    Jak je uvedeno v předchozí části, uživatel bude moci nahrávat své soubory do adresáře ftp / upload.

V tomto okamžiku je váš server FTP plně funkční a měli byste být schopni se k serveru připojit s kýmkoli, kdo může být nakonfigurován tak, aby používal šifrování TLS, například FileZilla.

Zakázat přístup k prostředí

Ve výchozím nastavení bude mít uživatel při vytváření uživatele, pokud není výslovně uvedeno, přístup k serveru SSH.

Chcete-li zakázat přístup k prostředí, vytvoříme nový prostředí, které jednoduše vytiskne zprávu sdělující uživateli, že jeho účet je omezen pouze na přístup FTP.

Vytvořte shell / bin / ftponly a proveďte jej spustitelný:

Echo -e "#! / Bin / sh \\ necho" Tento účet je omezen pouze na přístup FTP. "" | sudo tee -a / bin / ftponly sudo chmod a + x / bin / ftponly

Přidejte nový shell do seznamu platných skořápek v souboru / etc / shells

Echo "/ bin / ftponly" | sudo tee -a / etc / shells

Změňte shell uživatele na / bin / ftponly:

Sudo usermod newftpuser -s / bin / ftponly

Závěr

V tomto článku jste se naučili, jak nainstalovat a nakonfigurovat bezpečný a rychlý server FTP v systému Ubuntu 18.04.