FTP strežnik
Učni list 8: Vzpostavitev FTP strežnika z vsftpd¶
Namen vaje¶
Tvoja naloga je, da spoznaš klasičen protokol FTP, njegovo konfiguracijo ter praktične razlike med aktivnim in pasivnim načinom prenosa.
Kako brati mikro razlage¶
- razčlenitev sintakse — kaj pomeni posamezni del ukaza
- kaj se zgodi po pritisku Enter — neposredna posledica v sistemu ali omrežju
- na kaj ukaz vpliva — datoteka, proces ali port
- kaj pričakuješ kot rezultat — konkretna kontrolna točka
Cilj je, da ne ostaneš na ravni prepisal sem ukaz, ampak prideš do ravni vem, zakaj sem ga izvedel in kaj moram po njem preveriti.
Cilji¶
- znaš namestiti
vsftpd - znaš omogočiti prijavo lokalnim uporabnikom
- razumeš, zakaj je FTP protokol poseben zaradi ločene podatkovne povezave
- znaš s klienta naložiti in prenesti datoteko
- znaš nastaviti pasivni portni razpon
Potrebna oprema in predznanje¶
- strežnik in klient komunicirata po omrežju
- razumeš pojem port in požarni zid
Teorija v ozadju¶
FTP je starejši protokol za prenos datotek. Klasično uporablja port 21/TCP za ukaze in ločeno podatkovno povezavo za sam prenos vsebine.
Prav ta ločena podatkovna povezava povzroča veliko zmede pri požarnih zidovih in NAT-u. Zato je FTP odličen za razlago, zakaj nekateri protokoli niso tako enostavni kot “en port, en servis”.
V laboratoriju bomo uporabili vsftpd, ker je razmeroma enostaven in dovolj pregleden za izobraževalno rabo.
Zapomni si praktično razliko: v aktivnem načinu strežnik odpira podatkovno povezavo nazaj proti klientu, v pasivnem načinu pa klient odpira tudi podatkovno povezavo proti strežniku. Zato je pasivni način v praksi praviloma precej prijaznejši do požarnih zidov in NAT-a.
Na kaj je treba paziti¶
- FTP brez TLS ni primeren za občutljive produkcijske podatke, ker uporabniško ime in geslo nista ustrezno zaščitena.
- Za laboratorij je v redu, za pravi internet pa ne prodajaj tega kot moderno rešitev.
- Pasivni porti morajo biti usklajeni z nastavitvami strežnika in požarnim zidom, sicer se prijava morda izvede, prenos pa ne.
Kako brati to vajo
Vsak korak ima tri plasti: kaj narediš, kaj ukaz pomeni in kaj se v ozadju zgodi v sistemu ali omrežju. Cilj ni slepo kopiranje ukazov, ampak razumevanje, zakaj posamezni korak obstaja.
Navodila po korakih¶
1. Namesti vsftpd na strežniku¶
Kaj narediš
Namesti FTP strežnik.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo apt update
- Razčlenitev sintakse:
sudoukaz izvede z administratorskimi pravicami.aptje upravljalnik paketov na Debian/Ubuntu sistemih.updatene namešča programov; samo osveži lokalni seznam paketov iz repozitorijev.- Kaj se zgodi po pritisku Enter: Sistem osveži lokalne informacije o paketih. Ni še spremembe storitev, ampak priprava na korektno namestitev ali posodobitev.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo apt install vsftpd -y
- Razčlenitev sintakse:
installnamesti navedene pakete:vsftpd.-ysamodejno potrdi namestitev.- Kaj se zgodi po pritisku Enter: Na sistem se namesti nov paket oziroma storitev. Ob tem se pogosto ustvarijo konfiguracijske datoteke, sistemska enota
systemdin včasih se servis zažene že sam. - Na kaj ta ukaz vpliva:
- Datoteke:
/etc/vsftpd.conf - Procesi/storitve:
vsftpd - Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Paket se namesti brez napake, na koncu pa ni vrstice tipa
E:alifailed.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
vsftpd pomeni “Very Secure FTP Daemon”. Paket namesti servis in osnovno konfiguracijo.
Kaj se dogaja v ozadju
Po namestitvi sistem dobi proces, ki posluša na portu 21/TCP.
Kaj moraš opaziti
Servis se po namestitvi običajno sam zažene.
Če ne dela, preveri
- Če servis po namestitvi ne teče, preveri
systemctl status vsftpd.
2. Naredi varnostno kopijo konfiguracije in uredi osnovne nastavitve¶
Kaj narediš
Pred spremembo shrani kopijo in nastavi lokalno prijavo, pisanje ter pasivni način.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
- Razčlenitev sintakse:
cpkopira datoteko iz/etc/vsftpd.confv/etc/vsftpd.conf.bak.- Pri strežniških konfiguracijah to pogosto pomeni: vzemi predlogo in jo prilagodi svoji laboratorijski domeni.
- Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
- Na kaj ta ukaz vpliva:
- Datoteke:
/etc/vsftpd.conf - Procesi/storitve:
vsftpd - Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo nano /etc/vsftpd.conf
- Razčlenitev sintakse:
nanoodpre besedilno datoteko v terminalskem urejevalniku.- Odpira se datoteka
/etc/vsftpd.conf. Če datoteka še ne obstaja, jo boš ob shranjevanju ustvaril. - Kaj se zgodi po pritisku Enter: Sprememba se še ne zgodi v teku storitve. Najprej spremeniš datoteko na disku; učinek nastopi šele po restartu ali reloadu storitve.
- Na kaj ta ukaz vpliva:
- Datoteke:
/etc/vsftpd.conf - Procesi/storitve:
vsftpd - Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Primer konfiguracije
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40010
Kaj ta korak pomeni
Izklopiš anonimni dostop, dovoliš lokalnim uporabnikom prijavo in zapisovanje, uporabnike zapreš v njihov domači imenik (chroot) in določiš razpon pasivnih podatkovnih portov.
Kaj se dogaja v ozadju
Pri pasivnem FTP klient od strežnika zahteva, naj odpre podatkovni port iz določenega razpona. Zato moraš ta razpon predvideti in ga po potrebi odpreti tudi v požarnem zidu.
Kaj moraš opaziti
Konfiguracija vsebuje le najbolj didaktično pomembne vrstice, ne cele enciklopedije FTP možnosti.
Če ne dela, preveri
- Če
chrootin pravice niso usklajeni, se lahko prijava uspe, dostop do pisanja pa ne.
3. Ponovno zaženi servis in preveri poslušanje¶
Kaj narediš
Naloži novo konfiguracijo in preveri, ali FTP posluša.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo systemctl restart vsftpd
- Razčlenitev sintakse:
restartustavi in ponovno zažene enotovsftpd. To je potrebno po spremembi konfiguracije.- Kaj se zgodi po pritisku Enter: Proces storitve ponovno prebere konfiguracijo. Če je konfiguracija napačna, se storitev lahko ne zažene ali ostane v stanju napake.
- Na kaj ta ukaz vpliva:
- Datoteke:
/etc/vsftpd.conf - Procesi/storitve:
vsftpd - Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo systemctl status vsftpd
- Razčlenitev sintakse:
systemctlupravlja storitve vsystemd.status vsftpdpokaže, ali je enotavsftpdaktivna, kdaj je bila zagnana in ali je javila napake.- Kaj se zgodi po pritisku Enter: Ne spreminja sistema, ampak ti da opazovalno točko: ali storitev teče, od kdaj teče in ali javlja napake.
- Na kaj ta ukaz vpliva:
- Datoteke:
/etc/vsftpd.conf - Procesi/storitve:
vsftpd - Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: V izpisu iščeš stanje
active (running)ali vsaj jasen razlog, zakaj storitev ni aktivna.
Ukaz 3: ss -tulpen | grep :21
- Razčlenitev sintakse:
sspokaže odprte mrežne vtičnice.-tprikaže TCP,-uUDP,-lposlušajoče vtičnice,-pprocese,-edodatne podatke,-nnumerične porte brez pretvarjanja v imena.grep :21izloči vrstice za port21.- Kaj se zgodi po pritisku Enter: Pregleduješ stanje mrežnih vtičnic v jedru. Tako preveriš, ali je storitev res odprla pričakovani port.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: V izpisu vidiš pričakovani port in pravilni proces, ki posluša promet.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
FTP strežnik mora biti aktiven in dosegljiv na portu 21.
Kaj se dogaja v ozadju
Če konfiguracija vsebuje napako, restart pogosto pade ali pa se servis ne zažene pravilno.
Kaj moraš opaziti
Pričakuješ active (running) in port 21 v izpisu.
Če ne dela, preveri
- Če status ni aktiven, poglej loge in vrni varnostno kopijo konfiguracije, če je treba.
4. Pripravi uporabnika oziroma imenik za FTP test¶
Kaj narediš
Uporabi obstoječega uporabnika ali ustvari namenski račun za prenos datotek.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo adduser ftpuporabnik
- Razčlenitev sintakse:
adduserustvari lokalnega uporabnikaftpuporabnikin pripravi njegov domači imenik.- Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Lokalni uporabnik bo imel domači imenik, kamor se bo po prijavi prek FTP zaprl.
Kaj se dogaja v ozadju
To lepo pokaže razliko med identiteto uporabnika na sistemu in omrežnim protokolom, ki to identiteto uporablja.
Kaj moraš opaziti
Uporabnik ima svoj domači imenik, npr. /home/ftpuporabnik.
Če ne dela, preveri
- Če pozabiš geslo uporabnika, se klient ne bo mogel prijaviti. Šokantno, vem.
5. Po potrebi odpri FTP porte v požarnem zidu¶
Kaj narediš
Če uporabljaš UFW, odpri kontrolni port in pasivni razpon.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo ufw allow 21/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
21/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Ukaz 2: sudo ufw allow 40000:40010/tcp
- Razčlenitev sintakse:
- Doda pravilo, ki dovoli promet za
40000:40010/tcp. To je lahko ime servisa, posamezen port ali obseg portov. - Kaj se zgodi po pritisku Enter: Spreminjaš pravila požarnega zidu. Posledica je lahko dovoljen ali blokiran promet do storitev.
- Na kaj ta ukaz vpliva:
- Procesi/storitve:
ufw - Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
Brez tega se lahko prijava sicer začne, prenos datotek pa pade, ker se podatkovna povezava ne more vzpostaviti.
Kaj se dogaja v ozadju
To je dober praktičen dokaz, da aplikacijski protokol lahko uporablja več kot en sam port.
Kaj moraš opaziti
Pravila morajo biti vidna v ufw status.
Če ne dela, preveri
- Če že uporabljaš UFW pravila iz prejšnje vaje, preveri, ali ta pravila že obstajajo.
6. Na klientu namesti FTP klient in se prijavi¶
Kaj narediš
Na klientu uporabi npr. lftp in se poveži na strežnik.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: sudo apt install lftp -y
- Razčlenitev sintakse:
installnamesti navedene pakete:lftp.-ysamodejno potrdi namestitev.- Kaj se zgodi po pritisku Enter: Na sistem se namesti nov paket oziroma storitev. Ob tem se pogosto ustvarijo konfiguracijske datoteke, sistemska enota
systemdin včasih se servis zažene že sam. - Na kaj ta ukaz vpliva:
- Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Paket se namesti brez napake, na koncu pa ni vrstice tipa
E:alifailed.
Ukaz 2: lftp -u ftpuporabnik 192.168.56.10
- Razčlenitev sintakse:
- Zažene FTP klient
lftpin se poskusi prijaviti kot uporabnikftpuporabnikna strežnik192.168.56.10. - Kaj se zgodi po pritisku Enter: Vzpostavljaš oziroma uporabljaš FTP sejo za prenos datotek. S tem preverjaš avtentikacijo in pravice v FTP storitvi.
- Na kaj ta ukaz vpliva:
- Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Seja FTP ostane odprta, seznam datotek deluje in prenos datoteke uspe brez napake avtentikacije.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
lftp je precej prijazen FTP klient za terminal. Omogoča interaktivno delo in je v laboratoriju precej uporabnejši od zelo starega ftp klienta.
Kaj se dogaja v ozadju
Ob prijavi klient odpre kontrolno povezavo na port 21, nato pa za seznam map ali prenos potrebuje še podatkovno povezavo.
Kaj moraš opaziti
Po vnosu gesla se mora odpreti interaktivna seja lftp.
Če ne dela, preveri
- Če se prijava izvede,
lspa zmrzne ali pade, je skoraj vedno težava v pasivnih portih ali požarnem zidu.
7. Prenesi in naloži datoteko¶
Kaj narediš
Iz klienta prenesi seznam map, nato naloži testno datoteko in jo prenesi nazaj.
Ukazi
Mikro razlaga ukazov¶
Ukaz 1: ls
- Razčlenitev sintakse:
lsv FTP ali lokalni lupini pokaže seznam datotek v trenutni mapi.- Kaj se zgodi po pritisku Enter: Vzpostavljaš oziroma uporabljaš FTP sejo za prenos datotek. S tem preverjaš avtentikacijo in pravice v FTP storitvi.
- Na kaj ta ukaz vpliva:
- Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
- Kaj pričakuješ kot rezultat: Seja FTP ostane odprta, seznam datotek deluje in prenos datoteke uspe brez napake avtentikacije.
Ukaz 2: put lokalna_test.txt
- Razčlenitev sintakse:
- V okolju
lftpukazputnaloži lokalno datotekolokalna_test.txtna strežnik. - Kaj se zgodi po pritisku Enter: Vzpostavljaš oziroma uporabljaš FTP sejo za prenos datotek. S tem preverjaš avtentikacijo in pravice v FTP storitvi.
- Na kaj ta ukaz vpliva:
- Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Seja FTP ostane odprta, seznam datotek deluje in prenos datoteke uspe brez napake avtentikacije.
Ukaz 3: get lokalna_test.txt
- Razčlenitev sintakse:
- V okolju
lftpukazgetprenese oddaljeno datotekolokalna_test.txtna klienta. - Kaj se zgodi po pritisku Enter: Vzpostavljaš oziroma uporabljaš FTP sejo za prenos datotek. S tem preverjaš avtentikacijo in pravice v FTP storitvi.
- Na kaj ta ukaz vpliva:
- Porti:
21/TCP,40000-40010/TCP - Kaj pričakuješ kot rezultat: Seja FTP ostane odprta, seznam datotek deluje in prenos datoteke uspe brez napake avtentikacije.
Zakaj je korak pomemben¶
Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.
Kaj ta korak pomeni
S tem preveriš obe smeri prenosa: klient → strežnik in strežnik → klient.
Kaj se dogaja v ozadju
FTP je namenjen prav temu, zato je smiselno testirati več kot samo uspešno prijavo.
Kaj moraš opaziti
Datoteka mora biti vidna v domačem imeniku uporabnika na strežniku.
Če ne dela, preveri
- Če
putne deluje, preveriwrite_enable=YESin pravice domačega imenika.
Preverjanje delovanja¶
- [ ]
vsftpdje nameščen in aktiven - [ ] port 21 posluša
- [ ] lokalni uporabnik se lahko prijavi
- [ ] prenos datoteke v obe smeri deluje
- [ ] znaš razložiti razliko med kontrolno in podatkovno povezavo
Vprašanja za razmislek¶
- Zakaj je FTP za požarni zid bolj zoprn kot SSH?
- Kaj pomeni pasivni način pri FTP?
- Zakaj v tej vaji izklopimo anonimni dostop?
- Zakaj FTP brez TLS ni primeren za občutljive podatke?
Dodatni izziv¶
Na strežniku pripravi namenski direktorij za izmenjavo datotek in uporabniku omogoči zapis samo vanj. Nato razloži, zakaj popoln dostop do celega domačega imenika ni vedno dobra ideja.
Mini povzetek¶
Po tej vaji moraš znati na kratko razložiti, kaj je vloga servisa vzpostavitev ftp strežnika v omrežju, kateri proces ali konfiguracija ga omogoča in kako ga preverimo s klienta.