Вы находитесь на странице: 1из 3

Configurar Usurios Virtuales en VSFTPD con PAM y BDB

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
userPepe
passPepe
userJuan
passJuan
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. Si instalamos db4.8_utils el comando a
usar será:
db4.8_load ...
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.

Вам также может понравиться