Jak Nastavit vsftpd pro Uživatele's Adresáři na Ubuntu 18.04

Ú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 kurzu, budete 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 18.04 server a non-root uživatele s sudo oprávněními: 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 18.04 průvodce.,

Krok 1 — Instalace vsftpd

Pojďme začít aktualizovat náš seznam balíčků a instalaci vsftpd daemon:

  • sudo apt update
  • sudo apt install vsftpd

po dokončení instalace, 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

zálohování 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, aby byl provoz FTP povolen, aby pravidla brány firewall neblokovala naše testy.

Zkontrolovat stav brány firewall:

  • 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.,

řekněme, otevřené porty 20 21 pro FTP, port 990 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 by měl nyní vypadat takto:

vsftpd instalované a potřebné porty otevřít, pojďme se přesunout na vytvoření specializovaného FTP uživatele.,

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

vytvoříme vyhrazeného uživatele FTP, 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 nebudete nakonfigurovat a testovat nastavení.

nejprve přidejte testovací uživatele:

  • sudo adduser sammy

při zadání hesla. Neváhejte stisknout ENTER prostřednictvím dalších výzev.,

FTP je obecně bezpečnější, když jsou uživatelé omezeni na konkrétní adresář. vsftpd to dosahujechroot 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 má také přístup k shellu.,

V tomto příkladu, spíše než odstranění napsat oprávnění z domovského adresáře, pojďme vytvořit ftp adresář sloužit jako chroot zápis files adresář držet skutečné soubory.,mise:

  • sudo ls -la /home/sammy/ftp
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 ..

Next, pojďme vytvořit adresář pro nahrávání souborů 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 ftp adresář by měl vrátit následující:

  • sudo ls -la /home/sammy/ftp

a Konečně, pojďme přidat test.txt soubor použít, když jsme test:

  • 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ář, pojďme změnit naše konfigurace.,

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

Next, pojďme umožnit uživateli nahrát soubory uncommenting write_enable nastavení:

/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. . .

Pojďme se také přidat user_sub_token chcete-li vložit uživatelské jméno v našich local_root directory cestě, takže naše nastavení bude fungovat pro tohoto uživatele a jakékoli další budoucí uživatele. Přidejte tato nastavení kdekoli v souboru:

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

Pojďme se také 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: v kroku 2 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.

povolit FTP přístup případ od případu, pojďme nastavit konfiguraci tak, že uživatelé mají přístup 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á logiky: Pokud je nastaven na YES uživatelé na seznamu byl odepřen přístup k FTP. Pokud je nastavena na NO, mají přístup pouze uživatelé v seznamu.

po dokončení změn uložte soubor a ukončete editor.

nakonec přidáme našeho uživatele do /etc/vsftpd.userlist., Pomocí -a vlajky připojit soubor:

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

Zkontrolujte, že je přidána jako byste očekávat, že:

  • cat /etc/vsftpd.userlist
Output
sammy

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

  • sudo systemctl restart vsftpd

S konfiguraci v místě, pojďme se přesunout na testování FTP přístup.

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

nakonfigurovali jsme server tak, aby umožnil připojení přes FTP pouze uživatelisammy. Ujistěte se, že to funguje podle očekávání.,

anonymní uživatelé by se neměli připojit: zakázali jsme anonymní přístup. Zkusme to vyzkoušet tím, že se pokusíme připojit anonymně. Pokud je naše konfigurace nastavena správně, anonymním uživatelům by mělo být odepřeno oprávnění. Otevřete další okno terminálu a spusťte následující příkaz. Ujistěte se, že nahradit 203.0.113.0 s váš server veřejná IP adresa:

  • ftp -p 203.0.113.0

připojení:

  • bye

Uživatelů jiných, než jsou sammy nepodařilo se připojit: Next, pojďme se zkuste se připojit jako naše uživatele sudo.,> by měl být schopen se připojit, číst a zapisovat soubory: Pojďme se ujistit, že naše určených uživatel může připojit:

  • ftp -p 203.0.113.0

změnit na files adresáře a pomocí 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

Next, pojďme 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, pojďme 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-li povolit protokol TLS/SSL, aby 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., Nastavením obou -keyout -out vlajky na stejnou hodnotu, soukromý klíč a certifikát bude umístěn ve stejném souboru:

  • 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í informace o adrese pro váš certifikát., Nahradit své vlastní informace pro zvýrazněné hodnoty pod:

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, uvidíte dva řádky, které začínají rsa_. Komentujte je tak, aby vypadaly takto:

/ 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é odkazují 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é k zajištění toho, aby veškerý provoz byl šifrován, ale může to 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. . .

Po tomto, nakonfigurovat server pomocí protokolu TLS, preferovaný nástupce SSL, přidáním následující řádky:

/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. . .

hotová část souboru by měla vypadat takto:

/ etc / vsftpd.conf

až budete hotovi, uložte a zavřete soubor.

Restartujte 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 spojit s FileZilla kvůli její podpoře mezi 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ě nad slovem Host, vlevo nejvíce ikona 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:


pod mými weby 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.

vyplňte pole hostitele jménem nebo IP adresou. V rozbalovací nabídce šifrování vyberte vyžadovat explicitní FTP přes TLS.

pro typ přihlášení vyberte možnost požádat o heslo. Vyplňte FTP uživatele do uživatelského pole:

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.,ficate, který vypadá takto:

Když jste přijali certifikát, poklepejte na files složku a přetáhněte upload.txt potvrďte, že jste schopni se soubory ke stažení:

Když jste udělal, že, klepněte pravým tlačítkem myši na místní kopie, přejmenovat na upload-tls.txt a přetáhněte ji zpět na server, aby potvrdil, že můžete nahrát soubory:

Jste teď potvrdil, že se můžete bezpečně a úspěšně převést soubory s SSL/TLS povoleno.,

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 bin adresář:

  • sudo nano /bin/ftponly

Přidat zprávu, říká uživateli, proč oni nejsou schopni se přihlásit:

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

Uložte soubor a ukončete editor.,Změnit 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

Nyní zkuste přihlášení na váš server 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í autentizační zdroj, možná budete chtít podívat dovsftpd‚s podporou virtuálních uživatelů. 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.

Napsat komentář

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