Español  

File Transfer Protocol/ca

De Guifi.net - Wiki Català

< File Transfer Protocol
Revisió de 14:04, 3 març 2014; Al (Discussió | contribucions)

(dif) ←Versió més antiga | Versió actual (dif) | Versió més nova→ (dif)

Partim d'una debian squeeze 6.0.1.

El primer que s'ha de fer és instal·lar el servei.

# apt-get install vsftpd

I les eines per gestionar bases de dades Berkeley.

# apt-get install db4.8-util

A continuació creem un fitxer amb les dades de login i passwords posant el usuari i a sota el password, d'aquesta forma:

# vi /root/ftpusers
usuari1
password1
usuari2
password2
:wq
# chmod 600 /root/ftpusers

I generem la base de dades en format berkeley i la protegim d'ulls d'indiscrets:

# db4.8_load -T -t hash -f /root/ftpusers /etc/vsftpd_login.db
# chmod 600 /etc/vsftpd_login.db

Un cop haguem creat la nostra base de daddes, necessitem editar el fitxer PAM per indicar-li que utilitzi la nostra base de dades.

# vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

atenció: comentem la resta de línies d'aquest fitxer

I al fitxer de configuració del vsftpd que utilitzi el fitxer d'autenticació al qual hem definit l'autenticació amb la base de dades Berkeley (això ja ve per defecte).

# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd

La instal·lació per defecte de debian ens deixa instal·lat el servei amb un accés anònim sota el usuari ftp i el directori de treball /usr/ftp, com que el sistema que al que es va fer aquesta configuració el directori amb espai es troba a /var, cambiem el directori de treball del usuari ftp editant el fitxer /etc/passwd:

# vi /etc/passwd
ftp:x:104:106:ftp daemon,,,:/var/ftp:/bin/false
# mkdir /var/ftp
# chgrp -R ftp /var/ftp

Ara podem escollir si volem permetre al usuari anònim o no en aquest directori. Configurarem permisos restrictius per als usuaris anònims i més permisius als autenticats. Si en algun moment volem fer l'acció contrària, és tan simple com canviar l'afirmació a negació o viceversa :)

# vi /etc/vsftpd.conf
listen=YES
anonymous_enable=YES # permetre login anònim
local_enable=YES # permetre login a usuaris del sistema (en aquest cas pam.d)
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES # engabiem al usuari FTP, per a què no pugui anar a directoris superiors
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
user_config_dir=/etc/vsftpd/users
guest_enable=YES
guest_username=ftp
anon_root=/var/ftp/

Traieu els comentaris

A partir d'aquí ja tenim que el usuari anònim només té lectura però no escriptura sobre del directori de treball (/var/ftp), així que ara definirem els usuaris. Per a això afegim una línia més al fitxer /etc/vsftpd.conf

user_config_dir=/etc/vsftpd/users

i creem els directoris /etc/vsftpd/ i /etc/vsftpd/users/

Ara haurem de dir-li a vsftpd que no permeti el login dels usuaris del sistema al FTP, ja que el password en els FTP és en pla i amb un sniffer és bastant senzill d'aconseguir el password d'un usuari amb accés ssh al sistema. Per a això es recomana que els passwords dels usuaris del FTP siguin diferents als del sistema.

Una forma ràpida de treure els usuaris del sistema és així:

# cat /etc/passwd | cut -d ":" -f 1 > /etc/vsftpd/denied_users

Ara ja només ens queda definir usuari a usuari els permisos de cadascun. Per a això la única cosa que hem de fer és crear un fitxer per usuari, amb el seu nom dintre de /etc/vsftpd/users/, definint les opcions "extra" que volem que tingui cadascun d'ells. Per exemple a usuari1, li permetrem llegir i descarregar el què hi ha a /var/ftp, per a això tal com s'ha indicat abans, creem el fitxer /etc/vsftpd/users/usuari1

# cd /etc/vsftpd/users/
# vi usuari1
dirlist_enable=YES
download_enable=YES
local_root=/var/ftp
write_enable=NO
anon_world_readable_only=NO
:wq

I al usuari2, li permetrem escriure a /var/ftp, així que creem un altre fitxer usuari2 amb aquest contingut:

# vi usuari2
dirlist_enable=YES
download_enable=YES
local_root=/var/ftp
anon_upload_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES # permetre borrar fitxers propis i d'altres usuaris
write_enable=YES
anon_mkdir_write_enable=YES # permetre escriure al directori
local_umask=022 # mascara per als fitxers propis
anon_umask=022 # mascara per als fitxers des d'altres usuaris
:wq

Un cop fetes totes les modificacions ja només ens falta reiniciar el servei i provar que funciona ;)

# /etc/init.d/vsftpd restart

Nota: el directori superior del FTP no pot tenir els permisos del usuari FTP d'escriptura a other, ja que entra en conflicte amb algun dels paràmetres de configuració del servei. Per a què el FTP funcioni hem de definir els permisos d'aquesta forma:

root@xava:/var# ls -l |grep ftp
drw-rwxr-x  5 blackhold blackhold  4096  7 set 04:36 ftp

root@xava:/var# cd ftp

root@xava:/var/ftp# ls -lh
total 12K
drwxrwxr-x 2 ftp ftp 4,0K  7 set 04:35 incoming
drwxrwxr-x 2 ftp ftp 4,0K  7 set 04:51 musica
drwxrwxr-x 2 ftp ftp 4,0K  7 set 04:36 videos

No he aconseguit que el usuari anònim dispongui de drets d'escriptura sobre incoming, però com a mínim tenim mig camí fet ;)

Eines de l'usuari