07 FTP Server



Serveri FTP 


Ndryshe nga disa sherbime te tjera sherbimi i FTP kerkon dis aporta rrjeti qe te funksionoje ne menyre korrekte. Kur nje klient omocion nje lidhje me serverin FTP ai lidhet me porten 21 ne server, qe njihet edhe  me emrin porta e komandave. 
Kjo porte perdoret per te derguar komanda ne server. Te gjitha kerkesat per te dhena (data) nga serveri kthehet nga porta e te dhenave (data port).
Numri i portes per lidhjet e te dhenave dhe menyra se si inicializohen lidhjet e te dhenave  varet nga menyra se si klienti e ben kerkesen ne menyren aktive apo pasive(active or passive mode)

Menyra aktive ( active mode)



Ne menyren aktive zbatohen keto hapa:
  1. Klienti lidhet me serverin ne porten 21 duke krijuar lidhjen e komandave
  2. Klienti ka gjeneruar nje porte me numer me te madh se 1024 dhe e ka derguar kete porte bashke me kerkesen per krijimin e lidhjes se komandes
  3. Serveri tenton te hape nje lidhje nga porta 20 e tij ( server_ip:20 -> client_ip:port) qe do te sherbeje si lidhje per te dhenat
  4. Nese nuk ka ndonje firewall qe e bllokon lidhjen atehere krijohet lidhja e te dhenave dhe trasmetohen te dhenat ne pergjigje te komandes se transmetuar ne lidhje e komandave

Mund te ndodhe qe ne kompjuterat kliente programet e mbrotjes nga viruset ose firewall te bllokojne per arsye sigurie kerkesat me destinacion porta e klientit.

- Menyra pasive ( passive mode)




Ne menyren pasive zbatohen keto hapa:
  1. Klienti lidhet me serverin ne porten 21 duke krijuar lidhjen e komandave
  2. Serveri krijon nje porte me numer me te madh se 1024 dhe ia dergon ate klientit 
  3. Klienti tenton te hape nje lidhje drejt portes qe i dergoi serveri (client_ip:xx -> server_ip:port) qe do te sherbeje si lidhje per te dhenat
  4. Nese nuk ka ndonje firewall qe e bllokon lidhjen atehere krijohet lidhja e te dhenave dhe trasmetohen te dhenat ne pergjigje te komandes se transmetuar ne lidhje e komandave

Mund te ndodhe qe ne kompjuterat kliente programet e mbrotjes nga viruset ose firewall te bllokojne per arsye sigurie kerkesat me destinacion porta e klientit.


NGa njera ane menyra pasive thjeshtezon problemet me firewall e klienteve, por nga nga ana tjeter mund te veshtiresoje administrimin ne firewall e serverit pasi ai duhet te lejoje lidhje ne nje numer variabel portash.  Megjithate mund te kufizojme numrin e portave te hapura ne firewall nese kufizojme me pare ne konfigurimin e serverit FTP numrin e portave jo te provilegjuara qe ai perdor per lidhjet pasive te te dhenave.

Serveri vsftp

Serveri vsftp eshte konceptuar qe ne fillim qe te jete i sigurte.
Seerveri vsftp instalon daemon e tij ne /usr/sbin/vsftpd. Skedaret qe perdor vsftp:

/etc/rc.d/init.d/vsftpd
Eshte skripti qe perdor komanda /sbin/service per te ngritur, ulur dhe ringritur sherbimin ( start, stop , restart)


/etc/pam .d/vsftpd
Sledari i konfigurimit te Pluggable Authentication Modules (PAM). Ky skedar percakton rregullat qe duhet te plotesoje nje user per te aksesuar serverin e ftp. 

/etc/vsftpd/vsftpd.conf
Eshte skedari kryesor i konfigurimit te sherbimit te ftp.

/etc/vsftpd/user_list
Eshte nje skedar i cili ruan nje liste me perdorues te cilet nuk lejohet qe te logohen ne vsftp. Si rregull ky skedar perfshin perdoruesit root, bin, etj.

/etc/vsftpd/user_list
Ky skedar mund te konfigurohet qe te lejoje ose jo perdoruesit qe ndodhen ne te qe te kene akses ne serverin ftp apo jo.  Kjo varet nga direktiva userlist_deny (YES/NO)
Direktica userlist_deny ndodhet ne skedarin /etc/vsftp/vsftpd.conf.

Nese perdoruesit ndodhen ne skedarin /etc/vsftpd/user_list atehere pavaresisht konfigurimit te userlist_deny , nuk mund te kene access tek ftp.

/var/ftp/
Kjo eshte dosja baze e serverit FTP. Ne kete dosje ndodhet edhe dosja pub qe sherben per perdoruesit anonim.

Kontrolli i sherbimit

Komandat me poshte na mundesojne qe te kontrollojme ekzekutimin e sherbimit

service vsftpd status , tregon statusin e sherbimit:

[root@localhost student]# service vsftpd status
vsftpd (pid 9306) is running...
[root@localhost student]# 

Per te ulur sherbimin:

[root@localhost student]# service vsftpd stop
Shutting down vsftpd:                                      [  OK  ]
[root@localhost student]#

Per te ngritur sherbimin

[root@localhost student]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@localhost student]# 

Per te restartuar sherbimin

[root@localhost student]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]
[root@localhost student]# 

Per te konfiguruar sherbimin qe te startoje automatikisht

[root@localhost student]# chkconfig vsftpd on
[root@localhost student]# 


Parametrat e konfigurimit te vsftpd


Skedari kryesor i konfigurimit te vsftpd eshte /etc/vsftpd/vsftpd.conf
Te gjithe parametrat e konfigurimit ne kete skedar vendoset ne rresht me vete dhe ka sintaksen:

<direktive>=<vlere>


Hapesirat
Mos perdorni hapesira
Nuk duhet te kete hapesira midis emrit te direktives, operatorit te vleredhenies (=) dhe vleres.

    
Komentet
RReshtat qe permnbajne komente paraprihen nga shenja # 

Disa nga direktivat kryesore jane:

Parametra te sherbimit


listen
Nese eshte i aktivizuar vsftpd ekzekutohet ne moden stand-alone. Per nje sjellje normale te serverit ky parameter e ka vleren YES.

session_support
Nese eshte i aktivizuar vsftpd tenton te ruaje sesionet e logimit per cdo perdorues nepermjet PAM (Pluggable Authentication Module), vlera default YES


Parametra te Log-in dhe Access-it


anonymous_enable 
Nese e ka vleren YES atehere aktivizohet login per perdoruesit anonim. Perdoruesit anonymous dhe ftp lejohen te logohen ne server.

banned_email_file
Nese direktiva deny_email_enable e ka vleren YES, atehere banned_email_file percakton skedarin qe permban nje liste me password per userin anonim ( ne fakt adresa email) te cilat nuk lejohen te hyjne ne serverin ftp.

banner_file
Emri i skedarit i cili ruan nje tekst qe i shfaqet perdoruesve kur lidhen me serverin FTP (banner). Ky opsion prevalon mbi tekstin qe mund te ndodhet si vlere e direktives ftpd_banner

cmds_allowed
Percakton nje liste me komandat e kejuara te ndara me presje.
Te gjitha komandat qe nuk ndodhen ne kete liste nuk pranohen nga serveri
Nuk ka vlere default per kete direktive

deny_email_enable
Nese eshte YES cdo perdorues qe logohet me userin anonymous dhe perdor si password adresen e tij te email nuk do te mund te logohet nese adresa e tij e email ndodhet ne banned_email_file

ftpd_banner
Mban nje tekst i cili i shfaqet perdoruesve kur lidhem me serverin ftp

Si default vsftpd afishon banerin e tij default

local_enable
Kur eshte i aktivizuar predoruesit lokale mund te hyjne ne server.

pam_service_name
Ruan emrin e sherbimit te jashtem te autentikimit  

userlist_deny
Mund te kete vleren YES ose NO. Nese e ka vleren YES atehere perdoruesit e listuar ne userlist_file nuk mund te logohen ne server. Nese vlera eshte NO atehere lista e perdoruesve qe ndodhen ne userlist_file do te kejohet te kete akses ne serverin ftp.
Perdoruesit te cilet kane access ne kete rast nuk duhet ndodhen ne skedarin ftpusers

Kjo direktive aplikohet vetem nese flitrimi i perdoruesve qe kane te drejte te hyjne ne server eshte aktivizuar me direktiven userlist_enable.
Si default te gjithe perdoruesit me perjashtim te atyre qe ndodhen ne skedarin ftpusers kane te drejte te hyjne ne sistem. Kjo sjellje mund te ndryshohet duke aktivizuar userlist me userlist_enable dhe duke percaktuar nese kjo liste do te jete ndaluese apo lejedhenese.

Nese vlera userlist_deny=NO atehere te gjithe perdoruesit nuk do te kene te drejte te hyjne ne serverin ftp. Perjashtim bejne ata perdorues qe jane listuar ne userlist_file. Ndalimi i aksesit te perdoruesve behet perpara se ata te vendosin password, gje qe kontribuon ne rritjen e nivelit te sigurise.


userlist_enable
Aktivizon filtrimin e perdoruesve sipas listes qe ndodhet ne userlist_file.

Nese userlist_deny=YES atehere perdoruesit nuk lejohen te hyjne ne server
Nese userlist_NO atehere perdoruesit qe lejohet te hyjne ne sistem jane vetem ata qe ndodhen ne userlist_file


userlist_file
Emri i skedarit qe ruan listen e perdoruesve qe perdoret nga direktiva userlist_enable dhe userlist_deny
Vlera default eshte /etc/vsftpd/user_list


Parametrat per perdoruesin anonim


Direktivat e meposhtme percaktojne parametrat e konfigurimit per perdoruesin anonim. Keto direktiva trajtohen vetem nese direktiva anonymous_enable=YES

anon_mkdir_write_enable 
Kur eshte e aktivizuar ne koordinim edhe me direktiven write_enabled i lejohet perdoruesve anonime qe te krijojne direktori brenda nje direktorie prind mbi te cilen ka te drejta shkrimi ( write_enabled=YES)

anon_root
Percakton direktorine rrenje ne te cilen do te pozicionohet perdoruesi anonim pasi te hyje ne serverin ftp.


anon_upload_enable
Nese eshte aktivizuar ne koordinim me direktiven write_enabled  i lejon perdoruesve anonime te ngarkojne skedare  ne nje direktori mbi te cilen ka te drejta shkrimi.


anon_world_readable_only
Nese eshte e aktivizuar perdoruesit anonime lejohen te shkarkojne vetem skedara publike.

ftp_username
Percakton predoruesin lokal , kredencialet e te cilit perdoren per perdoruesin anonymous
Direktoria home e ketij perdoruesi eshte edhe direktoria baze e perdoruesit anonim kur lidhet me serverin ftp

no_anon_password 
Nese eshte e aktivizuar perdoruesit anonim nuk i kerkohet fjalekalim.


Parametrat per perdoruesit lokale


Direktivat e meposhtme percaktojne menyren se si perdoruesit lokale hyjne ne server. Keto direktiva aplikohen vetem ne rast se direktiva local_enable=YES


chmod_enable 
Kur eshte e aktivizuar komanda e FTP-se  SITE CHMOD  kejohet te perdoret nga perdoruesit. Kjo komande i lejon perdoruesit qe te ndryshojne te drejtat mbi skedaret

chroot_list_enable 
Nese eshte e aktivizuar perdoruesit qe listohen ne skedarin qe percaktohte nga direktiva chroot_list_file vendosen ne nje ambjent te kufizuar ( chroot jail) qe percakton direktorine rrenje qe ata mund te shohin, duke mos patur mundesi te accessojne rrenjen e sistemit /.

Nese chroot_list_enable perdoret se bashku me direktiven chroot_local_user , perdoruesit e loguar nuk vendosen ne nje ambjent te kufizuar(chroot jail)


chroot_list_file 
Percakton emrin e nje skedari i cili mban nje liste me perdorues qe perdoret ne rast se direktiva chroot_list_enable=YES
Vlera default eshte  /etc/vsftpd/chroot_list

chroot_local_user 
Kur eshte e aktivizuar perdoruesit lokale pozicionohen tek direktorite e tyre home

guest_enable 
Te gjithe perdoruesit jo-anonim logohen si useri guest qe eshte perdoruesi lokal i percaktuar nga direktiva guest_username

guest_username 
Percakton username e perdoruesit qe sherben si guest. Si default eshte ftp.


local_umask 
Percakton masken per krijimin e skedareve. 
Vlera default mund te jete 077 ose 022


Parametrat per direktorite


dirlist_enable 
Lejon perdoruesit te listojne permbajtjen e direktorive

dirmessage_enable
Nese eshte e aktivizuar perdoruesit i shfaqet nje mesazh sa here hyne ne nje direktori e cila ka nje skedar mesazhi. Skedar i mesazhit duhet te jete brenda direktorise. 

Emri i skedarit te mesazhit percaktohen ne direktiven message_file dhe si default eshte  .message .

force_dot_files 
Kur eshte e aktivizuar skedaret qe fillojne m enje pike (.) listohen ne shfaqen ne listimin e permbajtjes se direktorise me perjashtim te . dhe .. 

 
hide_ids
Kur eshte e aktivizuar te gjithe listimet e direktorive tregojne si perdorues dhe grup per cdo skedar perdoruesin dhe grupin ftp

message_file
Ruan emrin e skedarit qe ruan mesazhin per cdo direktori. Perdoret kur eshte e aktivizuar direktiva  dirmessage_enable
Vlera default eshte .message

text_userdb_names
Nese eshte e aktivizuar ne vend te UID dhe GID afishohen username(tekst) dhe grupi (tekst)

use_localtime
Udhezon klientin ftp qe te shfaqe oren lokale te kompjuterit ne vend te ores se serverit

Opsionet e transferimit te skedareve


download_enable
(YES/NO) 
Lejon shkarkimin e skedareve

chown_downloads
YES/NO
Kur eshte e aktivizuar skedaret e ngarkuar nga perdoruesi anonim kane si pronar perdoruesin qe percaktohet ne direktiven chown_username


chown_username
Percakton userin( username) qe do te marre pronesine e skedareve te ngarkuar nga perdoruesit anonime

write_enable
YES/NO
Lejohen komandat FTP qe mund te ndryshojne skedaret dhe dosjet si: DELE (delete), RNFR (rename from) , STOR (store)

Parametrat e konfigurimit te rrjetit     


accept_timeout 
Percakton kohen maksimale te pritjes per nje klient qe perdor menyren pasive per te krijuar nje lidhje.Si default eshte 60.

anon_max_rate
byte/sekonde
Percakton shpejtesine maksimale te transferimit te te dhenave per perdoruesit anonime.
Vlera 0 do te thote qe nuk ka limit

connect_from_port_20
YES/NO
Kerkon qe vsftpd te ekzekutohet me privilegjet e nevojshme per te hapur porten 20 ne lidhjet ftp aktive. 


connect_timeout
sekonda
Percakton kohen maksimale brenda se ciles nje klient ne lidhjet aktive duhet ti pergjigjet nje lidhje te dhenash.


data_connection_timeout
sekonda
Percakton kohen maksimale qe lejohet qe nje transferim te dhenash mund te ndaloje. Nese kjo kohe kalon atehere mbyllet lidhja me klientin.


ftp_data_port
Percakton numrin e portes ne lidhjet aktive qe perdoret nga serveri per lidhje e te dhenave
Kjo direktive aplikohet ne rast se direktiva connect_from_port_20=YES.
Default eshte porta 20

idle_session_timeout
sekonda
Percakton kohen e pasivitetit ne lidhjen e komandave.
Default eshte 300

listen_address
Percakton adresen IP ne te cilen vsftpd degjon per lidhje nga rrjeti.

listen_port
Percakton porten ne te cilen degjon vsftpd. Si default eshte porta 21

local_max_rate
Percakton maksimumin e shpejtesise me te cilen te dhenat transmetohen per lidhjet e perdoruesve lokale me serverin

max_clients
Percakton numrin maksimale te klienteve qe lidhen njekohesisht ne server

max_per_ip
Percakton numrin maksimal te klienteve qe mund te lidhen nga e njejta IP klienti

pasv_enable
YES/NO
Aktivizon pranimin e lidhje pasive

masv_max_port
Percakton numrin maksimal te portes per lidhjet pasive
1024< porta < masv_max_port < 65535

pasv_min_port
Percakton numrin minimal te portes per lidhje pasive
1024< pasv_min_port<porta < masv_max_port < 65535


Shenim
Dy parametrat e mesiperm lehtesojne konfigurimin e firewall ne server


port_enable
Sherben per te percaktuar qe lejohen lidhjet ne moden aktive