7. Asegurar Servicios#

7.1. ¿De qué va este tema?#

Se trata de asegurar servicios. Es decir, resolver las siguientes cuestiones:

  1. ¿Cómo garantizo la disponibilidad del servicio?

  2. ¿Cómo garantizo la confidencialidad en el intercambio de datos?

  3. ¿Cómo garantizo la integridad de los datos?

Recuerda repasar lo visto en:

7.2. Clases#

Le dedicaremos unas 8 sesiones de clase. En realidad se repasa rápidamente algunos conceptos que se ven en el modulo de Seguridad y Alta disponibilidad, concretándolo en los servicios vistos este trimestre. Se usarán dos estrategias:

  • Uso de certificados X509 para asegurar HTTP (necesito autoridad certificadora)

  • Uso de SSH para transferencia de archivos segura

7.2.1. Asegurar un Servicio#

  • Repaso conceptos:

    1. Asegurar equipo (HW / SW / Red). TCP/IP no es seguro (y no pasa nada)

    2. Asegurar el servicio (Capa Aplicación). Protocolo TLS

    3. Asegurar el canal de conexión (transferencia y acceso)

  • Identificación (certificados) y encriptado (protocolos seguros)

  • No existe el sistema 100% seguro, por lo tanto:

    1. Actualiza (update)

    2. Monitorea (logs)

      1. Del Sistema o vía journalctl

      2. De cada servicio

  • Dos Estrategias:

    1. Estrategia Certificados (X.509v3 RFC 5280): Con AC (certificación externa). Para servicios públicos de acceso

    2. Estrategia SSH: Sin AC (pero con infraestructura PKI). La más utilizada para acceder (autenticarse) y transferir archivos.

Actividad: asegurando tu servidor y tus servicios

  1. ¿Qué servicios públicos hay en tu servidor?

  2. ¿Quien puede entrar?

  3. ¿Quien está conectado y quien fue el último que se conectó?

  4. ¿Cómo se puede autenticar un usuario a tu máquina?

  5. Actualiza el sistema (ahora)

  6. Programa el sistema para que se actualice de forma automática (crontab)

  7. Revisa el Log de SSH

  8. Revisar los logs, usando journalctl

7.2.2. Obtener Certificados#

  1. Letsencrypt : la CA automatizada (buena, bonita y barata)

  1. Obtener Certificados

  • Instala CertBot (lo usarás en modo standalone)

  • Apaga servidor (si está en puerto 80). Hay otras opciones también.

  • Solicita un certificado (para un dominio o varios) (certonly –standalone)

  • Comprueba la validez (renovar cada 90 días) (certificates / renew)

Actividad. Obtener Certificados X.509

  1. ¿Qué versión de certbot estás utilizando?

  2. ¿Qué certificados están instalados?

  3. ¿Dónde están los certificados?

  4. ¿Cuándo van a caducar?

  5. Crea un certificado para tu dominio (en modo standalone) (-d)

  6. Revisa el contenido de la parte pública del certificado

  7. Revisar el contenido de la parte privada del certificado

7.2.3. Instalación servicio HTTPs#

Virtual Hosts (un servidor, varios servicios):

  1. IP-based: misma IP, diferentes servicios (puertos)

  2. Name-based: diferentes dominios en un servicio

  3. Ejemplos de Configuraciones ( VirtualHost Examples )

Configurar el Servidor : http, https o ambos. En el caso de https:

  1. ¿Está activado el módulo ssl? (vía a2enmod o enlace simbólico)

  2. ¿En qué puerto va a escuchar? (WKP: 443)

  3. ¿Qué servidor (virtual host) va a tener activado SSL/TLS? (p.ej default-ssl.conf)

  4. ¿Qué certificados vas a utilizar? (LetsE: Certificado + Clave privada), o certificado CA + Certificado dominio + Clave Privada)

  5. Comprobar. Certificación de Seguridad (Uso de SSLabs . )

Actividad. Instalar el servicio HTTPs

Instala https en tu servicio público ( Official How-to )

  1. Comprueba acceso http

  2. Comprueba acceso https

  3. ¿Están abiertos los puertos del firewall?

  4. ¿Puedes ver los detalles de tu certificado?

  5. Comprueba el nivel de seguridad (ojo que todo es relativo): Uso de SSLabs .

7.2.4. Instalación servicio SFTP#

Opciones con la transferencia de archivos

  • FTP/S (ftp + certificados + tls). Problema de configuración de puertos

  • SFTP (sobre ssh). Más sencillo (un sólo puerto) y potente

  • ¿ Cual es mejor ?

Configurar un Servicio SFTP / How to setup SFTP :

  1. Configura los usuarios:

    1. Crear un grupo de usuarios ftp (p.ej sftpusers)

    2. Añade usuarios (SIN shell, con home en directorio ftp y en el grupo de acceso)

    3. Decide (y comprueba) el acceso (o claves compartidas o con contraseña).

  2. Configura los directorios:

    1. El directorio raíz (p.ej /srv/ftp)

    2. Directorios de usuarios (p.ej /srv/ftp/user1 , /srv/ftp/user2, etc)

    3. Asigna los permisos adecuados (usuario y grupo sftpusers) en cada directorio. Revisa con atención

  3. Configura el sistema ftp dentro de SSH.

    1. Hazlo con mucha atención (para no quedarte sin acceso remoto)

    2. Decide la forma de autenticación (ideal con claves compartidas)

Uso de un cliente SFTP ( comandos )

Actividad. Transferencia de Archivos segura (sFTP, scp, rsync)

Repaso sobre el tema Servicio de Transferencia de Archivos . Repasa scp y rsync.

Configura un servidor público de transferencia de archivos sFTP con los siguientes criterios:

  1. Raíz: /srv/ftp

  2. Usuarios user1, user2 y user3

  3. Grupo: sftpusers

Deberás comprobar que te puedes conectar en modo cliente y:

  1. Ver la ayuda

  2. Ver los archivos de tu directorio

  3. Cambiar de directorio

  4. Descargar un archivo

  5. Subir un archivo

  6. Crear una carpeta

  7. Desconectarte

7.2.5. Archivos sobre HTTPs (WebDAV)#

Transferencia de Archivos sobre HTTPs: WebDAV

Configurar un servidor WebDAV usando Apache