Você está na página 1de 8

VsFTP con Base de datos externa.

Lo primero que debemos hacer es instalar el servidor d la siguiente manera.


apt-get install vsftpd

Ahora instalaremos las librerias necesarias para la creación de la base de datos en formato
Berkeley, también se podría emplear MySQL pero hemos optado por esta opción por ser más
sencilla, empleando una base de datos externa y no la del sistema evitamos posibles riesgos
de seguridad, ya que si alguien consiguiese las contraseñas del ftp no podía acceder a las
cuentas del sistema.

Para instalar las librerias ejecutaremos el siguiente comando.


apt-get install libdb3 libdb3-util

Ahora que ya tenemos las librerias necesarias sólo queda crear la base
de datos.

vi usuarios

usuario1
pass1
usuario2
pass2

En estos momentos tenemos la base de datos en un fichero de texto, vamos a convertirla


a formato Berkeley del siguiente modo.
db3_load -T -t hash -f usuarios /etc/vsftpd_login.db

Y le damos permisos de lectura y escritura al propietario del fichero,


en este caso root.
chmod 600 /etc/vsftpd_login.db

Linux emplea PAM (Linux-PAM (Pluggable Authentication Modules for Linux))para la


autenticación, de esta forma se utilizan los usuaios locales para permitir o denegar el
acceso, como este comportamiento no es el deseado debemos hacer algunas
modificaciones en el siguiente fichero.
vi /etc/pam.d/vsftpd
Dejandolo del siguiente modo:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

Con esto hemos conseguido que emplee la base de datos externa en


formato Berkeley.

Ahora nos queda configurar el servidor, debremos modificar su fichero /etc/vsftpd.conf


de configuración dejandolo de la siguiente manera.
ftpd_banner=Welcome to FTP service.
listen=YES
anonymous_enable=NO
local_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=180
data_connection_timeout=120
chroot_local_user=YES
pam_service_name=vsftpd
max_clients=60
max_per_ip=2
guest_enable=YES
guest_username=virtual
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/users

ftpd_banner->Esta opción define el mensaje de bienvenida.


listen->Pone el servidor a la escucha.
anonymous_enable->No permitimos el acceso anónimo.
local_enable->Permitiremos el acceso local para que se pueda acceder
desde una cuenta local en la que se mapearan todos los usuarios de la
base de datos externa.
local_umask->Su valor es 022 para que los ficheros que se suban al
servidro adquieran los permisos 755=rwx-rx-rx
anon_upload_enable->No permitimos subir ficheros a usuarios anónimos
anon_mkdir_write_enable->No permitimos crear directorios a usuarios
anónimos
anon_other_write_enable->No permitimos ningúna otra operación de
escritura a usuarios anónimos
xferlog_enable->Indicamos si queremos logs del servidor
xferlog_file->Especificamos la ubicación del fichero de logs
idle_session_timeout->Especificamos cuanto tiempo puede estar la
sesión inactiva.
data_connection_timeout->Especificamos cuanto tiempo puede estar la
sesión de datos inactiva.
chroot_local_user->Esta opción es de gran utilidad para enjaular a los
usuarios en un directorio para que no puedan acceder a ficheros que no
deben.
pam_service_name->Indicamos el nombre del fichero que contiene al
mecanismo de autenticación.
max_clients->Número máximo de clientes.
max_per_ip->Número máximo de conexiones permitidas desde un misma
dirección IP.
guest_enable->Permitir acceso a usuarios como invitados, esta opción
es necesaria si se quiere emplear la base de datos externa, todos los
usuarios de la base se mapearan en este usuario.
guest_username->Nombre del usuario invitado.
virtual_use_local_privs->Indicamos si queremos emplear opciones de
configuración diferentes para cada usuario.
user_config_dir->Definimos la ubicación donde tendremos los perfiles
de configuración de cada usurio.

Ahor vamos a crear el directorio donde vamos a enjaular el usuario que emplearemos
para mapear todos los usuarios de la base de datos externa.

mkdir /srv/ftp

Y creamos el usuario.
useradd -d /srv/ftp virtual
Ahora crearemos los ficheros de configuración para cada usuario.
Primero crearemos los directorios donde ubicaremos los ficheros de
configuración.

mkdir /etc/vsftpd

mkdir /etc/vsftpd/users

L os ficheros de configuración deberan contener los siguientes


parámetros.
vi /etc/vsftpd/users/usuario1

dirlist_enable=YES
download_enable=YES
local_root=/srv/ftp
write_enable=YES
virtual_use_local_privs=YES
anon_upload_enable=YES

vi /etc/vsftpd/users/usuario2

dirlist_enable=YES
download_enable=YES
local_root=/srv/ftp
write_enable=YES
virtual_use_local_privs=YES
anon_upload_enable=YES

Para que la nueva configuración sea aplicada hay que reiniciar el


servidor.
/etc/init.d/vsftpd restart

Con esto ya tenemos nuestro servidor FTP usando una base de datos externa.

Podemos comprobar el correcto funcinamiento en las siguientes capturas de pantalla:


En esta captura se puede observar mediante un escaner de puertos que realmente
tenemos el puerto 21(Ftp) abierto y a la escucha.

Muestra de un logea correcto en el servidor.


Tranferencia de un fichero del servidor a nuestro equipo.

Comprobamos que realmente tenemos el fichero en nuestro disco duro.


Acceso con usuarios incorrectos.

Captura donde se puede observar la dirección IP del servidor.


En esta captura se puede observar la configuración del analizador de protocolos para
que capture el tráfico FTP.

Aquí se pueden observar las tramas capturadas, si nos fijamos en algunas de ellas
podremos distinguir el nombre de usuario y la contraseña, ya que FTP es un protocolo
que intercambia las contraseñas en texto claro, si quisiesemos más seridad podriamos
emplear sftp que utiliza ssh para cifrar la comunicación ftp.

Você também pode gostar