Que es y como instalar un servicio FTP en Ubuntu

Una de las grandes ventajas de Ubuntu, y en general de cualquier distribución Linux, es que puedes montar de forma muy sencilla diferentes servicios, y entre los servicios mas interesantes que podemos disfrutar en nuestra máquinas es un servicio ftp.

Para aquellos mas legos en Linux, y en el mundo de la informática en general, indicar que un servidor es un dispositivo que provee servicios a otros equipos, que se conocen como clientes.

Y ¿que es un servicio? Pues un servicio o demonio, es una aplicación o programa que se ejecuta en segundo plano, y cuya función mas habitual es la de ofrecer servicios a otros programas.

En este artículo, veremos como instalar de forma muy sencilla un servicio FTP. FTP es un protocolo, en particular un protocolo de transferencia de archivos. Es mas, se trata del protocolo de transferencia de archivos mas utilizado en Internet.

Que es y como instalar un servicio FTP en Ubuntu. Portada.

Instalación del servicio FTP con vsftpd

Hemos de decir primero, que el servidor vsftpd, se distribuye bajo licencia libre GNU GPL y puede descargarse de la página oficial de vsftpd.

Vsftpd (Very Secure FTP Daemon), es un servicio FTP que permite implementar servicios de archivos mediante protocolo FTP, caracterizándose principalmente porque se trata de un sistema muy seguro, a la vez que muy sencillo de configurar.

Puedes instalar el paquete correspondiente, al servidor vsftpd, en un ordenador con Ubuntu, desde el terminal, con el siguiente comando:

apt-get install vsftpd

Después de haber instalado el servicio FTP, éste se queda iniciado y se iniciará automáticamente cada vez que arranque el sistema.

El fichero de configuración es muy extenso, por que está autodocumentado con muchos comentarios, para ver el documento, desde el terminal, ponemos el siguiente comando:

cat /etc/vsftpd.conf

En este caso, para quitarse paja de encima, podemos ver las opciones activas usando grep, pidiendo las lineas que no comiencen por #:

cat /etc/vsftpd.conf | grep -v “^#”

El resultado, es este:

listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

En la configuración inicial, no se permite el acceso anónimo y si el acceso mediante las cuentas de usuarios locales del sistema. Los demás parámetros, los describiremos más adelante.

Como añadir usuarios

Para poder probar las conexiones, a parte de nuestro usuario personal, vamos a crear otro:

useradd -d /home/prueba -m -s /bin/bash prueba

Y le proporcionamos una clave

passwd prueba

El cliente gráfico Filezilla

Por otro lado, además del servicio FTP, es necesario para los otros usuarios, instalar un cliente, que permita acceder al servicio. El software Filezilla Client, es un cliente gráfico FTP. Es un software multiplataforma desarrollado por Filezilla-Project, de código abierto y licencia GPL.

Sitio oficial de descarga de Filezilla Client

Para instalar Filezilla Client en GNU/Linux Ubuntu es más recomendable hacerlo a través de la instalación de un paquete debian, ya que la distribución que se puede descargar del sitio oficial es el código fuente del software y necesita compilarse una vez descargado.

El paquete de instalación Filezilla Client para Ubuntu, se llama filezilla. Puedes instalarlo mediante comando o desde el centro de software de ubuntu. Para instalarlo desde el terminal solo tienes que ejecutar el comando,

sudo apt install filezilla

Inicio y parada del servicio FTP

El servicio se gestiona mediante el script /etc/init.d/vsftpd. Se debe de ejecutar como superusuario o utilizando el comando sudo para ejecutarlos. En la administración del servicio podemos iniciarlo, detenerlo, reiniciarlo o comprobar su estado.

Administración del servicio vsftpd con script:

Acción Comando
/etc/init.d/vsftpd
status
Comprobar
el estado del servicio
/etc/init.d/vsftpd
stop
Detener
el servicio
/etc/init.d/vsftpd
start
Iniciar
el servicio
/etc/init.d/vsftpd
restart
Reiniciar
el servicio

También podemos usar el comando service, para administrar el servicio sabiendo que el nombre con el que se reconoce al servicio de Ubuntu es vsftpd.

Administración del servicio vsftpd con el comando service:

Acción Comando
Service vsftp status Comprobar el estado del servicio
Service vstfpd stop Detener
el servicio
Service vsftpd start Iniciar
el servicio
Service vsftpd restart Reiniciar
el servicio

Cuando está iniciado vsftpd, el servicio debe de estar escuchando en el puerto 21. Puedes comprobarlo con el comando netstat -ltn que hay un servicio en ese puerto 21.

Otros archivos

El archivo /etc/ftpusers contiene una lista de los usuarios del sistema a los que se deniega el acceso mediante ftp. Entre esos usuarios, se deniega el acceso al usuario root como medida de seguridad.

El archivo /var/log/vsftpd.log registra la información sobre las conexiones ftp establecidas. Es importante consultar este archivo para resolver cualquier incidencia producida durante las conexiones o para hacer una evaluación del comportamiento del servicio.

Enjaular Usuarios

Si los usuarios locales del servidor se conectan remotamente mediante un cliente ftp al servicio ftp podrán acceder a sus carpetas personales y además al resto del sistema de archivos. Esto es peligroso y un fallo de seguridad.

Vamos a explicar, como limitarlos a su carpeta /home/usuario. Este proceso se le llama chroot (enjaular).

Antes de nada vamos a sacar una copia de seguridad del fichero de configuración:

mv /etc/vsftpd.conf /etc/vsftpd.conf.backup

Vamos a dejar limpio el archivo:

cat /etc/vsftpd.conf.backup | grep -v “^#” > /etc/vsftpd.conf

Añadimos al siguiente configuración al final del fichero /etc/vsftpd.conf:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

A continuación creamos el fichero /etc/vsftpd.chroot_list

nano /etc/vsftpd.chroot_list

Y ponemos nuestro usuario para evitar ser enjaulados.

Por último, reiniciamos el servicio:

restart vsftpd

Al final de este punto, el fichero de configuración debería de estar así:

listen=YES
anonymous_enable=YES
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Usuarios anónimos

Si se realiza una conexión anónima, se tiene acceso a la carpeta /srv/ftp que será compartida para todos los accesos anónimos.

Se tiene que crear un fichero en esta carpeta:

touch /srv/ftp/hola.txt

Las conexiones anónimas se podrán hacer con los nombres del usuario anonymous y ftp (sin ninguna contraseña).

Editar el fichero de configuración para permitir el acceso a usuarios anónimos:

anonymous_enable=YES

Reiniciar el servicio:

restart vsftpd

Conclusión

Con estos sencillos pasos, tendríamos configurado un servicio ftp en un Ubuntu.