Inicio arrow GNU/Linux arrow Usuarios Virtuales en vsftpd (Very Secure FTP Daemon)
Usuarios Virtuales en vsftpd (Very Secure FTP Daemon) Imprimir E-Mail
Calificación del usuario: / 1
MaloBueno 
escrito por Alejandro López Hernández   

Este artículo muestra como configurar vsftpd / PAM con "usuarios virtuales". Un usuario virtual es una cuenta de usuario que no existe como cuenta de usuario real en el sistema, esto significa que solo pueden usar el servicio de FTP y no otros servicios como SSH. Los usuarios virtuales pueden ser más seguros que las cuentas reales, debido a que una cuenta comprometida solo puede usar el servidor FTP.

Los usuarios virtuales son frecuentemente usados para proveer contenido que es accesible a usuarios no confiables, y generalmente accesible al público.

Procedimientos

1) Creación de la base de datos de usuarios virtuales

Usaremos pam_userdb para autenticar a los usuarios virtuales. Esto requiere un archivo de usuario / contraseña en formato "db" - un formato común de base de datos. Para crear un archivo en formato "db", primero debes crear una archivo de texto plano con los nombres de usuarios y sus respectivas contraseñas alternando lineas. Crea un archivo llamado logins.txt y agrega a los usuarios y sus contraseñas de la siguiente forma:

 
ulfix
alex
fraknot
oscar

El ejemplo anterior define al usuario "ulfix" con la contraseña "alex" y el usuario "fraknot" con la contraseña "oscar"

Crea el archivo de base de datos de la siguiente manera, necesitas iniciar sesión como root:

 
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

Requiere que el programa "Berkeley DB" este instalado

NOTA:Muchos sistemas tienen varias versiones de "db" instalado, así que es posible que necesites db3_load para la operación correcta de este procedimiento. Se sabe que este afecta algunos sistemas Debian. El problema radica en que pam_db espera que su base datos de autenticacion sea una versión especifica de "db". (Normalmente db3, mientras que db4 puede estar instalado en tu sistema)

Esto creará el archivo /etc/vsftpd_login.db. Obviamente querrás asegurarte que los permisos de este sean limitados.

chmod 600 /etc/vsftpd_login.db

2) Creación de un archivo PAM que use tu nueva base de datos

Crea un archivo llamado vsftpd.pam en el directorio principal de PAM, usualmente /etc/pam.d/

touch /etc/pam.d/vsftpd.pam

Ahora abre el archivo con tu editro de textos favorito y agrega las siguientes dos líneas:

 
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

Esto hace que PAM autentique a los usuarios usando nuestra nueva base de datos.

3) Establecer la localización de los archivos para los usuario virtuales

 
useradd -d /home/ftpsite virtual
ls -ld /home/ftpsite
# Esto debe darnos
drwx------    3 virtual  virtual      4096 Jan 25 00:39 /home/ftpsite

Hemos creado un usuario llamado "virtual" con un directorio home en "/home/ftpsite"

Agregemos contenido a esta area de descargas

 
cp /etc/hosts /home/ftpsite
chown virtual:virtual /home/ftpsite/hosts

4) Creación del archivo vsftpd.conf

 
vi /etc/vsftpd/vsftpd.conf

A continuación mostramos los valores de las directivas del archivo /etc/vsftpd/vsftpd.conf.

 
anonymous_enable=NO
local_enable=YES

Esto deshabilita el acceso FTP anonimo por seguridad, y habilita el acceso no anonimo. (El cual usan los usuarios virtuales).

 
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

Estas directivas aseguran, por razones de seguridad, que ningún comando de escritura sea permitido.

chroot_local_user=YES

Esto asegura que el usuario virtual está limitado al área FTP virtual /home/ftpsite que establecimos anteriormente.

 
guest_enable=YES
guest_username=virtual

La directiva guest_enable es muy importante - esta activa a los usuarios virtuales! - Y la directiva guest_username establece que todos los usuarios virtuales son mapeados a la cuenta de usuario real "virtual" que establecimos antes. Esto tambien determinará la ruta en el archivo de sistema en que los usuarios virtuales serán enviados, el directorio home del usuario "virtual", /home/ftpsite.

 
pasv_min_port=30000
pasv_max_port=30999

Estas directivas ponen un rango de puertos en modo pasivo para las peticiones FTP entrantes - muy útil si estas confiugurando un firewall.

Salva los cambios realizados al archivo vsftpd.conf

5) Iniciar vsftpd.

/sbin/service vsftpd start

En caso de que el servidor en funcinamiento, reinicialo

/sbin/service vsftpd restart

6) Prueba.

Abre otra ventana de terminal. Aquí está un ejemplo de una sesión FTP:

 
ftp localhost
Connected to localhost (127.0.0.1).
220 Bienvenidos al servidor FTP de ulfiX.com
Name (localhost:alopez): ulfix
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (127,0,0,1,117,135)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> size hosts
213 147
ftp>

Observaciones:

El password que dimos es "alex". No te preocupes por la linea "failed to open directory". Esto ocurre por que el directorio /home/ftpsite no tiene permisos de lectura. (Podemos cambiar este comportamiento si así lo queremos usando la directiva anon_world_readable_only=NO. Podemos ver que tenemos acceso al archivo "hosts" que copiamos dentro del area FTP virtual, via el comando size.

 
< Anterior   Siguiente >

Foros de soporte