UT03. Instalación y administración de servidores de alta disponibilidad y alto rendimiento

2022-23

DESPLIEGUE DE APLICACIONES WEB

Introducción a la Alta disponibilidad y alto rendimiento

La alta disponibilidad permite que un servicio funcione correctamente ante un fallo software o hardware. En caso de fallo

Seguirá funcionando de forma transparente para los usuarios como si el fallo no hubiera ocurrido

Introducción a la Alta disponibilidad y alto rendimiento

¿Cómo se puede implementar la alta disponibilidad?

Configuración basada en HW

Configuración basada en SW

Ej: sistemas redundantes de alimentación, almacenamiento (RAID), de red, etc. (Reemplazo en caliente)

Clusters de Servidores que retoman actividad del nodo que falle

Introducción a la Alta disponibilidad y alto rendimiento

¿Cómo se puede implementar el alto rendimiento?

También con clusters de servidores

  • Evita la saturación de una máquina (Ej: balanceo de carga en servidor web)
  • Recursos son mejor gestionados (se reparten las tareas)

Introducción a la Alta disponibilidad y alto rendimiento

Alto rendimiento

  • mayor capacidad de gestión
  • escalabilidad
  • ampliación
  • mayor disponibilidad para los servicios

Alta disponibilidad

  • mayor tolerancia a fallos
  • flexibilidad
  • mayor tranquilidad a la empresa

Alta disponibilidad en GNU/Linux

Existen muchas herramientas (Sw y Hw)

Servicios

  • Servicios críticos (Active Directory)
  • Complementados con firewall, backups, direccionamiento ip
  • KeepAlived, HeartBeat...

Herramientas SW están destinadas a:

  • alta disponibilidad en servicios 
  • alta disponibilidad en datos

Datos

  • Esenciales, integradas con AD de Servicios.
  • Obj: Varias ubicaciones con datos sin problemas de consistencia o integridad

Alta rendimiento en GNU/Linux

Existen muchas herramientas

Generales

Usadas de forma general para cualquier servicio (Web, correo electrónico), también de forma individual (Telefonía Ip)

VoIP

  • Protocolo SIP.
  • SER
  • Kamailio
  • SIP-Router (Kamailio + SER)

Servicio de transferencia de ficheros. FTP.

File Transfer Protocol: empleado para transferencia de archivos en Internet. Uno de los más empleados.

PROBLEMA: No seguridad de la info.

La transferencia se realiza sin cifrar la información.

Hoy en día existen extensiones sobre el protocolo FTP que aseguran el cifrado en la transferencia, como FTPS, empleando el cifrado SSL/TLS.

No confundir con SFTP, este es implementado con el servicio SSH, usado para conexiones remotas seguras por consola.

Servicio de transferencia de ficheros. FTP.

¿Cómo funciona?

Como podemos observar para establecer una conexión FTP necesitamos: un servidor y un cliente

¿Qué cliente elegir?

Servicio de transferencia de ficheros. FTP.

¿Qué cliente elegir?

Pues depende del uso y la soltura que tengamos, uno de los más usados y recomendables es FileZilla. ¿Por qué?

Servicio de transferencia de ficheros. FTP.

Tipos de Usuarios

Básicamente hay 2 tipos:

Anónimos

Con acceso y permisos limitados

Del Sistema

Con cuenta creada en la máquina que ofrece el servicio

Con el server ProFTPD (tercer perfil): Usuarios Virtuales

Mismos accesos y permisos que usuarios del sistema sin necesidad de tener una cuenta creada. Clave gestionada mediante texto (etc/passwd), directorios LDAP, BBDD o servers RADIUS

Servicio de transferencia de ficheros. FTP.

Métodos Autenticación ProFTPD

Ficheros Auth del S.O

/etc/passwd y /etc/shadow

Directivas AuthUserFile y AuthGroupFile

Directivas AuthUserFile y AuthGroupFile

Necesario establecer  AuthPAMAuthorative a 'on'

Servicio de transferencia de ficheros. FTP.

Métodos Autenticación ProFTPD

Módulo mod_sql

LDAP

Módulo mod_ldap

RADIUS

Módulo mod_radius

Servicio de transferencia de ficheros. FTP.

Modos de conexión del cliente

Hay dos modos de establecer las conexiones de datos entre cliente y servidor:

  • Modo Activo
  • Modo Pasivo

Modo Activo

1. Cliente envía comando PORT (conexión de control) con un nro. de puerto > 1024 (para abrir conexión de datos).

2. Server inicia conexión de datos (no transferencia) en su puerto 20 y el puerto indicado en el paso 1 por el cliente (el firewall del cliente puede entenderlo como una amenaza externa, la conexión se inicia solicitando que el cliente abra un puerto).

3. Se usa la conexión de datos para transferir los archivos

Modos de conexión del cliente

Modo Pasivo

Modos de conexión del cliente

1. Cliente envía comando PASV (solicita una conexión en modo pasivo) .

2. Server responde con un nro. de puerto > 1024 (no el 20) que se usará para la conexión de datos. Usará uno distinto para cada conexión que inicie.

3. Cliente inicia la conexión de datos abriendo un puerto TCP disponible  > 1024 y conectándose con el puerto indicado en el paso 2. Cuando llega la solicitud al server se abre el puerto y se transmiten los archivos.

Tipos de transferencia de archivos

 Desde el punto de vista de FTP, los archivos se agrupan en dos tipos :

  • ASCII (texto plano como txt, ps, html, etc)
  • Binarios (exe, jpg, mp3, mp4, avi, etc)

Es muy importante saber el tipo de transferencia a realizar ya que puedes destruir la información del archivo.

Establecer permisos en ftp

 El protocolo FTP sigue los permisos similar en GNU/Linux => 3 grupos de permisos (propietario, grupo y otros)

Creado o subido del archivo

Grupo (group=g)

Grupo de usuarios que posee la propiedad del archivo

Otros (others=o)

Son el resto del mundo

Cada grupo puede tener 3 permisos (rwx => read, write, execute)

Establecer permisos en ftp

 Cada permiso => Equivalente numérico (r=4, w=2, x=1)

Mediante el comando chmod podemos cambiar esta configuración (requiere que el usuario pertenezca al grupo de administradores o superusuarios)

Establecer permisos en ftp

 Ejemplo (tomando el fichero anterior)

Servicio de transferencia de archivos en modo texto

 Sintaxis básica: ftp [host [port]]

Servicio de transferencia de ficheros. FTP.

Usaremos proFTPd, por ser de libre distribución, muy sencillo y de los más usados

Configuración de proFTPd

 Podemos decir que es similar a la configuración de un Server Apache.

/etc/proftpd/proftpd.conf

Permite Hosts Virtuales

1 host => varios dominios, con su propia configuración

Modularización

Act/Des funcionalidades a través de módulos

Posee dos ficheros de conf. principales:

/etc/ftpusers => usuarios no permitidos (root, bin, uucp, news)

/etc/proftpd/proftpd.conf => Configuración principal

Configuración de proFTPd privado

 Ya lo tendríamos en principio una vez instalado, solo permite el acceso a los usuarios con consola de comandos activa

con cualquiera de ese perfil que esté definido en /etc/passwd

ftp usuario_del_sistema@servidor_ftp

Configuración privada & anónima

# Inicio de la configuración Anonymous
# Usuario anónimo que entrará en el directorio ~ftp, esto es, en la variable $HOME del usuario ftp
# En Debian 6 (squeeze) ~ftp=/home/ftp . Este directorio será la raíz de los directorios en la conexión   
# ftp, esto es, /home/ftp estará enjaulado (chroot) de tal forma que aunque el usuario anónimo ftp     
# quisiera acceder a otros directorios situados fuera de /home/ftp no podrá acceder.
 <Anonymous ~ftp>

 # Después de hacer login anónimo mediante ftp el servidor se ejecuta con el usuario ftp y con el grupo     
     # nogroup
     User     ftp
     Group     nogroup
     

Configuración con múltiples dominios

 Podemos users del sistema y users virtuales (fichero similar a /etc/passwd), incluir AuthUserFile en fichero de configuración

ftpasswd --passwd --name user-empresa1 --file /etc/passwd.usuarios.virtuales --uid 107 --home /var/ftp/empresa1 --shell /bin/false

La configuración siguiente es decidiendo si el VHost será basado en nombre o en IP

ftpasswd --passwd --name user-empresa2 --file /etc/passwd.usuarios.virtuales --uid 108 --home /var/ftp/empresa2 --shell /bin/false

Múltiples dominios basados en nombre

 Supuesto: Ip: 192.168.10.1 Identifica ftp.manu.com y ftp.juan.com

1. Activar Include /etc/proftpd/virtuals.conf

<VirtualHost ftp.manu.com>
Port 2121
ServerName "Servidor FTP manu.com"
AuthUserFile /etc/passwd.usuarios.virtuales
DefaultRoot /var/ftp/manu.com/
RequireValidShell off
</VirtualHost>

2. Incluir en ese fichero la configuración para cada Host Virtual

¿Como sería para el dominio juan.com?

Múltiples dominios basados en Ip

 Supuesto: Ip: 192.168.10.1 Identifica ftp.manu.com y la ip 192.168.10.2 a ftp.juan.com

1. Activar Include /etc/proftpd/virtuals.conf

<VirtualHost 192.168.10.1>
Port 2121
ServerName "Servidor FTP manu.com"
AuthUserFile /etc/passwd.usuarios.virtuales
DefaultRoot /var/ftp/manu.com/
RequireValidShell off
</VirtualHost>

2. Incluir en ese fichero la configuración para cada Host Virtual

¿Como sería para el dominio juan.com?

Configuración final en ambos casos

Hay que asignar permisos a las carpetas de los hosts virtuales y recargar la configuración que acabamos de realizar.

1. chown ftp /var/ftp/manu.com /var/ftp/juan.com

2. service proftpd restart

Cuotas de disco

 Es obvio que la capacidad de almacenamiento no es infinita, debemos configurar las cuotas de disco para los usuarios

Include /etc/proftpd/modules.conf (LoadModule, mod_quotatab.c y mod_quotatab_file.c)

Por defecto desactivadas

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

Tenemos que sustituir ese código por el siguiente:

Cuotas de disco

<IfModule mod_quotatab.c>
 QuotaEngine on
 QuotaLog /var/log/proftpd/quota.log
   <IfModule mod_quotatab_file.c>
   QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
   QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
   </IfModule>
</IfModule>
     

Para proFTPd existen dos tipos de cuotas:

  • limit (soft y hard) --> restricción de espacio a usuarios
  • tally --> limita el nro de ficheros que se utilizan

Cuotas de disco - Creación / Asignación

# ftpquota --create-table --type=limit --table-path=/etc/proftpd/ftpquota.limittab


 # ftpquota --create-table --type=tally --table-path=/etc/proftpd/ftpquota.tallytab     

Ejemplo límite de espacio a 8GB para user1:

# ftpquota --add-record --type=limit --name=user1 --quota-type=user  
 --bytes-upload=8 --units=Gb --table-path=/etc/proftpd/ftpquota.limittab

Ejemplo límite de subida y bajada a 2GB para user1:

# ftpquota --add-record --type=limit --name=user1 --quota-type=user  
 --bytes-upload=2 --bytes-download=2 --units=Gb --table-path=/etc/proftpd/ftpquota.limittab

Cuotas de disco - Ver / Modificar / Desactivar

Visualización de los registros de cuotas

# ftpquota --show-records --type=limit --table-path=/etc/proftpd/ftpquota.limittab
 

Actualizar cuota de usuario

# ftpquota --update-record --type=limit --name=user1 --quota-type=user \
 --bytes-upload=2300 --units=Mb --table-path=/etc/proftpd/ftpquota.limittab 

Desactivar la cuota requiere borrar el registro:

# ftpquota --delete-record --type=limit --name=user-empresa1 --quota-type=user

Acceso seguro mediante TLS

 Solo hay que seguir los siguientes pasos:

Descomentar

Include /etc/proftpd/tls.conf

Crear claves pública y privada

Dos opciones:

  • openssl (ver apuntes)
  • proftpd-gencert (engloba los dos pasos)

Tenemos que modificar el fichero /etc/proftpd/tls.conf como indica en el fichero de ejemplo de la UT y recargar el servicio.

Modificar los permisos

mv /etc/ssl/private/proftpd.key /etc/ssl/
chmod 0600 /etc/ssl/proftpd.key
 chmod 0644 /etc/ssl/certs/proftpd.crt

Made with Slides.com