GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit FTP server s VSFTPD

Zapomněli jste někdy důležitý dokument na svém domácím počítači a pracujete v kanceláři? Nebo jednoduše chcete sdílet soubor s někým, kdo sedí vedle vás? FTP server jako Very Secure FTP Daemon (VSFTPD) je perfektní řešení.

V tomto tutoriálu se naučíte, jak nainstalovat a nakonfigurovat FPT server pomocí VSFTPD na vašem linuxovém serveru, abyste mohli bezpečně sdílet soubory mezi počítači.

Čtěte dál a už nikdy nedovolte, aby byly vaše soubory uvězněny ve vašem domácím počítači!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující.

  • Počítač Linux – Tento výukový program používá Ubuntu 20.04 LTS, ale budou fungovat všechny distribuce Linuxu.
  • Uživatel bez oprávnění root s právy sudo.

Instalace VSFTPD na Ubuntu

VSFTPD je FTP server pro systémy podobné Unixu, ale ve výchozím nastavení se neinstaluje. Instalace VSFTPD na Ubuntu je podobná jako při instalaci jiných balíčků. Zahajte tento tutoriál aktualizací správce balíčků APT před instalací VSFTPD.

1. Spusťte apt update příkaz pro aktualizaci APT. Tento příkaz načte seznamy balíčků z vašich nakonfigurovaných úložišť a aktualizuje místní mezipaměť balíčků.

sudo apt update -y

2. Dále spusťte apt install příkaz níže k instalaci VSFTPD na váš počítač. Tento příkaz také zavede všechny požadované závislosti pro službu FTP.

Ve výchozím nastavení je balíček VSFTPD dostupný ve většině moderních distribucí založených na Debianu. Můžete jej tedy nainstalovat bez dalších úložišť balíčků a nechat APT, aby se postaral o zbytek.

3. Nakonec spusťte systemctl níže, abyste ověřili, že služba VSFTPD běží a je správně nakonfigurována.

sudo systemctl status vsftpd 

Uvidíte výstup podobný tomu níže, který ukazuje, že služba vsftpd.service je aktivní (běží) a naslouchá požadavkům.

Otevření portů pro připojení FTP klienta

Nyní, když máte nainstalovanou nejnovější verzi VSFTPD, můžete nakonfigurovat firewall. UFW, výchozí konfigurační nástroj brány firewall pro Ubuntu, použijete k přidání pravidel brány firewall pro otevření portů pro zabezpečená připojení FTP klientů.

1. Spusťte ufw status Chcete-li zjistit, která pravidla brány firewall jsou aktuálně aktivní.

sudo ufw status

Níže vidíte, že firewall je aktivní, ale nemá žádná pravidla, která by ve výchozím nastavení povolovala jakákoli připojení.

2. Dále spusťte ufw allow níže, abyste povolili všem třem portům přes firewall. VSFTPD vyžaduje připojení FTP na portech 20 , 21 a 990 .

sudo ufw allow 20,21,990/tcp

3. Spusťte ufw příkazem níže otevřete 40000:50000 rozsah portů.

VSFTPD vyžaduje otevření rozsahu portů 40000:50000, aby klienti FTP mohli vytvářet datová připojení k serveru v pasivním režimu.

sudo ufw allow 40000:50000/tcp

4. Nakonec spusťte ufw status verbose příkaz níže, abyste ověřili, že jsou vaše pravidla brány firewall aktivní, a zkontrolujte chyby.

sudo ufw status verbose

Konfigurace serveru VSFTDP

Úspěšně jste povolili provoz přes bránu firewall, ale před jejím použitím musíte nakonfigurovat server VSFTPD.

Soubor /etc/vsftpd.conf file je hlavní konfigurační soubor pro VSFTPD. Pokud však dáváte přednost dynamickému provádění věcí, můžete také nakonfigurovat svůj FTP server pomocí jiných příkazů. Nebo chcete-li zadat pravidla, která nejsou k dispozici v konfiguračním souboru.

Během úpravy souboru /etc/vsftpd.conf zrušte odkomentování jednotlivých direktiv, abyste je povolili odstraněním symbolu # před nimi.

1. Spusťte sudo cp příkaz níže k zálohování původního konfiguračního souboru (/etc/vsftpd.conf /etc/vsftpd.conf.bak ).

Vždy byste měli zálohovat všechny důležité konfigurační soubory, než se pustíte do mačkání.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

2. Dále otevřete /etc/vsftpd.conf soubor ve vašem oblíbeném textovém editoru. Tato ukázka používá nano pro úpravu konfiguračního souboru.

sudo nano /etc/vsftpd.conf

3. Vyhledejte a změňte anonymní_povolit hodnota směrnice na NE. Pro veřejné sdílení souborů se běžně používají anonymní uživatelé. Tohoto anonymního uživatele na svém serveru nechcete. Místo toho budete chtít, aby byl váš FPT server zabezpečený.

Nastavte hodnotu direktivy local_enable na YES, abyste lidem s účty na vašem serveru umožnili přenášet soubory přes FTP. S touto konfigurací se na váš FTP server mohou přihlásit pouze oprávnění uživatelé.

4. Nyní změňte write_enable příkazu ANO aby vaši uživatelé mohli nahrávat a ukládat soubory na váš FTP server. Tato směrnice je nejdůležitější, protože řídí přístup k funkci nahrávání.

5. Změňte chroot_local_user příkazu ANO protože váš uživatel FPT by neměl běžet jako root. Vytvoření nového, možná privilegovaného uživatele pro službu FTP je mnohem bezpečnější (jak vytvořit vyhrazeného uživatele se dozvíte později).

Pokud tato direktiva není povolena, uživatel FPT bude mít přístup ke všemu na serveru, dokonce i ke kořenovému adresáři. Toto chování může představovat OBROVSKÝ bezpečnostní problém.

S touto konfigurací bude mít váš uživatel přístup pouze ke složkám, které určíte (ve většině případů k domovskému adresáři uživatele).

Ale když je hodnota direktivy chroot_local_user nastavena na YES, direktiva write_enable (krok 4) nebude fungovat, protože systémové volání chroot() odepře přístup k zápisu (je-li povoleno).

Řešením je přidání direktivy níže do souboru vsftpd.conf soubor, takže direktiva write_enable bude fungovat bez ohledu na hodnotu direktivy chroot_local_user.

allowed_writeable_chroot=YES

6. Dále přidejte níže uvedené směrnice do souboru vsftpd.conf soubor pro povolení pasivních FTP připojení.

VSFTPD může pro pasivní FTP připojení použít jakýkoli port nad 1024, který není obsazen jinou službou. Tato ukázka používá rozsah portů, který jste nastavili v části „Otevření portů pro připojení FTP klienta“ (krok tři).

pasv_min_port=35000
pasv_max_port=40000

7. Přidejte následující řádky na konec souboru vsftpd.conf aby se na FTP server mohli přihlásit pouze oprávnění uživatelé.

userlist_enable=YES
# Add the user to the vsftpd.userlist to allow a specific user 
# to use the system login account to access your FTP service.
userlist_file=/etc/vsftpd.userlist
# NO - anyone can log in with an anonymous account.
# YES - the user will be denied to login when their name exists in this file. 
userlist_deny=NO

8. Nakonec uložte a zavřete soubor vsftpd.conf a spusťte níže uvedený příkaz na restart vaše vsftpd serveru aplikujte změny.

sudo service vsftpd restart

Vytvoření vyhrazeného uživatele pro používání služby FTP

Nyní jste nakonfigurovali svůj server VSFTPD, ale budete potřebovat vyhrazeného uživatele, který bude používat službu FTP namísto uživatele root. V domovském adresáři uživatele vytvoříte adresář, aby byl adresář snadno přístupný.

1. Spusťte adduser příkaz níže k vytvoření nového uživatele. Můžete si vybrat libovolné uživatelské jméno, které chcete, ale tato ukázka vytvoří uživatele s názvem ata . Ale pamatujte, abyste neduplikovali uživatele jinde na vašem serveru.

sudo adduser ata

Poskytněte bezpečné heslo a poznamenejte si ho. Toto heslo použijete pro připojení k vašemu FTP serveru.

Musíte také zadat některé podrobnosti o novém uživateli nebo ponechat výchozí údaje stisknutím klávesy ENTER. Zadejte Y a stiskněte ENTER pro potvrzení uživatelských informací.

2. Dále spusťte níže uvedený příkaz a přidejte ata uživatele na vsftpd.userlist soubor.

Jak si vzpomínáte, tento soubor určuje, kteří uživatelé se mohou přihlásit přes FTP, když je hodnota direktivy userlist_deny nastavena na NO. V tomto okamžiku se k vašemu FTP serveru může přihlásit pouze uživatel ata a všem ostatním anonymním uživatelům bude přístup odepřen.

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

3. Spuštěním následujících příkazů nastavte správná oprávnění pro nový /home/ata/ftp adresář.

Níže uvedené příkazy zajišťují, že pouze váš vyhrazený uživatel FTP má přístup k adresáři /home/ata/ftp, a umožňují uživateli přenášet soubory do/z něj.

# Sets the owner of the /home/ata/ftp directory to be nobody.
sudo chown nobody:nogroup /home/ata/ftp
# Ensures that only the owner (your FTP user) 
# has write(w) access(a) to the /home/ata/ftp directory.
sudo chmod a-w /home/ata/ftp

4. Nyní spusťte chown příkaz k nastavení vlastníka a skupiny /home/ata/ftp/upload adresář k vašemu FTP uživateli (ata ). Příkaz také nastaví správná oprávnění pro /home/ata/ftp/upload adresář.

sudo chown ata:ata /home/ata/ftp/upload

5. Spusťte echo příkaz níže k vytvoření základního testovacího souboru s názvem ata.txt .

Níže uvedený příkaz vytvoří ve vašem FTP adresáři nový soubor s názvem ata.txt a do textového souboru zahrne nějaký text (vsftpd testovací soubor).

echo "vsftpd test file" | sudo tee /home/ata/ftp/upload/ata.txt

V tomto okamžiku jste plně nakonfigurovali svůj FPT server a vaši uživatelé se k němu mohou připojit.

Připojení k serveru FTP

Po konfiguraci vyhrazeného uživatele FTP je konečně čas připojit se k vašemu FTP serveru. Nejprve se však pokusíte připojit k vašemu FTP serveru pomocí anonymního uživatele, abyste otestovali, zda je váš FTP server bezpečný.

1. Spusťte ftp -p příkaz níže pro připojení k vašemu FTP serveru. Nahraďte your-server-ip s vaší skutečnou IP adresou serveru.

ftp -p your-server-ip

Zkuste se přihlásit jako anonymní uživatel a zobrazí se následující chybová zpráva. Tento výstup potvrzuje, že váš FTP server je zabezpečený, protože k vašemu serveru má přístup pouze váš vyhrazený uživatel FTP.

2. Spusťte bye příkaz pro ukončení FTP klienta.

bye

3. Spusťte znovu ftp níže, stejně jako v prvním kroku. Tentokrát se však přihlaste jako vyhrazený uživatel FTP (ata).

ftp -p your-server-ip

Obdržíte zprávu 230 úspěšné přihlášení, jak je uvedeno níže, která potvrzuje, že váš FTP server funguje tak, jak má.

4. Nyní spusťte každý níže uvedený příkaz a potvrďte ata.txt soubor existuje v ftp/upload adresář.

Soubor ata.txt soubor je to, co jste vytvořili dříve v části „Vytvoření vyhrazeného uživatele pro použití služby FTP“ (krok 5).

# Change to the ftp/upload directory as the working directory.
cd ftp/upload
# List all files in the working directory.
ls

5. Spusťte get příkaz níže ke stažení souboru (ata.txt ) ze serveru FTP a uložte jej na místní počítač.

 get ata.txt

Níže můžete vidět potvrzovací zprávu, která říká Přenos dokončen.

6. Dále spusťte put příkaz níže k nahrání ata.txt soubor z vašeho místního počítače jako nový soubor s názvem ata2.txt na váš FTP server.

put ata.txt ata2.txt

7. Nakonec znovu spusťte ls příkaz k vypsání všech souborů v aktuálním adresáři a ověření, že ata2.txt byl úspěšně nahrán vaším uživatelem.

ls

Pokud byl předchozí přenos souborů (kroky sedm až osm) úspěšný, uvidíte dva textové soubory:jeden s názvem ata.txt a druhý s názvem ata2.txt, jak je uvedeno níže.

Zakázání přístupu k prostředí

Když vytvoříte nového uživatele FTP, váš FTP server tomuto uživateli automaticky umožní přihlásit se a spustit shell. Výsledkem je, že kromě nahrávání a stahování souborů mohou vaši uživatelé také spouštět potenciálně nebezpečné systémové příkazy na vašem FTP serveru.

Když nepoužíváte FTP server, můžete zakázat přístup k shellu, abyste uživatelům zabránili v přihlášení pomocí SSH. To je zvláště důležité, pokud máte pro svého vyhrazeného uživatele FTP povoleno přihlášení bez hesla.

1. Otevřete jiný terminál na svém serveru a spusťte níže uvedený příkaz na ssh na server FPT pomocí vyhrazeného uživatele FTP (ata ).

ssh [email protected]

Jak je uvedeno níže, můžete se úspěšně přihlásit pomocí uživatelského jména ata s heslem, které jste vytvořili dříve v části „Vytvoření vyhrazeného uživatele pro použití služby FTP“.

Toto chování znamená, že uživatel ata může na vašem serveru spouštět libovolné příkazy, včetně změny konfigurace serveru. Kompromitovaný uživatel FTP může způsobit mnohem větší škody než anonymní.

2. Dále spusťte níže uvedený příkaz a vytvořte nový shell skript s názvem ftponly.sh v /bin adresář vašeho FPT serveru. Tento skript zakáže jakékoli přihlášení k FTP od vašeho vyhrazeného uživatele FTP pro váš FTP server. Skript se poté vytiskne (echo ) výstražná zpráva na obrazovce, která říká This account is limited to FTP access only .

 echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponly .sh 

3. Spusťte níže uvedený chmod příkaz k nastavení správných oprávnění pro tento nový shell skript (/bin/ftponly ). Tento příkaz učiní skript spustitelný a umožní jeho spuštění vašemu FTP uživateli (ata).

sudo chmod a+x /bin/ftponly

4. Nyní spusťte níže uvedený příkaz a přidejte cestu k novému shell skriptu (ftponly ) ve vašem /etc/shells soubor. Tato akce zajistí, že jakékoli přihlášení, které se pokusíte pomocí svého uživatele ata, bude odmítnuto od /bin/ftponly místo toho bude skript vykonán.

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

5. Spusťte usermod příkaz níže pro změnu aktuálního shellu vašeho FTP uživatele (ata) na /bin/ftponly skořápka.

sudo usermod ata -s /bin/ftponly 

6. Nakonec spusťte níže uvedený příkaz pro SSH na váš FPT server pomocí vašeho FTP uživatele (ata ).

ssh [email protected]

Jak je uvedeno níže, váš vyhrazený uživatel FTP nemůže SSH na váš FTP server. Toto chování se očekává od /bin/ftponly shell skript vypíše varovnou zprávu a uzavře připojení SSH (uzavřeno).

Závěr

V tomto tutoriálu jste se naučili, jak nainstalovat a nakonfigurovat FTP server v Ubuntu Linux pomocí VSFTPD. Také jste se naučili, jak nakonfigurovat FTP uživatele s omezeným přístupem a omezit přístup FTP uživatele shellu.

V tomto okamžiku byste měli mít funkční FTP server s omezeným přístupem.

S těmito nově získanými znalostmi můžete nyní nakonfigurovat svůj FTP server na AWS EC2 nebo můžete začít nastavovat FTP server na vašem Raspberry Pi. Na kterém byste se rozhodli začít pracovat?


Linux
  1. Jak nainstalovat FTP server na CentOS 7 s VSFTPD

  2. Jak nainstalovat FTP server na Rocky Linux 8 s VSFTPD

  3. Nastavení FTP serveru s vsFTPd na Raspberry Pi

  1. Jak nainstalovat FTP server na Ubuntu s vsftpd

  2. Jak nastavit souborový server vsftpd FTP na Redhat 7 Linux

  3. Jak nastavit FTP server na Ubuntu 20.04 Focal Fossa Linux

  1. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  2. Jak nastavit FTP server s VSFTPD na Ubuntu 18.04

  3. Jak nastavit FTP server s VSFTPD na CentOS 7