Práctica 7#

Equipo ARFA-FGFG-ROFM#

  1. Arganis Ramírez Francisco - 108003620
  2. Flores García Fernando - 314107035
  3. Romo Olea Fhernanda - 314284286

Nombre de Dominio e IP#

Nombre de dominio IP pública de la VM
tacosdorados.cf 20.213.119.72

Directivas de configuración de Apache#

A continaución se explican las directivas utilizadas en la configuración de seguridad de Apache:

ServerTokens#

ServerTokens ProductOnly

ServerTokens especifica el tipo de información adicional sobre el servidor que se incluye en el campo Server de la cabecera de la respuesta.

La opción predeterminada es Full y hace que el servidor responda peticiones con la versión de Apache, el tipo de sistema operativo e información de módulos compilados. La opción ProductOnly hace que no se incluya en la respuesta ninguno de estos datos.

Por seguridad, no se debe hacer pública información no indispensable sobre el servidor. Por ejemplo, sin ServerTokens ProductOnly un atacante podría saber que el servidor está corriendo en un sistema operativo del cual se conoce alguna vulnerabilidad. Sin embargo, en la misma documentación de Apache se recomienda usar al menos ServerTokens Minimal, que incluye únicamente la versión completa de Apache, pues no tener la versión dificulta la depuración de problemas.

ServerSignature#

ServerSignature Off

ServerSignature configura el pie de página (normalmente una línea con información del servidor) que se agrega en los documentos generados por el servidor.

La opción predeterminada es Off lo cual indica que no se incluya el pie de página.

Aunque puede ser útil (por ejemplo, para identificar qué servidor generó un mensaje error), igual que en el caso de la directiva anterior, por cuestiones de seguridad, es mejor no hacer pública información sobre el servidor.

TraceEnable#

TraceEnable Off

TraceEnable establece el comportamiento del servidor ante peticiones del método TRACE.

La opción predeterminada es On que permite peticiones TRACE. La opción Off hace que no se permitan las peticiones TRACE y se respondan con un error 405.

TRACE permite que el cliente reciba una respuesta con la información que le llega al servidor. El mensaje incluye, en el campo Via de la cabecera, la ruta de la cadena de peticiones. Esta información se puede usar con fines maliciosos por lo que es conveniente rechazar el método TRACE.

DirectoryMatch#

<DirectoryMatch "/\.git">
   Require all denied
</DirectoryMatch>

DirectoryMatch es un bloque de directivas que solo se aplican a los archivos de los directorios que coinciden con una expresión regular especificada.

En este caso, la directiva de configuración Require all denied solo se aplica a directorios que empiezan con .git.

Require prueba la autoridad de un usuario autenticado. La opción all denied significa que ningún usuario está autorizado.

Con este bloque se niega el permiso a los directorios .git. Cualquier intento de acceder a los recursos de un directorio .git se responde con un error 403. Esto es importante porque el contenido del directorio de un sistema de control de versiones, usualmente ignorado por los desarrolladores, incluye todo el historial de cambios que se han realizado, incluyendo toda la información potencialmente sensible (como contraseñas) que ha sido eliminada de la versión final que se publica.

Trámite del certificado SSL con Let's Encrypt#

El comando utilizado para obtener e instalar el certificado SSL fue

# certbot --authenticator manual --installer apache --domain 'tacosdorados.cf' --domain '*.tacosdorados.cf'

La salida de este comando se puede consultar en el archivo salida_cerbot.txt.

VirtualHosts#

Se han configurado los siguientes 3 VirtualHosts:

tacosdorados.cf#

VirtualHost donde se encuentra la página del equipo. Las directivas de configuración se encuentran en 000-default.conf para HTTP y default-ssl.conf para HTTPS.

Página del equipo

docs.tacosdorados.cf#

VirtualHost donde se encuentra la documentación del kernel de Linux. También se puede acceder con el alias kernel.tacosdorados.cf. Las directivas de configuración, para HTTP y HTTPS, se encuentran en docs.conf .

Página de documentación de Linux

sitio.tacosdorados.cf#

VirtualHost donde se encuentra el sitio de tareas del curso. También se puede acceder con el alias tareas.tacosdorados.cf. Las directivas de configuración, para HTTP y HTTPS, se encuentran en sitio.conf .

Página del sitio de tareas

Redirección de HTTP a HTTPS#

A continuación se muestra la respuesta de una petición HTTP a los VirtualHosts, con código de error 301

tacosdorados.cf#

redes@tacosdorados:~$ curl -v "http://tacosdorados.cf/"
*   Trying 20.213.119.72:80...
* Connected to tacosdorados.cf (20.213.119.72) port 80 (#0)
> GET / HTTP/1.1
> Host: tacosdorados.cf
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Date: Tue, 07 Jun 2022 13:51:48 GMT
< Server: Apache
< Location: https://tacosdorados.cf/
< Content-Length: 232
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://tacosdorados.cf/">here</a>.</p>
</body></html>
* Connection #0 to host tacosdorados.cf left intact
redes@tacosdorados:~$

docs.tacosdorados.cf#

redes@tacosdorados:~$ curl -v "http://docs.tacosdorados.cf/"
*   Trying 20.213.119.72:80...
* Connected to docs.tacosdorados.cf (20.213.119.72) port 80 (#0)
> GET / HTTP/1.1
> Host: docs.tacosdorados.cf
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Date: Tue, 07 Jun 2022 13:52:08 GMT
< Server: Apache
< Location: https://docs.tacosdorados.cf/
< Content-Length: 237
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://docs.tacosdorados.cf/">here</a>.</p>
</body></html>
* Connection #0 to host docs.tacosdorados.cf left intact
redes@tacosdorados:~$
redes@tacosdorados:~$ curl -v "http://kernel.tacosdorados.cf/"
*   Trying 20.213.119.72:80...
* Connected to kernel.tacosdorados.cf (20.213.119.72) port 80 (#0)
> GET / HTTP/1.1
> Host: kernel.tacosdorados.cf
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Date: Tue, 07 Jun 2022 13:52:15 GMT
< Server: Apache
< Location: https://kernel.tacosdorados.cf/
< Content-Length: 239
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://kernel.tacosdorados.cf/">here</a>.</p>
</body></html>
* Connection #0 to host kernel.tacosdorados.cf left intact
redes@tacosdorados:~$

sitio.tacosdorados.cf#

redes@tacosdorados:~$ curl -v "http://sitio.tacosdorados.cf/"
*   Trying 20.213.119.72:80...
* Connected to sitio.tacosdorados.cf (20.213.119.72) port 80 (#0)
> GET / HTTP/1.1
> Host: sitio.tacosdorados.cf
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Date: Tue, 07 Jun 2022 13:52:25 GMT
< Server: Apache
< Location: https://sitio.tacosdorados.cf/
< Content-Length: 238
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://sitio.tacosdorados.cf/">here</a>.</p>
</body></html>
* Connection #0 to host sitio.tacosdorados.cf left intact
redes@tacosdorados:~$
redes@tacosdorados:~$ curl -v "http://tareas.tacosdorados.cf/"
*   Trying 20.213.119.72:80...
* Connected to tareas.tacosdorados.cf (20.213.119.72) port 80 (#0)
> GET / HTTP/1.1
> Host: tareas.tacosdorados.cf
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Date: Tue, 07 Jun 2022 13:52:36 GMT
< Server: Apache
< Location: https://tareas.tacosdorados.cf/
< Content-Length: 239
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://tareas.tacosdorados.cf/">here</a>.</p>
</body></html>
* Connection #0 to host tareas.tacosdorados.cf left intact
redes@tacosdorados:~$

Descripción de los archivos#

Archivo Descripción
apache2.tar Copia de seguridad de la configuración de Apache HTTPD en el directorio /etc/apache2
security.conf Archivo de configuración de seguridad
salida-mkdocs.log Bitácora de mkdocs al convertir los archivos Markdown a HTML
apache2-logs.tar.gz Copia de seguridad de las bitácoras de Apache HTTPD
virtualhosts.txt Listado de VirtualHosts en la configuración de Apache HTTPD
www.tar Copia de seguridad del directorio /var/www
letsencrypt.tar Copia de seguridad de los datos generados por certbot
registros-dns.txt Consulta DNS
diagnostico-http.txt Consulta HTTP
diagnostico-ssl.txt Consulta SSL
salida_cerbot.txt Salida del comando cerbot
000-default.conf Configuración del VirtualHost tacosdorados.cf HTTP
default-ssl.conf Configuración del VirtualHost tacosdorados.cf HTTPS
docs.conf Configuración del VirtualHost docs.tacosdorados.cf HTTP y HTTPs
sitio.conf Configuración del VirtualHost sitio.tacosdorados.cf HTTP y HTTPs

Creación de los recursos en Azure#

La explicación del procedimiento que se siguió para crear los recursos en Azure se encuentra aquí

Registro de nombre de dominio#

La explicación del procedimiento que se siguió para registrar el nombre de dominio en FreeNom y asociarlo a la zona DNS en Azure se encuentra aquí

Comandos para inicializar la máquina virtual#

La explicación de los comandos utilizados para inicializar la máquina virtual en Azure se encuentra aquí

Registros SOA, NS, A y CNAME#

Salida de las consultas DNS para los registros SOA, NS, A y CNAME se encuentra aquí

Salida de comandos en la máquina virtual como root#

La salida de los comandos en la máquina virtual como el usuario root se encuentra aquí