Skip to content

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.

1. Namesti vsftpd na strežniku

Kaj narediš

Namesti FTP strežnik.

Ukazi

sudo apt update
sudo apt install vsftpd -y
Mikro razlaga ukazov

Ukaz 1: sudo apt update

  • Razčlenitev sintakse:
  • sudo ukaz izvede z administratorskimi pravicami.
  • apt je upravljalnik paketov na Debian/Ubuntu sistemih.
  • update ne 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:
  • install namesti navedene pakete: vsftpd.
  • -y samodejno 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 systemd in 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: ali failed.
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

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
Mikro razlaga ukazov

Ukaz 1: sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

  • Razčlenitev sintakse:
  • cp kopira datoteko iz /etc/vsftpd.conf v /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:
  • nano odpre 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 chroot in 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

sudo systemctl restart vsftpd
sudo systemctl status vsftpd
ss -tulpen | grep :21
Mikro razlaga ukazov

Ukaz 1: sudo systemctl restart vsftpd

  • Razčlenitev sintakse:
  • restart ustavi in ponovno zažene enoto vsftpd. 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:
  • systemctl upravlja storitve v systemd.
  • status vsftpd pokaže, ali je enota vsftpd aktivna, 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:
  • ss pokaže odprte mrežne vtičnice.
  • -t prikaže TCP, -u UDP, -l poslušajoče vtičnice, -p procese, -e dodatne podatke, -n numerične porte brez pretvarjanja v imena.
  • grep :21 izloči vrstice za port 21.
  • 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

sudo adduser ftpuporabnik
Mikro razlaga ukazov

Ukaz 1: sudo adduser ftpuporabnik

  • Razčlenitev sintakse:
  • adduser ustvari lokalnega uporabnika ftpuporabnik in 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

sudo ufw allow 21/tcp
sudo ufw allow 40000:40010/tcp
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

sudo apt install lftp -y
lftp -u ftpuporabnik 192.168.56.10
Mikro razlaga ukazov

Ukaz 1: sudo apt install lftp -y

  • Razčlenitev sintakse:
  • install namesti navedene pakete: lftp.
  • -y samodejno 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 systemd in 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: ali failed.

Ukaz 2: lftp -u ftpuporabnik 192.168.56.10

  • Razčlenitev sintakse:
  • Zažene FTP klient lftp in se poskusi prijaviti kot uporabnik ftpuporabnik na strežnik 192.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, ls pa 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

ls
put lokalna_test.txt
get lokalna_test.txt
Mikro razlaga ukazov

Ukaz 1: ls

  • Razčlenitev sintakse:
  • ls v 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 lftp ukaz put naloži lokalno datoteko lokalna_test.txt na 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 lftp ukaz get prenese oddaljeno datoteko lokalna_test.txt na 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 put ne deluje, preveri write_enable=YES in pravice domačega imenika.
Preverjanje delovanja
  • [ ] vsftpd je 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
  1. Zakaj je FTP za požarni zid bolj zoprn kot SSH?
  2. Kaj pomeni pasivni način pri FTP?
  3. Zakaj v tej vaji izklopimo anonimni dostop?
  4. 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.