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
apuntes:servicios_transferencia [2018/02/08 13:49] – [Servicio FTP (File Transfer Protocol)] Santiago Faciapuntes:servicios_transferencia [2019/01/04 13:02] (current) – external edit 127.0.0.1
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.1518097776.txt.gz · Last modified: 2019/01/04 13:02 (external edit)