Šiame straipsnyje aprašoma, kaip įdiegti ir konfigūruoti FTP serverį „Ubuntu 20“.04, kurį naudojate dalindamiesi failais tarp savo įrenginių.
FTP (File Transfer Protocol) yra standartinis tinklo protokolas, naudojamas failams perkelti į nuotolinį tinklą ir iš jo. „Linux“ yra keli atvirojo kodo FTP serveriai. Labiausiai žinomos ir plačiausiai naudojamos yra „PureFTPd“, „ProFTPD“ ir „vsftpd“ . Diegsime stabilų, saugų ir greitą FTP serverį vsftpd (Very Secure Ftp Daemon). Mes taip pat parodysime, kaip sukonfigūruoti serverį, kad vartotojai būtų apriboti savo namų katalogu ir užšifruotų visą perdavimą SSL / TLS.
Nors FTP yra labai populiarus protokolas, norint saugiau ir greičiau perduoti duomenis, turėtumėte naudoti SCP arba SFTP .
„Vsftpd“ diegimas „Ubuntu 20“.04 #
„Vsftpd“ paketą galima rasti „Ubuntu“ saugyklose. Norėdami jį įdiegti, vykdykite šias komandas:
sudo apt atnaujinimas
sudo apt install vsftpd
FTP paslauga bus automatiškai paleista baigus diegimo procesą. Norėdami tai patikrinti, atsispausdinkite paslaugos būseną:
sudo systemctl status vsftpd
Išvestis turėtų parodyti, kad vsftpd paslauga yra aktyvi ir veikia:
● vsftpd.tarnyba - vsftpd FTP serveris Įkelta: pakrauta (/ lib / systemd / system / vsftpd.aptarnavimas; įjungtas; išankstinis pardavėjo nustatymas: įjungtas) Aktyvus: aktyvus (veikia) nuo 2021-03-02, 15:17:22 UTC; Prieš 3 s ..
Konfigūruojamas vsftpd #
Serverio „vsftpd“ konfigūracija saugoma / etc / vsftpd.konf
failą.
Dauguma serverio nustatymų yra gerai dokumentuoti failo viduje. Norėdami pamatyti visas galimas parinktis, apsilankykite vsftpd dokumentacijos puslapyje.
Tolesniuose skyriuose apžvelgsime keletą svarbių nustatymų, reikalingų konfigūruoti saugų vsftpd diegimą.
Pradėkite atidarydami vsftpd konfigūracijos failą:
sudo nano / etc / vsftpd.konf
1. FTP prieigos Nr
Leisime prieigą prie FTP serverio tik vietiniams vartotojams. Ieškokite anonimas_įgalinamas
ir local_enable
direktyvas ir patikrinkite, ar jūsų konfigūracija atitinka toliau pateiktas eilutes:
anonymous_enable = NE local_enable = TAIP
2. Įgalinamas įkėlimas #
Suraskite ir atžymėkite rašyti_įgalinti
direktyvą, leidžiančią keisti failų sistemą, pvz., įkelti ir pašalinti failus:
write_enable = TAIP
3. Chroot kalėjimas #
Jei norite, kad vietiniai FTP vartotojai negalėtų pasiekti failų ne savo namų kataloguose, pradėkite nuo komentarų chroot_local_user
:
chroot_local_user = TAIP
Pagal numatytuosius nustatymus saugumo sumetimais, kai „chroot“ yra įjungta, „vsftpd“ atsisakys įkelti failus, jei katalogas, kuriame vartotojai yra užrakinti, yra įrašomas.
Norėdami leisti įkelti, kai įgalinta „chroot“, naudokite vieną iš toliau pateiktų sprendimų:
1 metodas. - Rekomenduojama parinktis yra išlaikyti įjungtą „chroot“ funkciją ir konfigūruoti FTP katalogus. Šiame pavyzdyje sukursime
/ etc / vsftpd.konfftp
katalogas vartotojo namuose, kuris bus naudojamas kaip įrašas ir įrašomasis elementasįkėlimai
katalogas failams įkelti:user_sub_token = $ USER local_root = / home / $ USER / ftp
2 metodas. - Kita galimybė yra įjungti
/ etc / vsftpd.konfleisti_rašoma_chroot
direktyva:allow_writeable_chroot = TAIP
Naudokite šią parinktį tik tuo atveju, jei turite suteikti vartotojui rašytinę prieigą prie jo namų katalogo.
4. Pasyvios FTP jungtys
Pagal numatytuosius nustatymus „vsftpd“ naudoja aktyvųjį režimą. Norėdami naudoti pasyvųjį režimą, nustatykite mažiausią ir didžiausią prievadų diapazoną:
/ etc / vsftpd.konfpasv_min_port = 30000 pasv_max_port = 31000
Pasyviems FTP ryšiams galite naudoti bet kurį prievadą. Kai įjungtas pasyvusis režimas, FTP klientas atidaro ryšį su serveriu atsitiktiniame jūsų pasirinkto diapazono prievade.
5. Vartotojo prisijungimo apribojimas #
Galite sukonfigūruoti vsftpd, kad tik tam tikri vartotojai galėtų prisijungti. Norėdami tai padaryti, failo pabaigoje pridėkite šias eilutes:
/ etc / vsftpd.konfuserlist_enable = TAIP userlist_file = / etc / vsftpd.user_list userlist_deny = NE
Kai ši parinktis įgalinta, turite aiškiai nurodyti, kurie vartotojai gali prisijungti, pridėdami vartotojo vardus prie / etc / vsftpd.user_list
failas (po vieną vartotoją kiekvienoje eilutėje).
6. Perdavimo užtikrinimas naudojant SSL / TLS #
Norėdami užšifruoti FTP perdavimus naudodami SSL / TLS, turite turėti SSL sertifikatą ir sukonfigūruoti FTP serverį, kad jį naudotumėte.
Galite naudoti esamą SSL sertifikatą, pasirašytą patikimos sertifikato institucijos, arba sukurti savarankiškai pasirašytą sertifikatą.
Jei turite domeną ar padomenį, nukreipiantį į FTP serverio IP adresą, galite greitai sugeneruoti nemokamą „Let's Encrypt SSL“ sertifikatą.
Sukursime 2048 bitų privatų raktą ir savarankiškai pasirašytą SSL sertifikatą, kuris galios dešimt metų:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.pem
Tiek privatus raktas, tiek sertifikatas bus išsaugoti tame pačiame faile.
Kai bus sukurtas SSL sertifikatas, atidarykite vsftpd konfigūracijos failą:
sudo nano / etc / vsftpd.konf
Surask rsa_cert_file
ir rsa_private_key_file
pakeisti jų vertybes į pam
failo kelią ir nustatykite ssl_enable
direktyva TAIP
:
rsa_cert_file = / etc / ssl / private / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = TAIP
Jei nenurodyta kitaip, FTP serveris naudos tik TLS saugiems ryšiams užmegzti.
Iš naujo paleiskite „vsftpd“ paslaugą #
Baigę redaguoti, vsftpd konfigūracijos failas (išskyrus komentarus) turėtų atrodyti maždaug taip:
/ etc / vsftpd.konfklausytis = NE klausytis_ipv6 = TAIP anonimas_įgalinti = NĖRA vietinis_įgalėti = TAIP rašyti_įgalėti = TAIP dirmessage_enable = YES use_localtime = YES xferlog_enable = YES connect_from_port_20 = YES chroot_local_user = YES secure_chroot_dir_p = / var / paleisti / vs / var / paleisti / vs / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / paleisti / etc / var / run / tt privatus / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = TAIP user_sub_token = $ USER local_root = / home / $ USER / ftp pasv_min_port = 30000 pasv_max_port = 31000 userlist_enable = TAIP userlist_file = / etc / vsftpd.user_list userlist_deny = NE
Išsaugokite failą ir iš naujo paleiskite vsftpd paslaugą, kad pakeitimai įsigaliotų:
sudo systemctl paleiskite iš naujo vsftpd
Ugniasienės atidarymas #
Jei naudojate UFW užkardą, turėsite leisti FTP srautą.
Norėdami atidaryti uostą 21
(FTP komandų prievadas), prievadas 20
(FTP duomenų prievadas) ir 30000-31000
(Pasyviųjų prievadų diapazonas), vykdykite šias komandas:
sudo ufw leisti 20: 21 / tcp
sudo ufw leisti 30000: 31000 / tcp
Kad išvengtumėte užrakinimo, patikrinkite prievadą 22
atidarytas:
sudo ufw leisti OpenSSH
Perkraukite UFW taisykles išjungdami ir iš naujo įgalindami UFW:
sudo ufw išjungti
sudo ufw įjungti
Norėdami patikrinti atliktus pakeitimus:
sudo ufw būsena
Būsena: aktyvi Į veiksmą nuo - ------ ---- 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)
Kuriamas FTP vartotojas #
Norėdami išbandyti FTP serverį, sukursime naują vartotoją.
- Jei vartotojas, kuriam norite suteikti FTP prieigą, jau yra, praleiskite pirmąjį veiksmą.
- Jei nustatysite
allow_writeable_chroot = TAIP
konfigūracijos faile praleiskite 3 veiksmą.
Sukurkite naują vartotoją pavadinimu
naujokas
:sudo adduser newftpuser
Pridėkite vartotoją prie leidžiamų FTP vartotojų sąrašo:
aidas "newftpuser" | sudo tee -a / etc / vsftpd.user_list
Sukurkite FTP katalogo medį ir nustatykite teisingus leidimus:
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
Kaip aptarta ankstesniame skyriuje, vartotojas galės įkelti savo failus į
ftp / įkelti
kataloge.
Šiuo metu jūsų FTP serveris veikia visiškai. Turėtumėte sugebėti prisijungti prie serverio naudodami bet kurį FTP klientą, kurį galima sukonfigūruoti naudoti TLS šifravimą, pvz., „FileZilla“ .
„Shell“ prieigos išjungimas #
Pagal numatytuosius nustatymus, kurdamas vartotoją, jei jis nėra aiškiai nurodytas, vartotojas turės SSH prieigą prie serverio. Norėdami išjungti prieigą prie apvalkalo, sukurkite naują apvalkalą, kuris išspausdins pranešimą, kuriame vartotojui bus pranešta, kad jo paskyra ribojama tik FTP prieiga.
Paleiskite šias komandas, kad sukurtumėte / bin / ftponly
failą ir padaryti jį vykdomą:
aidas -e '#!/ bin / sh \ necho "Ši paskyra ribojama tik FTP prieiga."'| sudo tee -a / bin / ftponly
sudo chmod a + x / bin / ftponly
Pridėkite naują apvalkalą prie galiojančių apvalkalų sąrašo / etc / lukštai
failas:
aidas "/ bin / ftponly" | sudo tee -a / etc / lukštai
Pakeiskite vartotojo apvalkalą į / bin / ftponly
:
sudo usermod newftpuser -s / bin / ftponly
Ta pačia komanda galite pakeisti visų vartotojų, kuriems norite suteikti tik FTP prieigą, apvalkalą.
Išvada Nr
Parodėme, kaip įdiegti ir konfigūruoti saugų ir greitą FTP serverį „Ubuntu 20“.04 sistema.
Jei turite klausimų ar atsiliepimų, palikite komentarą.