Crea un servidor FTP en Ubuntu para compartir archivos en LAN e internet

Hoy os voy a enseñar como crear un servidor FTP en Ubuntu de una manera sencilla y con las opciones más importantes.

Podréis compartir archivos vía LAN y vía Internet, loguearos con vuestro usuario/contraseña.

Este manual está destinado para compartir archivos en red local sin salir a internet, ya que la configuración de seguridad para pasar por redes no seguras, es escasa. Si vamos a acceder desde Internet deberemos abrir el puerto 21 en nuestro router.

También podréis encerrar al usuario para que no salga del /home/ y que así, no pueda dañar el sistema eliminando archivos vitales.

Instalación

Os vais a consola y ponéis:

sudo aptitude install vsftpd

De esta forma instalaréis el servidor FTP desde los repositorios de Ubuntu.

Configuración del servidor FTP. Editamos vsftpd.conf

Nos vamos a consola y ponemos:

sudo gedit /etc/vsftpd.conf

Podéis sustituir el gedit por cualquier editor de texto, como por ejemplo vi.

Si queréis poder entrar al servidor con vuestro usuario y clave de Ubuntu, y tener acceso a todos los archivos, incluido /media/discos_duros tenéis que poner la siguiente configuración (me salto las líneas comentadas #).

# Iniciar servidor al inicio del sistema.
listen=YES
# Podemos habilitar o deshabilitar el inicio de sesión de usuarios anónimos, lo ponemos en NO para que solo entremos nosotros.
anonymous_enable=NO
#
# Para poder loguearnos usuarios locales (nosotros).
local_enable=YES
#
# Permiso de escritura en los directorios.
write_enable=YES
# Log de lo que hace el cliente en el servidor.
dirmessage_enable=YES
#
#Hora del servidor (por defecto).
use_localtime=YES
# Activate logging of uploads/downloads.
xferlog_enable=YES
# Puerto de escucha FTP, lo dejamos por defecto (el 20).
connect_from_port_20=YES
# Mensaje de entrada al servidor
ftpd_banner=Bienvenido al servidor FTP de Bron
# Podemos restringir a los usuarios a su propio /home/. Selecciona YES para restringir, y NO para tener acceso a todos los archivos y carpetas.
chroot_local_user=NO

secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Los propios comentarios en el código explican qué significa cada parámetro (explicados por nosotros).

Para tener un usuario encerrado en su /home/ y otro de administrador:

# 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_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

Creas un archivo:

sudo gedit /etc/vsftpd.chroot_list

Y pones el nombre del usuario que quieres de administrador, aplicas cambios y reinicias el servidor.

De esta forma, todos los que no estén en la lista, estarán encerrados en su /home/

Iniciar, parar y reiniciar el proceso vsftpd

Para iniciar el servidor FTP una vez configurado a nuestro gusto.

sudo /etc/init.d/vsftpd start

Para parar el servidor FTP.

sudo /etc/init.d/vsftpd stop

Para reiniciar el servidor FTP.

sudo /etc/init.d/vsftpd restart

Si tienes alguna duda pon un comentario y te responderemos, el manual se irá ampliando.

Servidor FTP mediante SSH

http://www.redeszone.net/gnu-linux/servidor-ssh-en-ubuntu-manual-para-configurar-un-servidor-ssh-en-ubuntu-y-entrar-a-tu-equipo-de-forma-remota-con-seguridad/

Para enjaular usuarios al utilizar SFTP debemos editar el fichero /etc/ssh/sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server (lo ponemos como comentario)

Añadimos al final:

Subsystem sftp internal-sftp
Match user redeszone
ChrootDirectory /home/jail/home
AllowTcpForwarding no
ForceCommand internal-sftp

Esta parte está muy relacionada con enjaular el SSH que hemos hecho anteriormente, miraos el otro manual.