Cristina Alcantarilla
INFORMÁTICA & DISEÑADORA
Servidor FTP, Ubuntu 12.04

Vamo a ver un servidor ftp  montado de la siguiente manera: En /var/www colgarán carpetas con los distintos accesos a los ftp’s

Por ejemplo el usuario1 va a tener acceso a /var/www/carpetadeusuario1 y así con todos los usuarios que queramos
Nuestro usuario ejemplo se va a llamar newuser, con lo que:

newuser tendrá acceso a su directorio: /var/www/newuser Sin shell en el sistema y en un entorno chroot

Ahora creamos el usuario para que tenga los mínimos permisos y sólo pueda hacer lo que nosotros definamos.

Crearemos un grupo llamado ftp al cual asociaremos los usuarios.

groupadd ftp

Creamos los usuarios con sus correspondientes características.

useradd -g ftp -d /var/www/newuser -c ” newuser ” newuser

Asignamos un password al usuario con el comando passwd. Si no tiene password no funcionará.

Ahora creamos una shell fantasma en el directorio correspondiente.

mkdir /bin/ftp

Editamos el fichero /etc/shells y la añadimos en la ultima línea y continuación editamos el fichero /etc/passwd y buscamos la línea donde está definido el usuario que hemos creado antes y les añadimos el shell falso:

1009 es la id del usuario ecircle 10005 es la id del grupo ftp

ecircle:x:1009:10005: ecircle :/var/www/ecircle:/bin/ftp

newuser id-usuario:id-grupo

ojo con los permisos de /var/www/ecircle chmod -R 775 /var/www/ecircle

Ahora Instalación del servidor FTP

apt-get install vsftpd

El fichero de configuración del servidor se encuentra en /etc/vsftpd.conf, buscamos las líneas indicadas y las modificamos:

# Example config file /etc/vsftpd.conf
#Escuchando
listen=YES
#
………………………………………..

# Desactivamos el acceso anónimo

anonymous_enable=NO
#
# Descomentamos la línea para que se puedan conectar
local_enable=YES
#
# Permitimos a usuarios locales escribir
write_enable=YES
#
# APLICA CONFIGURACIÓN UMASK
local_umask=003
#Mensajes welcome
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
……………………….
#
# You may override where the log file goes if you like. The default is
shown
# below.
xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog
format
xferlog_std_format=YES
# Se descomenta esto para crear una jaula
chroot_local_user=YES
# You may specify an explicit list of local users to chroot() to their
home
# directory. If chroot_local_user is YES, then this list becomes a list
of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
#
# Debian customization
# secure_chroot_dir=/var/run/vsftpd
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
# This option specifies the location of the RSA certificate to use for
SSL
# encrypted connections.
#rsa_cert_file=/etc/ssl/certs/vsftpd.pem
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=NO

A continuación creamos el fichero vsftpd.chroot_list el cual tendrá la lista de usuarios que no tendrán acceso al servidor:

touch /etc/vsftpd.chroot_list

Volcamos los datos a este fichero desde etc/password con el comando.

cat /etc/passwd | awk -F: ‘{ print $1 }’ > /etc/vsftpd.chroot_list

Esto nos genera un fichero con los login de usuarios del sistema del cual quitamos los que si queremos que tengan acceso y los ponemos en el fichero /etc/vsftpd.user_list.

Ejemplos de ficheros:

vsftpd.chroot_list

# usuarios con no acceso
root
daemon
bin
sys
sync
games
man
lp
mail
news

vsftpd.user_list

#usuarios con acceso
ecircle

Despues solo reiniciamos el servicio:

/etc/init.d/vsftpd restart

Para añadir usuarios nuevos

Crear usuario bien en consola:

useradd -g ftp -d /var/www/nuevo-usuario -c ” nuevo-usuario ” nuevo-usuario

O editando el fichero /etc/passw

nuevo-usuario:x:1007:10004: nuevo-usuario :/var/www/nuevo-usuario:/bin/ftp

Poner la shell /bin/ftp en /etc/passw al usuario

Crear carpeta en la ruta adecuada /var/www/nuevo-usuario

Añadir al usuario en el fichero

/etc/vsftpd.user_list

La carpeta tiene que pertenecer a usuario:ftp

chown usuario:ftp ruta-de-la-carpeta

Dentro de la carpeta /var/www/nuevo-usuario hay que crear un directorio que es donde realmente se pondrán los ficheros:

mkdir /var/www/nuevo-usuario/documentos
chown nuevo-usuario:ftp /var/www/nuevo-usuario/documentos
chmod 555 /var/www/nuevo-usuario/documentos

Los logs estan en:
/var/log/vsftpd.log

Errores conocidos

530 Login incorrect

Este error es el más común con la última versión del vsftpd. Es un gran quebradero de cabeza con una solución muy simple:

sudo apt-get remove vsftpd
sudo rm /etc/pam.d/vsftpd
sudo apt-get install vsftpd

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Este error se da porque vsftpd no permite que los usuarios puedan escribir en su carpeta raíz. Una solución es quitarle los permisos de escritura a esa carpeta. Esto hará que el usuario no pueda hacer nada en su propia carpeta, así que lo mejor es crearle otra dentro con permisos normales para que pueda utilizarla.

sudo chmod 555 /home/ftp/antonio sudo
mkdir /home/ftp/antonio/documentos sudo
chown antonio:ftp /home/ftp/antonio/documentos

Con todo esto ya deberías poder acceder al servidor FTP con cualquier usuario del sistema sin ningún problema.

A disfrutar del servidor ftp! 🙂

Share Button

Deja un comentario