Datov� arch�vy (FTP, rsync, ...)

�tefan Sakal�k, sakalik@fi.muni.cz

Obsah

�vod do FTP

Na za�iatku internetu boli 2 typy slu�ieb: Telnet a FTP. FTP vznikol v 1971, e�te pred TCP/IP (be�al pod NCP = Network Control Program pre ARPANET).
1972: �pecifik�cia bola upraven� do podoby ktor� sa za��nala podoba� tej dne�nej.
1980: navrhnut� pre TCP/IP. Vtedy vznikol aj TFTP, od�ah�en� verzia FTP pre vtedaj�ie n�roky na v�po�etn� silu.
1985: t�to verzia protokolu sl��i ako z�klad v dne�n�ch implement�ci�ch.
Ftp pou��va 2 tcp spojenia:

To, �e s� tu 2 TCP kan�le je dos� neobvykl�.

M�dy prenosu d�t:

Okrem t�chto to m��e by� e�te m�d EBCDIC (a in�). Pri pou�it� nebin�rneho m�du na bin�rne subory m��e d�js� k po�kodeniu d�t.
Moje pozorovanie: Sk��al som prenies� textov� s�bor bin�rne a ASCII. Netcat mi vyp�sal na termin�l tie ist� znaky, ale v ASCII m�de som dostal 766 bajtov, v bin 747 bajtov.

M�dy spojenia

Klient sa pripoj� na server.
Akt�vny re�im:
Klient otvor� port, po�le serveru ��slo portu a server sa pripoj� na klienta.
Pr�klad komunik�cie:

=== hlavn� spojenie ===
> nc ftp.fi.muni.cz 21
220 ProFTPD 1.3.1 Server (Faculty of Informatics) [::ffff:147.251.48.205]
> USER anonymous
331 Anonymous login ok, send your complete email address as your password
> PASS ???
230-Hello, UNKNOWN at dionysos.fi.muni.cz!
> PWD
257 "/" is the current directory

PORT 147,251,48,39,4,0                     # 4*256 + 0 = 1024
200 PORT command successful
LIST -l
150 Opening ASCII mode data connection for file list
226 Transfer complete

=== netcat === nc -vv -l -p 1024 connect to [147.251.48.39] from odysseus.fi.muni.cz [147.251.48.205] 20 drwxr-xr-x 3 ftpadm ftpadm 56 Feb 12 2007 etc drwxr-xr-x 4 ftpadm ftpadm 4096 May 30 2007 http drwxr-xr-x 3 ftpadm ftpadm 0 Apr 13 13:36 mount drwxr-xr-x 23 ftpadm ftpadm 20480 Apr 13 05:08 pub sent 19, rcvd 243
CWD pub 250 CWD command successful PORT 147,251,48,39,4,0 200 PORT command successful RETR README.uploads 150 Opening BINARY mode data connection for README.uploads (747 bytes) 226 Transfer complete
=== netcat (2) === nc -vv -l -p 1024 ...obsah README.uploads...
Pas�vny re�im:
Rozdiel je v tom �e klient neotv�ra port, ale server. Akt�vny m�d nefunguje pre klientov za NATom.
=== hlavn� spojenie ===
...
PASV
227 Entering Passive Mode (147,251,48,205,164,98).
LIST

=== netcat (PASV) === nc -vv 147.251.48.205 42082 # 164*256+98 = 42082 odysseus.linux.cz [147.251.48.205] 42082 (?) open drwxr-xr-x 3 ftpadm ftpadm 56 Feb 12 2007 etc drwxr-xr-x 4 ftpadm ftpadm 4096 May 30 2007 http drwxr-xr-x 3 ftpadm ftpadm 0 Apr 13 13:49 mount drwxr-xr-x 23 ftpadm ftpadm 20480 Apr 13 05:08 pub sent 0, rcvd 243
Extended passive mode: ��sla portov s� norm�lne.

Pr�kazy, bezpe�nos�

RNFR - premenova� z
RNTO - premenova� na
APPE - append
REST - pokra�ova� v preru�enom downloade (nepr�jemne pri ASCII m�de)
TYPE - binary/text/...
USER - meno u��vate�a
PASS - heslo.
Autentiz�cia na �rovni FTP: cez USER a PASS. Existuje anonymn� pristup: USER anonymous, PASS .... pri tomto pr�stupe servre chc� mailov� adresu ale v��inou tam m��me nap�sa� �o chceme. Anonymn�m u��vate�om obecne nechceme d�va� mo�nos� uploadova� d�ta.
FTP je ne�ifrovan� protokol, preto prid�vame da��iu vrstvu kv�li bezpe�nosti: FTPS = FTP over SSL (alebo TLS).
Existuj� aj in� varianty prenosu: SFTP = SSH ftp. Nem� ni� spolo�n� s FTP.
FTP over SSH = tunelovan� FTP cez SSH.

Zrovanie softv�ru

Konfigur�cia ProFTPD (proftpd.conf)

Je podobn� apachu.
	ServerName			"Moj FTP server"
	ServerIdent			on "FTP Server pripraveny."
	ServerType			inetd
	DefaultServer			on
	Port				21
	Umask				022
	MaxInstances			30
	User				nobody
	Group				nobody
	HideUser 			root

	<Limit LOGIN>
		Order allow,deny
		Allow from 192.168.0.,.acme.com
		Deny from all 
	</Limit>

	<Limit READ DIRS>
		IgnoreHidden on
	</Limit>

	<Directory /*>
	  AllowOverwrite                on
	</Directory>

	<Directory /etc>
	  AllowOverwrite                off
	</Directory>

	<Anonymous /home/ftp>
	  User				anonymous
	  Group				ftpanon
	  AnonRequirePassword		off 
	  MaxClients			10
	
	  # Limit WRITE everywhere in the anonymous chroot
	  <Limit WRITE>
		DenyAll
	  </Limit>
	
	</Anonymous>
Zauj�mav� konfigura�n� direkt�vy:
User, Group uid/gid pod ktor�m bude proces be�a�
UseFtpUsers (z wu-ftpd) v /etc/ftpusers s� u�ivatelia ktor� nemaj� povolen� pr�stup
RequireValidShell yesnechceme d�monom povoli� ftp
Anonymousanonymn� login, s User povieme kedy bude pova�ovat login za anonymn�. �tandardne sa pou�ije User anonymous
<VirtualHost adresy> IP/DNS adresy virtualn�ch ftp serverov. U��vate�ovi sa m��e zda� �e pod in�mi ip adresami (na rovnakom stroji) be�ia in� ftp servre.
DefaultAddressktor� VirtualHost bude defaultn�. Defaultne je to to �o povie na za�iatku syst�m.
<IfModule mod_auth_pam.c> AuthPAM off </IfModule>vypni PAM
DefaultRoot ~ defaultne sa chrootni do uzivate�ovho domovsk�ho adres�ra
AuthOrder mod_auth_file.c ako autentiza�n� modul pou�i iba mod_auth_file. Keby sme prihodili �a��ie za mod_auth_file, mali by men�iu prioritu
AuthUserFile /etc/ftpd/passwd name ^ftp home !^/home pre mod_auth_file.c
MaxClientsmaxim�lny po�et u�ivate�ov
ServerLogkam m�me logova�

Rsync

Pou�ije sa pri pravidelnom z�lohovan�. M�me 1 ve�k� s�bor na klientovi a chceme ho uploadn�� na server. Pravdepodobn� je �e sa bu� nezmenil v�bec, alebo sa zmenili len niektor� jeho mal� �asti od poslednej synchroniz�cie. Teda obvykle nechceme kop�rova� cel� tak�to s�bor, ale iba zmeny. Pri synchroniz�cii adres�rov (napr�klad pravideln� z�lohy) nechceme v�dy pren�a� cel� synchroniza�n� strom, ale iba s�bory ktor� sa zmenili (alebo nov� s�bory). Pre rsync verzie 3 a vy��ie je aj optimalizovan� prenos ve�k�ho mno�stva mal�ch s�borov.

Rsync - algoritmus

M�me po��ta�e |A| a |B|, na nich s�bory A a B.

Rsync - konfigur�cia

rsyncd.conf (pozn. numerick� id, symlinky) :
uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
secrets file = /etc/rsyncd.secrets

[pub]                                    # verejn� adres�r
        read only = yes
        list = yes
        path = /var/./pub                # chrootneme do /var
[data]
        list = yes
        auth users = nbusr
        path = /var/./data
        comment = neake data
/etc/rsyncd.secrets :
nbusr:nbusr123
V obidvoch pr�padoch sa chrootneme do /var. M��eme tam ma� kni�nice, ktor� n�m umo�nia prelo�it username do na UID. Je to preto, �e v chrootovanom prostred� proces nem� pr�stup do /etc/passwd.
Pr�kaz pre archiv�ciu (rekurz�vne, nekop�rova� symlinky,...), verbose output, komprimuj s�bory:
rsync -avz -e ssh rsync@remote.acme.com:/home/rsync/out/ /home/rsync/from_remote

Literatura