Erinevus lehekülje "Vsftpd kasutamine Debian Lennyga" redaktsioonide vahel

Allikas: Kuutõrvaja
(SSL/TLS vsftpd serveri seadistamine)
(Sissejuhatus)
1. rida: 1. rida:
 
===Sissejuhatus===
 
===Sissejuhatus===
  
FTP serveri ülesandeks on võimaldada kasutada üle võrgu serveri failisüsteemi andmete üles ja allalaadimiseks ning seejuures kontrollida kasutajate ligipääse. FTP on nö klassikaline teenus võrgus ja vsftpd http://vsftpd.beasts.org/ on eeskujulik ftp serveri tarkvara.
+
FTP serveri ülesandeks on võimaldada kasutada üle võrgu serveri failisüsteemi andmete üles-ja allalaadimiseks ning seejuures kontrollida kasutajate ligipääse. FTP on nö klassikaline teenus võrgus ja vsftpd http://vsftpd.beasts.org/ on eeskujulik ftp serveri tarkvara.
  
 
===Tarkvara paigaldamine===
 
===Tarkvara paigaldamine===

Redaktsioon: 1. august 2009, kell 17:08

Sissejuhatus

FTP serveri ülesandeks on võimaldada kasutada üle võrgu serveri failisüsteemi andmete üles-ja allalaadimiseks ning seejuures kontrollida kasutajate ligipääse. FTP on nö klassikaline teenus võrgus ja vsftpd http://vsftpd.beasts.org/ on eeskujulik ftp serveri tarkvara.

Tarkvara paigaldamine

Debian Lenny paketihaldus sisaldab vsftp tarkvara v. 2.0.7 ja paigaldamiseks sobib öelda

 # apt-get install vsftpd

Tarkvara paigaldamise käigus lisatakse süsteemi kasutaja ftp, kes kuulub gruppi nogroup.

Serveri seisukohast ei ole see oluline, aga praktiliselt ehk on katsetamiseks abiks ka paigaldada ftp serverisse ftp klient, operatsioonisüsteem Debian vaikimisi ei sisalda ftp kliendi, paigaldamiseks sobib öelda nt

 # apt-get install ftp

FTP serveri tööpõhimõte

FTP protokoll on ajaloolisetel põhjustel erinev paljudest teistest klient-server protokollidest selles osas, et kliendi ja serveri vahelisel suhtlemisel kasutatakse ühe tcp kahte suhtluskanalit

  • juhtimiskanal - moodustatakse alati kliendi pöördumisel oma mitteprivilegeeritud pordilt serveri 21/tcp porti (vaikimisi)
  • andmevahetuse kanal - moodustatakse aktiivsel juhul serveri pöördumisel klindi poole ja passiivsel juhul kliendi pöördumisel serveri poole

Andmevahetuse kanali moodustamiseks on kaks võimalust

  • aktiivne ftp - peale kliendi pöördumist juhtimiskanalil pöördub serveri oma 20/tcp src pordilt kliendi näidatud kliendi arvuti /tcp pordi poole
  • passiive ftp - peale kliendi pöördumist lepivad klient ja serveri kokku millise serveri /tcp pordi poole pöördub klienti andmevahetuseks

Seesugune asjakorraldus teeb tulemüüride seadistamise keerulisemaks, lahendust OpenBSD tulemüüri puhul on kirjeldatud aadressil http://www.openbsd.org/faq/pf/ftp.html.

vsftpd serveri seadistamise võimalused

vsftpd serveri tööd juhib seadistusfail /etc/vsftpd.conf ja serverit saab käivitada

  • inetd superserveri abil
  • iseseisva deemonina

vsftpd kasutajad jagunevad kolme gruppi

  • anonüümne kasutaja
  • lokaalsed kasutajad - operatsioonisüsteemi NSS süsteemile teadaolevad kasutajad, nt need, mis esinevad 'getent passwd' väljundid
  • virtuaalsed kasutajad - kasutajad, mis on olemas tänu /etc/pam.d/vsftpd mooduli abil välise kasutajate andmebaasi ühendusele, nt LDAP kataloog ja mis samal ajal puuduvad NSS süsteemist

Lokaalsete ja virtuaalsete kasutajate puhul tuleb tähele panna, et kui sama LDAP kataloogi vastu on seadistatud käima nii NSS kui /etc/pam.d/vsftpd, siis muidu virtuaalsed kasutajad on lokaalsed.

Üks oluline virtuaalsete ja lokaalsete kasutajate erinevus seisneb selles, milline on kasutaja kodukataloogi nimi

  • virtuaalsetel kasutajatel saab kodukataloogiks seadistada /katalooginimi/virtuaalse-kasutaja-nimi kujul esineva katalooginime
  • lokaalsetel kasutajatel on kodukataloogiks /etc/passwd failis näidatud kodukataloog või kui NSS on seadistatud vastu LDAP'i siis nt homeDirectory atribuudi väärtus

vsftpd serverit saab käivitada nt selliselt

  • anonüümne ftp server andmete alla kopeerimiseks - kõik ftp serveri kasutajad on ftp failisüsteemi operatsioonide jaoks teisendatud üheks süsteemi kasutajaks, nt ftp ning sellele kasutajale on lubatud liikuda nn ftp serveri juurfailisüsteemiks näidatud kataloogi all ning kopeerida faile; selliselt seadistatakse tavaliselt nt tarkvara ftp mirrorid
  • anonüümne ftp server andmete alla ja üles kopeerimiseks - sarnane eelmisele kuid teatud kataloogidesse saab anonüümne kasutaja kopeerida ka andmeid ülesse; tavaliselt on need nn pimedad kataloogid, st selliselt töötavate kataloogide nime on vaja eelnevalt teada kusjuures ftp serveri kasutaja ei saa katalooge juurde moodustada ning ei saa kord üles kopeeritud andmed kustutada
  • kasutajaid autentiv ftp server - ftp server autendib kasutajaid, kuid muul viisil käitub sarnaselt anonüümsele ftp serverile; nt autenditud kasutajad saavad ainult andmeid alla kopeerida; selliselt sobib seadistada mingi piiratud ligipääsuga andmete jagamine kui otsustatakse kasutada ftp protokolli ligipääsuks
  • kasutajaid autentiv ftp server - kasutaja sisse ftp serverisse sisse logida oma kasutajanime ja parooliga ning seejärel toimetada oma personaalses kodukataloogis kuhu teistel ftp serveri kasutajatel puudub ligipääs; andmeid on võimalik üles ja alla laadida, moodustada katalooge ning kustutada andmeid serverist; selliselt seadistatakse tavaliselt käima nt veebimajutuse süsteemide ligipääsukontod kui otsustatakse kasutada ftp protokolli ligipääsuks

ftp serveri seadistusfailis /etc/vsftpd.conf kasutatada olevad parameetrid jagatakse kolme gruppi

  • tõeväärtuse tüüpi parameetrid (ingl. k. boolean)
  • numbrilised parameetrid
  • tekstilised parameetrid

Anonüümse vsftpd serveri seadistamine

Vaikimisi vsftpd seadistusfail /etc/vsftpd.conf vastab anonüümse ligipääsuga ftp serverile, st ftp server on selliste omadustega

  • serverist saavad kopeerida andmeid anonüümsed kasutajad (sisselogimiseks tuleb traditsiooniliselt sisestada kasutajanimi ftp ning parooliks kirjutada oma eposti aadress või niisama enteriga mööda minna)
  • vaikimisi serveeritakse faile üle ftp protokolli ftp kasutaja kodukataloogist /home/ftp
  • lokaalne ega virtuaalne kasutaja ei saa sisse logida
 # egrep -v "^$|^#" vsftpd.conf
 listen=YES
 anonymous_enable=YES
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 secure_chroot_dir=/var/run/vsftpd
 pam_service_name=vsftpd
 rsa_cert_file=/etc/ssl/certs/vsftpd.pem

Kataloogi saab muuta muutes /etc/passwd failis ftp kasutaja kodukataloogi asukohta.

Logi tekib faili

 # cat /var/log/vsftpd.log
 Fri Jul 31 19:49:04 2009 [pid 24044] CONNECT: Client "127.0.0.1"
 Fri Jul 31 19:49:06 2009 [pid 24043] [ftp] OK LOGIN: Client "127.0.0.1", anon password "?"

Lokaalsete kasutajatega vsftpd serveri seadistamine

Lokaalsete kasutajatega kasutamiseks sobib kasutada vaikimisi /etc/pam.d/vsftpd, mis sisaldab

 auth   required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
 
 # Standard blurb.
 @include common-account
 @include common-session
 
 @include common-auth
 auth  required pam_shells.so

ning /etc/vsftpd.conf sisuga

 # egrep -v "^$|^#" /etc/vsftpd.conf
 listen=YES
 anonymous_enable=NO
 local_enable=YES
 write_enable=YES
 local_umask=022
 anon_mkdir_write_enable=NO
 anon_other_write_enable=NO
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 chroot_local_user=YES
 secure_chroot_dir=/var/run/vsftpd
 pam_service_name=vsftpd

Kusjuures, kui NSS seadistusfailis /etc/nsswitch.conf on kirjeldatud LDAP kataloogi kasutamine ning /etc/libnss-ldap.conf failis bind'itakse administraatorina

 binddn cn=admin,dc=auul
 bindpw ldapparool

siis on ka LDAP kasutajad lokaalsed. Tundub, et LDAP kasutaja lokaalsus on olemas just siis kui getent shadow abil on näha kasutaja parooli küptogramm, selle tagab piisava ligipääsuga kasutaja kasutamine libnss-ldap.conf failis

 # getent shadow | grep mart
 mart:qP9QTbkwrd1HM:14456::::::0

NSS kaudu LDAPist tuleva kasutaja parool peab olema sobivalt kodeeritud, nt CRYPT kasutamine LDAP brauseris Apache Directory Studio.

Lokaalsete kasutajate kodukataloogiks on nende NSS kaudu tulev kodukataloog, kas /etc/passwd failist või LDAP kataloogist atribuut homeDirectory.

Virtuaalsete kasutajatega vsftpd serveri seadistamine

Virtuaalseteks vsftpd kasutajateks nimetatakse selliseid kasutajaid, mida pole kirjeldatud ftp serveri /etc/passwd failis, õigemini, mida ei tea NSS teenus, aga mis esinevad nt /etc/pam.d/vsftpd kaudu kättesaadavaks tehtud andmebaasis, nt LDAP kataloogis.

Olgu eesmärgiks selliste omadustega vsftpd serveri seadistamine

  • sisse logida saavad virtuaalsed kasutajad, nt LDAP kataloogist
  • sisselogitud kasutaja saab toimetada oma kodukataloogis
  • sisselogitud kasutaja saab faile serverisse kopeerida
  • anonüümne kasutaja ei saa serverisse sisse logida

Virtuaalsete kasutajate kasutamise peamine eelis seisneb asjaolus, et sellised kasutajad esinevad süsteemi kasutajatena ainult konkreetse teenuse jaoks, nt ei saa nad ssh kaudu sisse logida.

Nt selline seadistusfail sobib eesmärgi täitmiseks

 # egrep -v "^$|^#" vsftpd.conf
 listen=YES
 anonymous_enable=NO
 local_enable=YES
 write_enable=YES
 local_umask=022
 anon_mkdir_write_enable=NO
 anon_other_write_enable=NO
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 chroot_local_user=YES
 secure_chroot_dir=/var/run/vsftpd
 pam_service_name=vsftpd
 virtual_use_local_privs=YES

kusjuures tarvilik on sobiv LDAP kataloogi ja selle kataloogi kliendiks olemise seadistus, mida on kirjeldatud palas OpenLDAP kasutamine Debianiga ning lisaks sellise sisuga /etc/pam.d/vsftpd seadistusfail

 # cat /etc/pam.d/vsftpd
 auth       required   pam_ldap.so
 account    required   pam_ldap.so

Virtuaalse kasutaja kodukataloogi nimi konstrueeritakse etteantud prefiksist ning kasutajanimest automaatselt.

Mitme vsftpd serveri kasutamine ühes arvutis

FTP puhul ei ole üldiselt mitme erineva seadistusega serveri pidamine samal nn interneti soketil ehk ip aadressil ja pordil võimalik nii nagu seda saab teha nt http serveriga. Põhjuseks on, et ftp puhul puudub sarnaselt http protokollile nn 'Host: domeeninimi' päise kasutamise võimalus serverile esitatavates päringutes, mille alusel saab server erinevatele nn virtuaalhostidele mõeldud päringuid eristada.

Kui soovitakse kasutada samas arvutis erinevate seadistustega ftp servereid, siis tuleb nad käivitada erinevatel soketitel, selleks on kaks võimalust

  • käivitada eksemplarid erinevatel portidel - kuna ftp server kasutab andmevahetuseks kahte porti, siis võib erineva pordi kasutamine tekitada omajagu lisa segadust
  • käivitada eksemplarid erinevatel ip aadressidel - soovitatav valik

Teise eksemplari käivitusskripti saab olemasolevat kopeerides ning asendades ära failid

  • /var/run/vsftpd/vsftpd.pid
  • /etc/vsftpd.conf

Lisaks tuleb seadistusfaili seest muuta ära logi jms olulised kohad.

SSL/TLS vsftpd serveri seadistamine

Debiani pakett sisaldab SSL/TLS tuge, mis ei ole vaikimisi sisselülitatud.

Kasulikud lisamaterjalid