Vamos a montar nuestro propio FTP en Linux Ubuntu 16.04, donde aprenderemos a enjaular a los usuarios de este y como impedir que se conecten anónimamente, además incluiremos un repaso de anteriores tutoriales DNS y HTTP (ya que lo necesitaremos para nuestro servidor FTP.
A continuación vamos a explicar brevemente la definición de un servidor FTP.
¿Qué es un servidor FTP?
En esencia, el servicio FTP permite la transferencia de archivos entre sistemas conectados a una red TCP/IP, basado en la arquitectura cliente-servidor. Desde un equipo cliente sepuede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo.
Está basado en el protocolo FTP (File Transfer Protocol o Protocolo de Transferencia de
Archivos).
Permite acceder a un sistema de archivos remoto, no solo para transferir archivos, sino
también para realizar las misma operaciones que suelen hacerse en modo local.
¿Para que sirve un servidor FTP?
Las aplicaciones más comunes de los servidores FTP suelen ser el alojamiento y
mantenimiento de sitios web, en el que sus clientes utilizan el servicio para subir sus
contenidos; o como servidor de backup (copia de seguridad) de los archivos importantes
que pueda tener una empresa.
Otras aplicaciones frecuentes son:
▪ Descargas de información: documentos, manuales, imágenes, vídeos, etc.
▪ Descargas de software: programas, actualizaciones, parches.
▪ Instalación remota de programas y sistemas operativos.
▪ Creación de imágenes de disco, clonación de equipos, etc.
Comenzando la práctica
Queremos montar una pequeña empresa de alojamiento web a la que llamaremos
Hosting. Para ello hemos preparado una infraestructura con las siguientes características:
• Disponemos de una máquina (hosting.pri) en la que se alojarán las páginas web.
• También hemos contratado dos conexiones de red, cada una con un ISP distinto.
Nuestra empresa dará los siguientes servicios a los clientes:
• Gestión y registro de nombres de dominio. Por lo tanto necesitaremos instalar el servicio DNS.
• Alojamiento web. Para ello instalaremos el servicio HTTP.
• Los clientes suben y actualizan sus propias páginas a través de FTP, de modo que también será necesario que esté disponible este servicio.
Basándonos en esta red, realizaremos la siguiente práctica.
Poner todo apunto antes
Asignaremos la IP 172.31.13.0/24 (255.255.255.0) para nuestro server, además necesitaremos. Al realizar esta práctica en VirtualBox le hemos añadido un Adaptador Puente y una red interna (la cual hemos configurado su ipconfig con 172.31.13.1, ya que la 0 es la dirección de red).
Luego haremos una actualización a los repositorios con apt-get update (recordar dar privilegios de root con sudo su).
Y en nuestro cliente añadiremos los hosts para que lo encuentre el navegador, la ruta es la siguiente C:\Windows\System32\drivers\etc (abrir con bloc de notas como administrador).
www.hosting.pri
www.cocinillas.pri
www.florexpress.pri
Instalación y configuración de nuestro servidor DNS
Instalaremos con apt-get install bind9 y configuraremos nuestro servicio/servidor DNS para que resuelva los siguientes nombres de
dominio: www.hosting.pri, www.cocinillas.pri y www.florexpress.pri
Vamos a configurar el archivo de nuestra zona con nano /etc/bind/named.conf.local, quedando de la siguiente forma para las tres zonas y la inversa.
Como podemos apreciar no hay esclavo, al ser solo un servidor, por ello solo tiene una zona inversa.
Creación y configuración de nuestra zona directa e inversa
Vamos a configurar nuestra zona directa e inversa, para crear nuestra zona directa nos vamos a la siguiente ruta /etc/bind y copiamos la plantilla db.local para crear una nueva bajo el nombre db.hosting.pri (repetimos la operacion para florexpress, cocinillas y la inversa).
Ahora con nano podremos a configurarla tal como se muestra en las siguientes imagenes.
Si tienes algún error lo podrás comprobar con service bind9 status y revisa las imagenes anteriores.
Instalación de nuestro servidor web HTTP
Vamos a proceder a instalar nuestro servidor web con Apache con apt-get install apache2, nuestros tres sitios «Hosting, Cocinillas y Florexpress» tendrán las siguientes características.
Vamos a crear un acceso para cada uno de nuestras webs, lo haremos con mkdir
Luego crearemos en cada uno de ellos un archivo index.html con nano y crearemos un título de bienvenida (para saber que funcionan).
Haremos propietario el directorio «www» y sus directorios al usuario «www-data» que pertecene al grupo «www-data»
Ahora procedemos a crear los respectivos VirtualHost de Hosting, Conicillas y Florexpress. Para ellos nos vamos a la siguiente ruta /etc/apache2/sites-available y copiamos la plantilla por defecto 000-default.conf para cada uno de nuestros sitios sitios, menos para Florexpress que emplearemos la plantilla default-ssl.conf ya que tiene el certificado de seguridad SSL.
Con nano procedemos a configurar hosting.conf como la siguiente imagen, haremos lo mismo con los respectivos VirtualHost y sus imagenes.Hosting ademas requiere una autenticación al usuario webmaster, del cual podéis ver los pasos en la siguiente imagen.
Debemos instalar el módulo SSL para el certificado de seguridad de Florexpress con a2enmod ssl
Habilitaremos nuestro sitio con a2ensite, lo repetiremos con cada uno de ellos.
Añadiremos nuestra ip de red de la maquina (ojo! esta mal puesta en la imagen es 172.31.13.0, junto a su máscara, a nuestra ip de cliente.
Si tenemos problema con la ip de nuestro adaptador puente, podremos emplear el siguiente comando para añadirla «manualmente»
Comprobamos nuestros sitios desde el navegador cliente y ¡Felicidades, Ya solo te queda el servicio FTP!
Comprobación www.hosting.pri
Comprobación www.cocinillas.pri
Comprobación www.florexpress.pri
Instalación y configuración de nuestro servidor FTP
Para terminar vamos a instalar nuestro servidor FTP, los cuales los usuarios enjaulados solo podrán editar sus propias páginas/sitios. Instaremos el servicio con apt-get install vsftpd
Vamos a crear el usuario de acceso para cada sitio del ftp, con adduser para hosting, cocinillas y florexpress (pondremos de contraseña usuario, por ejemplo, aunque es una contraseña debil).
Ahora vamos a configurar el acceso de nuestro ftp editando con nano el archivo vsftpd.conf, situado en /etc/vsftpd.conf
Las opciones que debemos configurar son las de las imágenes de arriba, la cual procederé a explicarlas:
- anonymous_enable=NO: Deshabilitar el acceso para usuarios anónimos (debe estar registrado).
- local_enable=YES: Permite acceso a los usuarios locales.
- write_enable=YES: Permisos de escritura a los usuarios registrados.
- chroot_local_user=NO: Permite enjaular usuarios, tras una lista que configuraremos a continuación.
- chroot_list_enable=YES: Habilitar lista de usuarios.
- chroot_list_file=/etc/vsftpd.chroot_list: Indicaremos donde esta el archivo de usuarios enjaulados.
- allow_writeable_chroot=YES: Da permisos de escritura a todos los ususarios registrados (en mi caso tuve que escribirlo).
Toca el turno de enjaular los tres usuarios, como hemos dicho con
chroot_local_user=NO y la ruta /etc/vsftpd.chroot_list
Vamos a enjaular a cada usuario a su respectivo sitio, para ellos accedemos con nano a la ruta /etc/passwd, procedemos a «añadir» la ruta por la de cada sitio con su index.html. Nota: IMPORTANTE TERMINAR LA TURA CON «/»
Para terminar otorgamos permisos de escritura sobre los directorios personales de los usuarios, para que tengan permisos de escritura.
Empezamos con chgrp para que pasen a su respectivo grupo. Luego añadiremos los permisos individuales con chmod para permisos de escritura en cada usuario y su sitio.
Con ls -l comprobamos los permisos que hemos añadido.
¡Ya hemos terminado nuestra tutorial! Ahora conéctate con FileZilla con la IP de tu máquina, usuario y contraseña, además podrás comprobar los permisos de escritura subiendo algún archivo.