User Tools

Site Tools


apuntes:servicios_transferencia

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
apuntes:servicios_transferencia [2018/02/08 13:49] – [Servicio FTP (File Transfer Protocol)] Santiago Faciapuntes:servicios_transferencia [2018/02/08 14:32] – [Ejercicios] Santiago Faci
Line 155: Line 155:
 sftp>  sftp> 
 </code> </code>
 +
 +Conviene tener en cuenta que la IP asociada a un dominio puede cambiar. En ese caso el comando ''sftp'' de conexión con el servidor nos avisará de que quizás nos estén realizando un ataque //man in the middle// puesto que el guarda la firma del equipo y ahora ya coincide al haberse modificado su IP.
  
 <code bash> <code bash>
Line 175: Line 177:
 Couldn't read packet: Connection reset by peer Couldn't read packet: Connection reset by peer
 </code> </code>
 +
 +En el caso de que estemos seguros de que simplemente ha sido un cambio de IP y confiemos plenamente en el servidor al que nos vamos a conectar, podremos añadir dicho dominio al registro de //hosts conocidos// con el siguiente comando:
  
 <code bash> <code bash>
Line 182: Line 186:
 Original contents retained as /home/santi/.ssh/known_hosts.old Original contents retained as /home/santi/.ssh/known_hosts.old
 </code> </code>
 +==== Configuración del servicio FTP ====
  
-<figure+=== Creación de un sistema de cuentas de usuario === 
-{{ filezilla.png}} + 
-{{bareftp.png }} +El primer paso será instalar el servidor FTP ''proftpd'' y el módulo para que éste sea capaz de trabajar con Bases de Datos MySQL, puesto que usaremos una Base de Datos para almacenar los diferentes usuarios junto con la información necesaria. 
-<caption>Clientes gráficos para FTP/FTPS/SSH FTP</caption></figure>+ 
 +<code bash
 +santi@zenbook:$ sudo apt-get install proftpd proftpd-mod-mysql 
 +</code> 
 + 
 +En el sistema tendremos que crear un grupo y usuario al que asignaremos a todos aquellos usuarios que, más adelante, se registren a través de la Base de Datos 
 + 
 +<code bash> 
 +santi@zenbook:$ groupadd grupoftp 
 +santi@zenbook:$ useradd -s /bin/false -d /dev/null -g grupoftp usuarioftp 
 +</code> 
 + 
 +Y echando un vistazo a los ficheros ''/etc/passwd'' y ''/etc/group'' veremos cuáles son los UID y GID asignados 
 + 
 +<code bash> 
 +santi@zenbook:$ cat /etc/passwd | grep usuarioftp 
 +usuarioftp:x:1002:1003::/dev/null:/bin/false 
 +santi@zenbook:$ cat /etc/group | grep grupoftp 
 +grupoftp:x:1003: 
 +</code> 
 + 
 +De la salida de los dos últimos comandos podemos concluir que el usuario ''usuarioftp'' tiene un UID de 1002 y un GID de 1003 (que coincide con el grupo al que pertenece)Tomaremos esos valores como por defecto para los valores de UID y GID de los usuarios en la Base de Datos 
 + 
 +<code sql> 
 +CREATE DATABASE ftp; 
 +USE ftp; 
 + 
 +CREATE TABLE usuarios ( 
 + usuario VARCHAR(30) NOT NULL UNIQUE, 
 + password VARCHAR(80) NOT NULL, 
 + uid INTEGER default 1002, 
 + gid INTEGER default 1003, 
 + home VARCHAR(255), 
 + shell VARCHAR(255) default NULL, 
 + bloqueado BOOLEAN default 0 
 +); 
 + 
 +CREATE TABLE grupos ( 
 + nombre VARCHAR(30) NOT NULL, 
 + gid INTEGER NOT NULL, 
 + miembros VARCHAR(255) 
 +); 
 +</code> 
 + 
 +Activamos el módulo de SQL en la configuración de proftpd 
 + 
 +<file apache /etc/proftpd/modules.conf> 
 +. . . 
 +LoadModule mod_sql.c 
 +. . 
 +</file> 
 + 
 +Y en el fichero de configuración principal modificamos algunos parámetros 
 + 
 +<file apache /etc/proftpd/proftpd.conf> 
 +. . . 
 +# No es necesario que los usuarios tengan una consola de sistema 
 +RequireValidShell Off 
 +# Hace que los usuarios no puedan salir de su carpeta de inicio 
 +DefaultRoot ~ 
 +. . . 
 +</file> 
 + 
 +Ahora pasamos a configurar la conexión de proftpd con la Base de Datos 
 + 
 +<file apache etc/proftpd/sql.conf> 
 +SQLBackend       mysql 
 +SQLAuthTypes          Backend Crypt  
 +SQLConnectInfo        ftp@localhost usuario_mysql contrasena_mysql 
 +SQLUserInfo           usuarios usuario password uid gid home shell 
 +SQLGroupInfo          grupos nombre gid miembros 
 +SQLUserWhereClause    "bloqueado = '0'" 
 +</file> 
 + 
 +Para que los cambios sean efectivos tendremos que reiniciar el servicio 
 + 
 +<code bash> 
 +santi@zenbook:$ sudo service proftpd restart 
 +</code> 
 + 
 +Y registrar el grupo en la Base de Datos: 
 + 
 +<code sql> 
 +INSERT INTO grupos (nombre, gid, miembros) VALUES ("grupoftp", 1003, "usuarioftp"); 
 +</code> 
 + 
 +Por último, nos queda dar de alta algún usuario en la Base de Datos para comprobar que todo funciona correctamente 
 + 
 +<code sql> 
 +INSERT INTO usuarios (usuario, password, home) VALUES ("santi", PASSWORD("misupercontraseña"), "/var/ftp/santi"); 
 +</code> 
 + 
 +Habrá que asegurarse de que dicha carpeta existe y, en caso contrario, crearla y asignarle permisos correctamente 
 + 
 +<code bash> 
 +santi@zenbook:$ sudo chown -R usuarioftp:grupoftp /var/ftp 
 +</code> 
 + 
 +Y ahora ya podemos probar a conectarnos a nuestro servidor FTP con el nuevo usuario creado 
 + 
 +<code bash> 
 +santi@zenbook:$ ftp localhost 
 +Connected to localhost. 
 +220 Proftpd 1.3.5b Server (Debian) [::1] 
 +Name (localhost:santi):
 +</code>
  
-=== Configuración del servicio FTP === 
  
  
Line 216: Line 325:
  
 ===== Ejercicios ===== ===== Ejercicios =====
 +
 +  - Conectate a un servidor FTP y descarga varios ficheros evitando que el servidor te pida confirmación para descargar cada uno de ellos
 +  - Conectate a un servidor FTP y sube varios ficheros que se encuentran en diferentes carpetas en tu equipo local. En el servidor deben estar juntos en una sola carpeta que se llamara ''documentos''
 +  - Conectate al servidor FTP y elimina una serie de ficheros
 +  - A partir de tu máquina Debian 9 instala lo necesario para montar un sistema de usuarios en MySQL para el servidor FTP proftpd
  
 ---- ----
apuntes/servicios_transferencia.txt · Last modified: 2019/01/04 13:02 by 127.0.0.1