Empardopo
 
Vsftpd Top 25 comandos linux
Inicio Emuladores Noticias Foro Tutoriales Reclamaciones Sobre Nosotros Contacto

Vsftpd

A continuación, pongo un pequeño tuto sobre este fabuloso servidor de ftp:

Servidor ftp en linux con vsftpd.

 

Introducción

 

Vsftpd es una implementación de servidor FTP basada en la seguridad. El demonio vsFTPd

permite además gestionar el ancho de banda entregado para evitar saturaciones del enlace FTP, y es utilizado por algunos proveedores y servidores con hasta 15.000 conexiones simultáneas, como ftp.redhat.com.

Se distingue principalmente porque sus valores por defecto son muy seguros y por su

sencillez en la configuración, comparado con otras alternativas como Wu-ftpd. Actualmente se

presume que VSFTPD es quizá el servidor FTP más seguro del mundo.

 

Puede funcionar como demonio solitario (standalone) y no solitario dependiendo del superdemonio xinetd. Se aconseja en modo standalone.

 

Vsftpd puede descargarse de la siguiente dirección:

ftp://ferret.lmh.ox.ac.uk/pub/linux/vsftpd

o bien mediante yum

yum -y install vsftpd

 

Ficheros de configuración.

 

/etc/vsftpd/vsftpd.conf Fichero de configuración principal del demonio.

/etc/vsftpd.ftpusers Usuarios no permitidos para hacer ftp

/etc/vsftpd.user_list Usuarios permitidos o no hacer ftp depende de la directiva

userList_deny esté a NO o YES respectivamente.

/etc/vsftpd.chroot_list Lista de usuarios que al conectar estarán excluidor de tomar

como raíz el directorio home. Debemos crearlo

/var/ftp Directorio para el usuario anónimo

/etc/pam.d/vsftpd Fichero PAM que indica dónde se encuentran los usuarios del

servidor ftp. Por defecto los usuarios son los usuarios del

sistema linux. Permite configurarse para tener usuarios ftp

diferentes a los usuarios del sistema.

/etc/vsftpd_login.db Fichero que contiene una BD de usuarios distintos del sistema

 

Arranque y parada del servicio

 

En modo standalone, para arrancar, parar, reiniciar, o ver su estado se utiliza el comando

service seguido del script del servidor.

service vsftpd {start | stop | restart | status}

o bien

/etc/rc.d/init.d/vsftpd {start | stop | restart | status}

 

Para configurar el arranque del servicio en los runlevels 3,4,5 se utiliza el comando

chkconfig, con la opción on se activa y con la opción off se desactiva.

chkconfig vsftpd {on | off}

 

Procedimientos.

Tome el editor de texto de su preferencia y edite /etc/vsftpd/vsftpd.conf. A continuación

analizaremos los parámetros a modificar o añadir según sea necesario.

 

Parámetro anonymous_enable.

 

Este parámetro se utiliza para definir si se permitirán los accesos anónimos al servidor.

Establezca el valor como valores YES o NO de acuerdo a lo que se requiera.

 

anonymous_enable=YES

 

El directorio para usuarios anónimos es /var/ftp.

Recuerda que el acceso anónimo se realiza como usuario ‘anonymous’ con contraseña su email

por cortesía.

 

Parámetro local_enable.

 

Este parámetro es particularmente atractivo si se combina con la función de jaula. Establece

si se van a permitir los accesos autenticados de los usuarios locales del sistema. Establezca el valor YES o NO de acuerdo a lo que se requiera.

 

local_enable=YES

 

Si la directiva chroot_local_user no está puesta a YES hace que el usuario pueda navegar

por el árbol completo de directorios del sistema, esto lógicamente es muy peligroso por lo tanto

sería conveniente colocar la siguiente directiva para enjaular al usuario autenticado en su directorio $HOME.

 

chroot_local_user=YES

 

Cambio del puerto del servidor.

La directiva listen_port permite cambiar el puerto por el que escucha el servidor. Por defecto

es el puerto 21. La directiva listen=YES permite configurar el servidor en modo standalone

(solitario). Se puede configurar adicionalmente para que escuche por el puerto 20 que es el original del servidor ftp utilizando la directiva connect_from_port_20=YES.

 

listen_port=2121

listen=YES

connect_from_port_20=YES

 

Control de usuarios.

 

El fichero /etc/vsftpd.ftpusers contiene una lista de usuarios que no pueden realizar un ftp

autentificado. Por ejemplo podría contener lo siguiente:

# Users that are not allowed to login via ftp

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

 

El fichero vsftpd.user_list contiene una lista de usuarios. Si la directiva userlist_deny=NO

contiene la lista de usuarios que únicamente se le permite el acceso. Si la directiva

userlist_deny=YES contiene la lista de usuarios que no se le permiten hacer ftp además de los

listados en /etc/vsftpd.ftpusers

 

Estableciendo jaulas para los usuarios: parámetros chroot_local_user y chroot_list_file.

 

De modo predefinido los usuarios del sistema que se autentiquen tendrán acceso a otros

directorios del sistema fuera de su directorio personal. Si se desea recluir a los usuarios a solo poder utilizar su propio directorio personal, puede hacerse fácilmente con el parámetro chroot_local_user que habilitará la función de chroot() y los parámetros chroot_list_enable y chroot_list_file para establecer el fichero con la lista de usuarios que quedarán excluidos de la función chroot().

 

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

 

Con lo anterior, cada vez que un usuario local se autentique en el servidor FTP, solo tendrá

acceso a su propio directorio personal y lo que este contenga. No olvide crear

/etc/vsftpd/vsftpd.chroot_list, ya que de otro modo no arrancará vsftpd.

 

Parámetro write_enable.

 

Este parámetro establece si se permite el mandato "write" (escritura) en el servidor.

Establezca el valor YES o NO de acuerdo a lo que se requiera.

write_enable=YES

 

Parámetro ftpd_banner.

 

Este parámetro sirve para establecer el banderín de bienvenida que será mostrado cada vez que un usuario acceda al servidor. Puede establecerse cualquier frase breve que considere conveniente.

ftpd_banner=Bienvenido al servidor FTP del IES Inca Garcilaso.

 

Control del ancho de banda.

Parámetro anon_max_rate.

 

Este parámetro es utilizado para limitar la tasa de transferencia en bytes por segundo para los usuarios anónimos, algo sumamente útil en servidores FTP de acceso público. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios anónimos:

anon_max_rate=5120

 

Parámetro local_max_rate.

 

Este parámetro hace lo mismo que anon_max_rate, pero aplica para usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios locales:

local_max_rate=5120

 

Parámetro max_clients.

 

Este parámetro establece el número máximo de clientes que podrán acceder simultáneamente hacia el servidor FTP. En el siguiente ejemplo se limitará el acceso a 5 clientes simultáneos.

max_clients=5

 

Parámetro max_per_ip.

 

Este parámetro establece el número máximo de conexiones que se pueden realizar desde una

misma dirección IP. Tome en cuenta que algunas redes acceden a través de un servidor proxy o

puerta de enlace haciendo NAT y debido a esto podrían quedar bloqueados innecesariamente

algunos accesos. En el siguiente ejemplo se limita el número de conexiones por IP simultáneas a 5.

max_per_ip=5

 

Configuración personalizada para usuarios autentificados

 

Es muy útil realizar una configuración de acceso diferente para cada usuario. Por ejemplo puede

interesar que un usuario pueda subir archivos y otros no, o bien direccionar algún usuario hacia un directorio diferente de su directorio $HOME, como por ejemplo un directorio donde subir el sitio

web de un usuario, que posteriormente pueda ser consultado a través de apache.

 

En el fichero vsftpd.conf agregar la directiva:

user_config_dir=/etc/vsftpd/users

donde /etc/vsftpd/users es un directorio que contiene ficheros con el mismo nombre de los

usuarios.

 

Crear tantos ficheros como usuarios autentificados,

Ejemplo /etc/vsftpd/users/angel

 

dirlist_enable=YES

download_enable=YES

local_root=/usuarios

write_enable=NO

 

Configuración del servidor con usuarios fantasma

 

Introducción y Objetivos

 

En la configuración vamos a ver paso por paso las múltiples opciones que tenemos, aunque

muchas de ellas vienen explicadas (en inglés) en el man de vsftpd.conf [1]

 

Vamos a crear usuario "fantasma", es decir, solo serán usuarios del ftp, no existirán como

usuario del sistema, de esta manera en caso de que exista algún tipo de fallo en el servidor, sólo se quedaría comprometido el ftp. Además vamos a enjaular a los usuarios, para que solo puedan acceder al directorio que nosotros queramos, y así evitar que "naveguen" por nuestro disco duro.

 

Para indicarle los usuarios que queremos, hacemos uso de db (Berkereley db).Lo que

hacemos ahora es crear un archivo con los login / passwords que queramos en formato db, para ello creamos un archivo de texto en el directorio de trabajo, y metemos logins y passwords en lineas alternas, de esta manera:

pepe

pass1

paco

pass2

 

Por lo tanto tenemos dos usuarios, pepe y paco, con contraseñas pass1 y pass2

respectivamente, (y al archivo lo hemos llamado usuarios).

 

Ahora creamos la base de datos en formato db ayudándonos de 'Berkereley db' (tenemos que

ser root, puesto que necesitamos permisos de escritura en /etc)

# db_load -T -t hash -f usuarios /etc/vsftpd_login.db

 

Con esto hemos creado /etc/vsftpd_login.db, ahora nos aseguramos que los permisos son lo

más restrictivo posible:

# chmod 600 /etc/vsftpd_login.db

 

Una vez creada nuestra base de datos, necesitamos crear un archivo PAM para indicar que

use nuestra base de datos. Para ello incluimos estas líneas en el fichero /etc/pam.d/vsftpd (se

recomienda realizar una copia de seguridad de este fichero antes de modificarlo):

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

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

 

En el fichero vsftpd.conf debemos tener la siguiente directiva:

 

pam_service_name=vsftpd

 

Ahora vamos a crear a nuestro usuario 'fantasma', para esto hacemos:

# useradd -d /home/ftp fantasma

He creado el usuario 'fantasma' dentro de /home/ftp o cualquier otro directorio.

 

Ya tenemos casi todo, nos falta crear una buena configuración. Para esto vamos a por el

archivo vsftpd.conf que se encuentra en /etc/vsftpd

 

Como ya comentamos antes, vamos a configurarlo de tal manera que no permitamos

usuarios anónimos, y sí autenticados

 

anonymous_enable=NO

local_enable=YES

 

Si queremos que nuestros usuarios no tengan posibilidad de escribir, hacemos:

 

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

 

Y con esto enjaulamos al 'fantasma', de forma que tome como raíz su directorio $HOME

chroot_local_user=YES

 

Y ahora el puntito final en lo que a la configuración de usuarios se refiere.

guest_enable=YES

guest_username=fantasma

 

Con esto estamos diciendo que todos los usuarios sean 'fantasma' a nivel de usuario en

nuestro servidor.

 

Si ahora entramos en nuestro servidor, nos va a decir que

150 Here comes the directory listing.

226 Transfer done (but failed to open directory).

 

Puesto que no tenemos permisos suficientes ...

Una vez aqui, alguno se preguntará y ¿como hacemos ahora para bajar/subir los archivos, si

le servidor no nos deja ni movernos?

 

La explicación es sencilla, lo que hemos hecho es crear un entorno lo más seguro posible,

que se adapte a nuestras exigencias. Pero, ahora lo que vamos a hacer es definir permisos usuario por usuario. Y eso lo vamos a conseguir con la opción 'user_config_dir', que nosotros vamos especificarla en '/etc/vsftpd/users', de la siguiente manera user_config_dir=/etc/vsftpd/users

 

Creamos los directorios /etc/vsftpd/users, para luego meter las características de nuestros

usuarios.

 

Ahora sólo nos queda definir usuario a usuario los permisos de cada uno. Para ello lo único

que tenemos que hacer es crear un archivo por usuario, con el nombre del mismo dentro de

/etc/vsftpd/users, especificando las opciones 'extras' que queremos que tenga cada uno de ellos.

Por ejemplo a pepe, le vamos a permitir 'ver' y descargar lo que hay en /data, para ello como

indicamos antes, creamos el archivo /etc/vsftpd/users/pepe

 

dirlist_enable=YES

download_enable=YES

local_root=/data

write_enable=NO

anon_world_readable_only=NO

 

Y a paco, le vamos a permitir escribir en /home/ftp, para lo cual creamos otro archivo pero

esta vez se llama paco, que contenga

 

dirlist_enable=YES

download_enable=YES

local_root=/home/ftp

anon_upload_enable=YES

anon_world_readable_only=NO

write_enable=YES

 

Y así usuario a usuario podemos determinar los privilegios de cada uno, y dejarles

enjaulados donde nosotros queramos, sin que puedan fisgar por el resto de nuestro sistema.

Como no queremos que los usuarios del sistema puedan acceder, lo que hacemos es ponerlo

explícitamente como indicamos ahora

 

Crearemos una lista de usuarios a los que se deniega el acceso, y la guardamos en

/etc/vsftpd.ftpusers o /etc/vsftpd/denied_users si es debian. (hacer primero una copia de seguridaddel fichero)

 

Para ello se puede agregar la salida del siguiente comando que nos da la lista de usuarios del

stma al fichero /etc/vsftpd.ftpusers, donde se encuentran la lista de usuarios a los que se deniega el

acceso vía ftp:

 

#cat /etc/passwd | cut -d ":" -f 1 | sort

o bien podemos eliminar el fichero original:

#cat /etc/passwd | cut -d ":" -f 1 | sort > /etc/vsftpd.ftpusers

 

Si te estás preguntando porqué no queremos que los usuarios del sistema puedan iniciar

sesión en el servidor ftp, la respuesta es por seguridad, puesto que los usuarios suelen tener más permisos de los necesarios en el ftp, además, los login/passwd en ftp van en texto claro, siendo muy propensas a ser esnifadas, y pueden comprometer la seguridad del servidor.

 

Finalmente

 

Con todo esto, hemos conseguido configurar el servidor de vsftpd, con usuarios fantasma, y

estableciendo una configuración personalizada por cada usuario. De esta manera se consigue una mayor versatilidad a la hora de configurar el servidor, y una mayor seguridad.

 

Si quieres el fichero en formato pdf, puedes descargarlo pulsando aquí.