Úvod

FTP zkratka pro File Transfer Protocol, síťový protokol, který byl jednou široce používán pro přesun souborů mezi klientem a serverem. Od té doby byl nahrazen rychlejší, bezpečnější a pohodlnější způsoby poskytování soubory. Mnozí příležitostní uživatelé Internetu očekávají, že ke stažení přímo z webového prohlížeče https, a příkaz-line uživatelé jsou více pravděpodobné, že použití zabezpečených protokolů, například scp nebo sFTP.,

FTP se stále používá k podpoře starších aplikací a pracovních postupů s velmi specifickými potřebami. Pokud máte na výběr, jaký protokol použít, zvažte zkoumání modernějších možností. Když však potřebujete FTP, vsftpd je vynikající volbou. Optimalizováno pro zabezpečení, výkon a stabilitu, vsftpd nabízí silnou ochranu proti mnoha bezpečnostních problémů v jiných FTP serverů a je výchozí pro mnoho distribucí Linuxu.,

V tomto tutoriálu, budeme vám ukázat, jak nastavit vsftpd, která umožní uživateli nahrát soubory do svého domovského adresáře pomocí FTP přihlašovací údaje zabezpečeny SSL/TLS.

Předpoklady

sledovat spolu s tímto tutorial budete potřebovat:

  • Ubuntu 16.04 server s non-root uživatele s sudo oprávnění: můžete se dozvědět více o tom, jak nastavit uživatel s těmito právy v naší Počáteční Instalace Serveru s Ubuntu 16.04 průvodce.

jakmile máte server Ubuntu na svém místě, jste připraveni začít.,

Krok 1 — Instalace vsftpd

začneme tím, že aktualizujeme naše seznam balíčků a instalaci vsftpd démona:

  • sudo apt-get update
  • sudo apt-get install vsftpd

Když instalace je kompletní, budeme zkopírujte konfigurační soubor, takže můžeme začít s prázdným konfigurace, ukládání původní jako záložní.

  • sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

se zálohou konfigurace na místě jsme připraveni nakonfigurovat firewall.

Krok 2-otevření brány Firewall

zkontrolujeme stav brány firewall, abychom zjistili, zda je povolena., Pokud ano, zajistíme, že provoz FTP je povolen, takže se nebudete setkávat s pravidly brány firewall, která vás blokují, když přijde čas na testování.

  • sudo ufw status

V tomto případě, pouze SSH je povolen přes:

Output
Status: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)

můžete mít ještě další pravidla, nebo ne, pravidla brány firewall. Vzhledem k tomu, že v tomto případě je povolen pouze provoz ssh, musíme přidat pravidla pro provoz FTP.,

Budeme potřebovat otevřít porty 20 a 21 pro FTP, port 990 pro později, když jsme povolit TLS, a porty 40000-50000 pro rozsah pasivních portů máme v plánu nastavit v konfiguračním souboru:

  • sudo ufw allow 20/tcp
  • sudo ufw allow 21/tcp
  • sudo ufw allow 990/tcp
  • sudo ufw allow 40000:50000/tcp
  • sudo ufw status

naše pravidla brány firewall vypadá takto:

vsftpd instalované a potřebné porty otevřít, jsme připraveni přistoupit k dalšímu kroku.

Krok 3-Příprava uživatelského adresáře

pro tento tutoriál vytvoříme uživatele, ale možná již máte uživatele, který potřebuje přístup FTP., Postaráme se o zachování přístupu stávajícího uživatele k jejich datům v následujících pokynech. Přesto doporučujeme začít s novým uživatelem, dokud nakonfigurujete a nezkoušíte nastavení.

nejprve přidáme zkušební uživatele:

při výzvě přiřaďte heslo a klidně stiskněte „ENTER“ prostřednictvím dalších výzev.

FTP je obecně bezpečnější, když jsou uživatelé omezeni na konkrétní adresář.vsftpd dosahuje toho pomocí chroot vězení., Pokud je pro místní uživatele povoleno chroot, jsou ve výchozím nastavení omezeny na svůj domovský adresář. Vzhledem k tomu, že vsftpd zabezpečuje adresář, nesmí být uživatel zapisovatelný. To je v pořádku pro nového uživatele, který by se měl připojit pouze přes FTP, ale stávající uživatel může potřebovat zapsat do své domovské složky, pokud také shell přístup.,

V tomto příkladu, spíše než odstranění napsat oprávnění z domovského adresáře, jsme se vytvořit ftp adresář sloužit jako chroot zápis files adresář držet skutečné soubory.,33″>

Output
total 84 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 .4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..

dále vytvoříme adresář, kam soubory lze nahrát a přiřadit vlastnictví uživatele:

  • sudo mkdir /home/sammy/ftp/files
  • sudo chown sammy:sammy /home/sammy/ftp/files

oprávnění podívejte se na files adresář by měl vrátit následující:

  • sudo ls -la /home/sammy/ftp

Konečně, přidáme test.txt soubor použít, když jsme test později na:

  • echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt

Nyní, že jsme zajistili ftp adresář a umožnil uživateli přístup do files adresář, obrátíme naši pozornost na konfiguraci.,

Krok 4-Konfigurace přístupu FTP

plánujeme umožnit jedinému uživateli s místním účtem shell připojit se k FTP. Dvě klíčová nastavení jsou již nastavena v vsftpd.conf. Začněte tím, že otevření config a ověřte, zda nastavení v konfiguraci shodují níže:

  • sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf

dále budeme muset změnit některé hodnoty v souboru. S cílem umožnit uživateli nahrát soubory, budeme odkomentovat write_enable nastavení tak, že máme:

/etc/vsftpd.,conf
. . .write_enable=YES. . .

Budeme také odkomentovat chroot, aby se zabránilo FTP-připojení uživatele v přístupu k nějaké soubory nebo příkazy mimo adresářový strom.

/ etc / vsftpd.conf
. . .chroot_local_user=YES. . .

přidáme user_sub_token v pořadí chcete-li vložit uživatelské jméno v našich local_root directory cestě, takže naše nastavení bude fungovat pro uživatele a případné budoucí uživatele, který by mohl být přidán.

/ etc / vsftpd.,conf
user_sub_token=$USERlocal_root=/home/$USER/ftp

omezit rozsah portů, které mohou být použity pro pasivní FTP, ujistěte se, že dostatek připojení jsou k dispozici:

/etc/vsftpd.conf
pasv_min_port=40000pasv_max_port=50000

Poznámka: předem jsme otevřeli porty, které jsme zde nastavili pro rozsah pasivních portů. Pokud změníte hodnoty, nezapomeňte aktualizovat nastavení brány firewall.

Od té doby jsme jen plánuje povolit FTP přístup případ od případu, budeme nastavit konfiguraci tak, aby přístup je vzhledem k uživateli pouze tehdy, když jsou výslovně přidány do seznamu, spíše než ve výchozím nastavení:

/etc/vsftpd.,conf
userlist_enable=YESuserlist_file=/etc/vsftpd.userlistuserlist_deny=NO

userlist_deny přepíná logiku. Pokud je nastavena na“ Ano“, uživatelům v seznamu je odepřen přístup k FTP. Pokud je nastavena na“ ne“, mají přístup pouze uživatelé v seznamu. Po dokončení změny uložte a ukončete soubor.

nakonec vytvoříme a přidáme našeho uživatele do souboru., Budeme používat -a vlajky připojit soubor:

  • echo "sammy" | sudo tee -a /etc/vsftpd.userlist

Double-zkontrolovat, že to bylo přidáno, jak jste očekávali:

cat /etc/vsftpd.userlist
Output
sammy

Restartujte démona načíst změny konfigurace:

  • sudo systemctl restart vsftpd

Nyní jsme připraveni na testování.

Krok 5-testování přístupu FTP

nakonfigurovali jsme server tak, aby umožnil připojení přes FTP pouze uživatelisammy. Ujistíme se, že tomu tak je.

anonymní uživatelé by se neměli připojit: zakázali jsme anonymní přístup., Zde to otestujeme tím, že se pokusíme připojit anonymně. Pokud jsme to udělali správně, anonymní uživatelé by měli být odepřeno oprávnění:

  • ftp -p 203.0.113.0

připojení:

  • bye

Uživatelů jiných, než jsou sammy nepodařilo se připojit: Další, budeme se snažit připojení jako náš sudo uživatel. Také jim by měl být odepřen přístup a mělo by se to stát dříve, než budou moci zadat své heslo.,a zapisovat soubory: Zde, budeme ujistěte se, že naše určeného uživatele canconnect:

  • ftp -p 203.0.113.0

změnit na files adresář, pak použijte get příkaz k přenosu testovacího souboru jsme vytvořili dříve, aby naše místní počítač:

  • cd files
  • get test.txt

Budeme odbočit vpravo zpět kolem a snaží se nahrát soubor s novým jménem, aby se test napsat permissions:

  • put test.txt upload.txt

připojení:

  • bye

Teď, když jsme testovali náš konfigurace, budeme podniknout kroky, aby dále zabezpečit našeho serveru.,

Krok 6 — Zajištění Transakcí

Od FTP není šifrovat data v tranzitu, včetně pověření uživatele, budeme umožňují TTL/SSL stanovit, že šifrování. Prvním krokem je vytvoření certifikátů SSL pro použití s vsftpd.

použijemeopenssl k vytvoření nového certifikátu a použijeme příznak-days, aby byl platný po dobu jednoho roku. Ve stejném příkazu přidáme soukromý 2048bitový klíč RSA., Poté nastavením vlajek -keyout a -out na stejnou hodnotu bude soukromý klíč a certifikát umístěny ve stejném souboru.

provedeme to následujícím příkazem:

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

budete vyzváni k zadání informací o adrese vašeho certifikátu., Náhrada vlastních informací na níže uvedené otázky:

Pro více informací o certifikátu naleznete OpenSSL Náležitosti: Práce se SSL Certifikáty, Soukromé Klíče a Doporučení pro jednotlivé země,

Poté, co jste vytvořili certifikátů, otevřete vsftpd konfigurační soubor znovu:

  • sudo nano /etc/vsftpd.conf

v dolní části souboru, měli dva řádky, které začínají rsa_. Komentujte je tak, aby vypadaly jako:

/ etc / vsftpd.,conf
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Pod nimi, přidejte následující řádky, které poukazují na certifikát a soukromý klíč, který jsme právě vytvořili:

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem

poté vynutíme použití SSL, což zabrání klientům, kteří se nemohou vypořádat s TLS v připojení. To je nezbytné, aby bylo zajištěno, že veškerý provoz je šifrován, ale může donutit uživatele FTP ke změně klientů. Změna ssl_enable na YES:

/etc/vsftpd.,conf
ssl_enable=YES

Po tom, přidejte následující řádky, aby výslovně popřít anonymní připojení přes SSL a vyžadovat protokol SSL pro přenos dat a přihlášení:

/etc/vsftpd.conf
allow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES

poté nakonfigurujeme server tak, aby používal TLS, preferovaného nástupce SSL přidáním následujících řádků:

/etc/vsftpd.conf
ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO

nakonec přidáme další dvě možnosti. Za prvé, nebudeme vyžadovat opětovné použití SSL, protože to může zlomit mnoho FTP klientů., Budeme vyžadovat“ vysoké “ šifrovací šifry, což v současné době znamená délky klíčů rovnající se nebo větší než 128 bitů:

/etc/vsftpd.conf
require_ssl_reuse=NOssl_ciphers=HIGH

po dokončení uložte a zavřete soubor.

Teď musíme restartovat server, změny přijmout účinek:

  • sudo systemctl restart vsftpd

V tomto bodě, budeme již moci spojit s nejistou příkazového řádku klienta. Pokud bychom to zkusili, viděli bychom něco jako:

Další, ověříme, že se můžeme připojit pomocí klienta, který podporuje TLS.,

Krok 7-Testování TLS pomocí FileZilla

většina moderních FTP klientů může být nakonfigurována tak, aby používala šifrování TLS. Ukážeme, jak se připojit pomocí FileZilla kvůli podpoře napříč platformami. Nahlédněte do dokumentace pro ostatní klienty.

při prvním otevření FileZilla najděte ikonu Správce stránek těsně pod souborem word, ikonu vlevo-nejvíce v horním řádku. Klikněte na něj:

otevře se nové okno., Klikněte na tlačítko“ nový web“v pravém dolním rohu:


v části“ Moje stránky „se objeví nová ikona se slovy“ nový web“. Nyní jej můžete pojmenovat nebo se vrátit později a použít tlačítko Přejmenovat.

pole „Host“ musíte vyplnit jménem nebo IP adresou. V rozbalovací nabídce „šifrování“ vyberte možnost „Vyžadovat explicitní FTP přes TLS“.

pro“ typ přihlášení „vyberte“požádat o heslo“. Vyplňte FTP uživatele, který jste vytvořili v poli „uživatel“:


Klikněte na „Připojit“ ve spodní části rozhraní., Budete požádáni o heslo uživatele:


Pro připojení klikněte na“ OK“. Nyní byste měli být připojeni k serveru pomocí šifrování TLS / SSL.


když jste certifikát přijali, poklepejte na složku files a přetáhněte nahrávání.txt vlevo pro potvrzení, že jste schopni stahovat soubory.

když to uděláte, klikněte pravým tlačítkem myši na místní kopii a přejmenujte ji na upload-tls.txt ‚ a přetáhněte jej zpět na server, abyste potvrdili, že můžete nahrávat soubory.,


nyní jste potvrdili, že můžete bezpečně a úspěšně přenášet soubory s povoleným SSL/TLS.

Krok 8-zakázání přístupu k shellu (Volitelné)

Pokud nemůžete používat TLS kvůli požadavkům klienta, můžete získat určitou bezpečnost zakázáním možnosti uživatele FTP přihlásit se jiným způsobem. Jeden relativně jednoduchý způsob, jak tomu zabránit, je vytvoření vlastního shellu. To neposkytuje žádné šifrování, ale omezí přístup kompromitovaného účtu na soubory přístupné FTP.,

za Prvé, otevřete soubor s názvem ftponly v bin adresáři:

  • sudo nano /bin/ftponly

přidat zprávu, říká uživateli, proč nejsou schopni přihlásit.,/p>

#!/bin/shecho "This account is limited to FTP access only."

Změna oprávnění vytvořit spustitelný soubor:

  • sudo chmod a+x /bin/ftponly

Otevřít seznam platných shellů:

  • sudo nano /etc/shells

V dolní části, přidat:

/etc/shells
. . ./bin/ftponly

Aktualizace uživatele shell následující příkaz:

  • sudo usermod sammy -s /bin/ftponly

zkuste se přihlásit jako sammy:

měli Byste vidět něco jako:

Output
This account is limited to FTP access only.Connection to 203.0.113.0 closed.

To potvrzuje, že uživatel již ssh k serveru a je omezena na FTP přístup.,

závěr

v tomto tutoriálu jsme se zabývali nastavením FTP pro uživatele s místním účtem. Pokud potřebujete použít externí zdroj autentizace, možná budete chtít podívat na podporu virtuálních uživatelů vsftpd. To nabízí bohatou sadu možností pomocí PAM, zásuvných autentizačních modulů, a je dobrou volbou, pokud spravujete uživatele v jiném systému, jako je LDAP nebo Kerberos.

Articles

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *