FTP, Rsync, Kerberos, PAM

Pavel Koudela, 98541 (at) mail.muni.cz


Obsah


FTP

Protokol pro přenos souboru aplikační vrstvy. Je nezávislý na platformě a operačním systému. Pracuje na principu klient-server a je definován v RFC959.
Protokol ftp nelze považovat za bezpečný, protože daat jsou pomocí něj posílána nešifrovaná a linovolný útočník je schopen data odposlechnout.
Komunikace klient server pracuje na portech TCP 20 a TCP 21. Port 20 slouží k přenosu dat a port 21 slouží k posílání řídících ftp příkazů. Server naslouchá na portu 21 na spojení od klienta. Klient se připojuje, a na portu 20 mu server otvírá datové spojení.


Typy spojení

Aktivní - uživatelův počítač má vnější IP adresu nebo jsou na něj z routeru přesměrovány alespoň příslušné porty, musí mít zároveň povolenu komunikaci na zmíněných portech ve firewallu. Spojení navazuje server
Pasivní - počítač je za firewallem nebo routerem který nechceme, nemůžeme konfigurovat -> spojení otevírá klient, posila serveru adresu a port kde nasloucha


Chroot

Chroot jail neboli vězení ve změněnám kořenovém disku. slouží k zakrytí skutečné sdresářové struktury a zamezení přístupu mimo tento kořen.


Virtuální uživatelé

Virtuálních uživatelů můžeme využít pokud chceme na serveru vytvářet ftp účty a nepočítáme s jiným typem přístupu uživatele (ssh).
Najde uplatnění na webhostingových serverech.


Příkazy serveru FTP

ABOR 
ACCT   
ALLO  
APPE   
CDUP 
CWD    
DELE   
HELP [ ] 
LIST [ ] 
MKD    
MODE   
NLST [ ] 
NOOP 
PASS   
PASV 
PORT   
PWD  
QUIT 
REIN 
REST   
RETR   
RMD    
RNFR   
RNTO   
SITE   
SMNT   
STAT [ ] 
STOR   
STOU 
STRU   
SYST 
TYPE   
USER   


Návratové kódy serveru FTP

200 Command okay.
500 Syntax error, command unrecognized.
    This may include errors such as command line too long.
501 Syntax error in parameters or arguments.
202 Command not implemented, superfluous at this site.
502 Command not implemented.
503 Bad sequence of commands.
504 Command not implemented for that parameter.
110 Restart marker reply.
    In this case, the text is exact and not left to the
    particular implementation; it must read:
        MARK yyyy = mmmm
    Where yyyy is User-process data stream marker, and mmmm
    server's equivalent marker (note the spaces between markers
    and "=").
211 System status, or system help reply.
212 Directory status.
213 File status.
214 Help message.
    On how to use the server or the meaning of a particular
    non-standard command.  This reply is useful only to the
    human user.
215 NAME system type.
    Where NAME is an official system name from the list in the
    Assigned Numbers document.
       
120 Service ready in nnn minutes.
220 Service ready for new user.
221 Service closing control connection.
    Logged out if appropriate.
421 Service not available, closing control connection.
    This may be a reply to any command if the service knows it
    must shut down.
125 Data connection already open; transfer starting.
225 Data connection open; no transfer in progress.
425 Can't open data connection.
226 Closing data connection.
    Requested file action successful (for example, file
    transfer or file abort).
426 Connection closed; transfer aborted.
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
         
230 User logged in, proceed.
530 Not logged in.
331 User name okay, need password.
332 Need account for login.
532 Need account for storing files.
150 File status okay; about to open data connection.
250 Requested file action okay, completed.
257 "PATHNAME" created.
350 Requested file action pending further information.
450 Requested file action not taken.
    File unavailable (e.g., file busy).
550 Requested action not taken.
    File unavailable (e.g., file not found, no access).
451 Requested action aborted. Local error in processing.
551 Requested action aborted. Page type unknown.
452 Requested action not taken.
    Insufficient storage space in system.
552 Requested file action aborted.
    Exceeded storage allocation (for current directory or
    dataset).
553 Requested action not taken.
    File name not allowed.


Klienti


ftp - jde o maly program do prikazove radky, ktery otevre ftp spojeni na server a vy můžete zadávat ftp příkazy.
gftp - gnome ftp
krusader - file browser
vetsina www prohlizecu


Servery

VSFTPD (Very Secure File Transfer Protocol Daemon) jde o malinký ale velmi rychlý a zdá se že i bezpečný ftp server, bezpečnost spočívá však pouze v bezchybnosti. ve verzi 2.0 již používá SSL komunikaci a potom lze mluvit o bezpečném ftps.
Jeho konfigurace je velmi rychlá a jednoduchá, nepodporuje virtuální uživatele.

/etc/vsftpd.conf - direktivy kterym venovat pozornost

write_enable=YES
ftpd_banner="FTP server."
anonymous_enable=NO
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
check_shell=NO
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1030
listen=YES

ProFTPD
ftp server s rozsáhlejší konfigurací včetně virtuálních uživatelů. Konfigurace je v duchu konfigurace apache. Umožňuje spouštení jako stand-alone nebo z inetd.
Konfigurace: /etc/proftp.conf

Wu-FTPD
Jeden z nejpoužívanějších serverů. Dnes existují mnohem bezpečnější alternativy.



Rsync

Architektura server klient, jeden nebo více deamonů se nastaví jako server, klienti si s nimi synchronizují své adresáře. Přenáší pouze rozdíly v souborech, pro přenos používá ssh nebo rsh. Pro ověřování se používá MD4 hash.


rsync server


Spuštění serveru se provádí příkazem rsync --daemon buď jako inet super-server nebo samostatného démona
konfigurace

/etc/rsyncd.conf

 uid = uzivatel
 gid = skupina

 use chroot = yes
 
 max connections = 4
 
 pid file = /etc/rsyncd.pid

 [ftp]
       path = /home/ftp
       comment = ftp export area
       uid = nobody
       gid = nobody
       use chroot = no
       max connections = 4
       syslog facility = local5
       pid file = /var/run/rsyncd.pid
 [ftp]
       path = /var/ftp/pub
       comment = whole ftp area (approx 6.1 GB)
 [cvs]
       path = /data/cvs
       comment = CVS repository (requires authentication)
       auth users = pavel, petr
       secrets file = /etc/rsyncd.secrets

V souboru cat /etc/rsyncd.secrets budeme mít zapsány informace pro autentizaci
pavel:heslo
petr:petrovoheslo


rsync klient


Rsync klient poslouží k synchronizaci dat. Slouží tedy k přenosu dat mezi rsync serverem a klientem. Syntaxe
rsync [OPTIONS] [USER@]HOST::SRC [DEST]

rsync -av /home/koudak/ /dest
rsync mamto.cz::home/koudak/ /dest
-a archive mode
-r Rekurzivně
-v Verbose mód
-l Zachavá symb. linky
-H Zachová hardlinky
-S efektivní zacházení s děravými soubory


Zdroje


http://www.fi.muni.cz/kas/p090
http://www.fi.muni.cz/kas/p077
http://www.wikipedia.org
http://www.abclinuxu.cz
http://www.root.cz