File Transfer Protocol/ca: Diferència entre les revisions
De Guifi.net - Wiki Català
Línia 128: | Línia 128: | ||
</pre> | </pre> | ||
− | + | Un cop fetes totes les modificacions ja només ens falta reiniciar el servei i provar que funciona ;) | |
<pre> | <pre> |
Revisió de 01:57, 31 maig 2012
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 ;)