Ovaj članak opisuje kako instalirati i konfigurirati FTP poslužitelj na Ubuntu 20.04 koju upotrebljavate za dijeljenje datoteka između svojih uređaja.
FTP (File Transfer Protocol) je standardni mrežni protokol koji se koristi za prijenos datoteka na i s udaljene mreže. Za Linux postoji nekoliko FTP poslužitelja otvorenog koda. Najpoznatiji i najrašireniji su PureFTPd, ProFTPD i vsftpd . Instalirat ćemo vsftpd (Very Secure Ftp Daemon), stabilan, siguran i brz FTP poslužitelj. Pokazat ćemo vam i kako konfigurirati poslužitelj tako da ograniči korisnike na njihov kućni direktorij i šifrira cijeli prijenos SSL / TLS-om.
Iako je FTP vrlo popularan protokol, za sigurniji i brži prijenos podataka trebali biste koristiti SCP ili SFTP .
Instaliranje vsftpd na Ubuntu 20.04 #
Paket vsftpd dostupan je u Ubuntu spremištima. Da biste ga instalirali, izvršite sljedeće naredbe:
sudo apt ažuriranje
sudo apt instalirati vsftpd
FTP usluga automatski će se pokrenuti nakon završetka postupka instalacije. Da biste je provjerili, ispišite status usluge:
sudo systemctl status vsftpd
Izlaz bi trebao pokazati da je usluga vsftpd aktivna i radi:
● vsftpd.usluga - vsftpd FTP poslužitelj Loaded: loaded (/ lib / systemd / system / vsftpd.servis; omogućeno; unaprijed postavljeno: dobavljač aktivan: aktivan (aktivan) od utorka 2021-03-02 15:17:22 UTC; Prije 3s ..
Konfiguriranje vsftpd #
Konfiguracija vsftpd poslužitelja pohranjena je u / etc / vsftpd.konf
datoteka.
Većina postavki poslužitelja dobro je dokumentirana unutar datoteke. Za sve dostupne opcije posjetite stranicu dokumentacije vsftpd.
U sljedećim odjeljcima proći ćemo kroz neke važne postavke potrebne za konfiguriranje sigurne vsftpd instalacije.
Započnite otvaranjem datoteke konfiguracije vsftpd:
sudo nano / etc / vsftpd.konf
1. FTP pristup #
Pristup FTP poslužitelju dopustit ćemo samo lokalnim korisnicima. Potražite anonimno_enable
i local_enable
direktive i potvrdite da se vaša konfiguracija podudara s donjim redovima:
anonimno_enable = NEMA local_enable = DA
2. Omogućavanje prijenosa #
Pronađite i nekomentirajte write_enable
direktivu koja dopušta promjene datotečnog sustava, poput prijenosa i uklanjanja datoteka:
write_enable = DA
3. Chroot zatvor #
Da biste spriječili lokalne FTP korisnike da pristupe datotekama izvan svojih kućnih direktorija, uklonite komentar iz lne-a počevši sa chroot_local_user
:
chroot_local_user = DA
Prema zadanim postavkama, iz sigurnosnih razloga, kada je omogućen chroot, vsftpd će odbiti učitavanje datoteka ako je u direktorij u kojem su korisnici zaključani moguće pisati.
Upotrijebite jedno od rješenja u nastavku da biste omogućili prijenose kada je omogućen chroot:
Metoda 1. - Preporučena opcija je da funkcija chroot ostane omogućena i konfigurirate FTP direktorije. U ovom ćemo primjeru stvoriti
/ etc / vsftpd.konfftp
direktorij unutar korisničke kuće, koji će služiti kao chroot i za pisanjeučitavanja
direktorij za prijenos datoteka:user_sub_token = $ USER local_root = / home / $ USER / ftp
Metoda 2. - Druga je mogućnost omogućiti
/ etc / vsftpd.konfallow_writeable_chroot
direktiva:allow_writeable_chroot = DA
Koristite ovu opciju samo ako svom korisniku morate odobriti pristup s pristupom za pisanje njegovom početnom direktoriju.
4. Pasivne FTP veze #
Prema zadanim postavkama vsftpd koristi aktivni način rada. Da biste koristili pasivni način rada, postavite minimalni i maksimalni raspon priključaka:
/ etc / vsftpd.konfpasv_min_port = 30000 pasv_max_port = 31000
Možete koristiti bilo koji priključak za pasivne FTP veze. Kad je omogućen pasivni način rada, FTP klijent otvara vezu sa poslužiteljem na slučajnom priključku u rasponu koji ste odabrali.
5. Ograničavanje prijave korisnika #
Možete konfigurirati vsftpd da dozvoli prijavu samo određenim korisnicima. Da biste to učinili, dodajte sljedeće retke na kraj datoteke:
/ etc / vsftpd.konfuserlist_enable = DA userlist_file = / etc / vsftpd.user_list userlist_deny = NE
Kada je ova opcija omogućena, morate izričito navesti koji se korisnici mogu prijaviti dodavanjem korisničkih imena u / etc / vsftpd.popis korisnika
datoteka (jedan korisnik u retku).
6. Osiguravanje prijenosa pomoću SSL / TLS-a #
Da biste šifrirali FTP prijenos SSL / TLS-om, morat ćete imati SSL certifikat i konfigurirati FTP poslužitelj da ga koristi.
Možete koristiti postojeći SSL certifikat koji je potpisalo pouzdano tijelo za izdavanje certifikata ili stvoriti samopotpisan certifikat.
Ako imate domenu ili poddomenu koja upućuje na IP adresu FTP poslužitelja, možete brzo generirati besplatni Let's Encrypt SSL certifikat.
Generirat ćemo 2048-bitni privatni ključ i samopotpisani SSL certifikat koji će vrijediti deset godina:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.pem
I privatni ključ i certifikat spremit će se u istu datoteku.
Jednom kada se SSL certifikat kreira, otvorite vsftpd konfiguracijsku datoteku:
sudo nano / etc / vsftpd.konf
Naći rsa_cert_file
i rsa_private_key_file
smjernice, promijenite njihove vrijednosti u pam
putanju datoteke i postavite ssl_enable
direktiva da DA
:
rsa_cert_file = / etc / ssl / private / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = DA
Ako nije drugačije naznačeno, FTP poslužitelj upotrebljavat će samo TLS za uspostavljanje sigurnih veza.
Ponovo pokrenite uslugu vsftpd #
Kad završite s uređivanjem, konfiguracijska datoteka vsftpd (bez komentara) trebala bi izgledati otprilike ovako:
/ etc / vsftpd.konfListen = NE Listen_ipv6 = DA anonimno_enable = NE local_enable = DA write_enable = DA dirmessage_enable = DA use_localtime = DA xferlog_enable = DA connect_from_port_20 = DA chroot_local_user = DA secure_chroot_dir = / var / ime / vs_ftft / var / ime / vs_ft / vsft privatno / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = DA user_sub_token = $ USER local_root = / home / $ USER / ftp pasv_min_port = 30000 pasv_max_port = 31000 userlist_enable = DA userlist_file = / etc / vsftpd.user_list userlist_deny = NE
Spremite datoteku i ponovo pokrenite uslugu vsftpd da bi promjene stupile na snagu:
sudo systemctl ponovno pokreni vsftpd
Otvaranje vatrozida #
Ako koristite UFW vatrozid, morat ćete omogućiti FTP promet.
Otvoriti luku 21
(FTP naredbeni port), port 20
(FTP podatkovni port) i 30000-31000
(Raspon pasivnih priključaka), pokrenite sljedeće naredbe:
sudo ufw dopustiti 20: 21 / tcp
sudo ufw dopustiti 30000: 31000 / tcp
Da biste izbjegli zaključavanje, osigurajte priključak 22
otvoreno je:
sudo ufw dopustiti OpenSSH
Ponovno učitajte UFW pravila onemogućavanjem i ponovnim omogućavanjem UFW:
sudo ufw onesposobiti
sudo ufw omogućiti
Da biste potvrdili pokretanje promjena:
sudo ufw status
Status: aktivan Za akciju od - ------ ---- 20: 21 / tcp DOZVOLI bilo gdje 30000: 31000 / tcp DOZVOLI bilo gdje OpenSSH DOZVOLI bilo gdje 20: 21 / tcp (v6) DOZVOLI bilo gdje (v6) 30000: 31000 / tcp (v6) DOZVOLI bilo gdje (v6) OpenSSH (v6) DOZVOLI bilo gdje (v6)
Stvaranje FTP korisnika #
Da bismo testirali FTP poslužitelj, stvorit ćemo novog korisnika.
- Ako korisnik kojem želite odobriti FTP pristup već postoji, preskočite 1. korak.
- Ako postavite
allow_writeable_chroot = DA
u svojoj konfiguracijskoj datoteci preskočite 3. korak.
Izradite novog korisnika s imenom
newftpuser
:sudo adduser newftpuser
Dodajte korisnika na popis dopuštenih FTP korisnika:
echo "newftpuser" | sudo tee -a / etc / vsftpd.popis korisnika
Stvorite stablo FTP direktorija i postavite ispravna dopuštenja:
sudo mkdir -p / home / newftpuser / ftp / upload
sudo chmod 550 / home / newftpuser / ftp
sudo chmod 750 / home / newftpuser / ftp / upload
sudo chown -R newftpuser: / home / newftpuser / ftp
Kao što je objašnjeno u prethodnom odjeljku, korisnik će moći prenijeti svoje datoteke na
ftp / upload
imenik.
U ovom je trenutku vaš FTP poslužitelj potpuno funkcionalan. Trebali biste se moći povezati s poslužiteljem pomoću bilo kojeg FTP klijenta koji se može konfigurirati za upotrebu TLS šifriranja, kao što je FileZilla .
Onemogućavanje pristupa školjki #
Prema zadanim postavkama, prilikom stvaranja korisnika, ako nije izričito navedeno, korisnik će imati SSH pristup poslužitelju. Da biste onemogućili pristup ljusci, stvorite novu ljusku koja će ispisati poruku koja govori korisniku da je njihov račun ograničen samo na FTP pristup.
Izvedite sljedeće naredbe da biste kreirali / bin / ftponly
datoteku i učinite je izvršnom:
echo -e '#!/ bin / sh \ necho "Ovaj je račun ograničen samo na FTP pristup."'| sudo tee -a / bin / ftponly
sudo chmod a + x / bin / ftponly
Dodajte novu ljusku na popis važećih ljuski u / itd. / ljuske
datoteka:
echo "/ bin / ftponly" | sudo tee -a / itd / školjke
Promijenite korisničku ljusku u / bin / ftponly
:
sudo usermod newftpuser -s / bin / ftponly
Istu naredbu možete koristiti za promjenu ljuske svih korisnika kojima želite dati samo FTP pristup.
Zaključak #
Pokazali smo vam kako instalirati i konfigurirati siguran i brz FTP poslužitelj na vašem Ubuntu 20.04 sustav.
Ako imate pitanja ili povratne informacije, slobodno ostavite komentar.