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
- Linux Virtual Server (Cluster)
- UltraMonkey (Integra LVS y Heartbeat)
- Bind9 (Servicio DNS)
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
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

DAW-UT03-Instalación y administración de servidores de alta disponibilidad y alto rendimiento
By Manuel Jesús Rodríguez Arabi
DAW-UT03-Instalación y administración de servidores de alta disponibilidad y alto rendimiento
- 234

