# Añadir seguridad add\_header

## Comprobar seguridad del sitio.

Lo primero que realizaremos será la comprobación del sitio, dirigiéndonos esta pagina, donde introduciremos nuestro dominio sin protocolos, (https, http). [https://securityheaders.com](https://securityheaders.com/)/. si nos aparece una imagen como se muestra a continuación tu sitio tiene menos seguridad, y eso lo podemos remediar con la Header.

![](/files/TlQvJVbw9c4bSDg09fCd)

### Cabeceras que añadiremos.

```nginx
add_header X-Frame-Options "SAMEORIGIN" always; 
add_header X-Xss-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin" always;
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive" always;
```

Estas cabeceras son las básicas, por lo que no pasaremos hacer ninguna descripción, internet esta lleno de información sobre esto.

#### Otras cabeceras.

Estas cabeceras son mas delicadas, y aunque se suelen incluir hay que tener cuidado.

```nginx
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; font-src *;img-src * data:; style-src *" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
```

Content-Security-Policy: Esta cabecera es la que normalmente al añadirla rompe el sitio, por lo que si quieres añadirla puedes obtener mas información aquí: <https://developer.mozilla.org/es/docs/Web/HTTP/CSP>

Strict-Transport-Security:  Se encarga de obligar a los navegadores a conectarse de forma segura mediante https\:// pero no vale solamente con añadir la cabecera para que sea efectiva, además, hay que registrar el dominio para una plena funcionalidad.  <https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/>

### Comenzando la configuración.

![](/files/niukSzF7lkcprcm8rLoK)

{% hint style="danger" %}
Esta configuración puede romper tu servidor proxy si no la realizas adecuadamente, qué necesitas antes de comenzar. <mark style="color:orange;">**Añádelas una a una, así podrás saber si te da problemas con alguna app o configuración propia tuya**</mark>.
{% endhint %}

1. Conocimientos terminar, aunque básicos.
2. utilizar editor VIM. obligatorio, aunque básicos.
3. Continuar, porque los dos puntos anteriores son muy fáciles.

Este video te ayudara <https://drive.google.com/file/d/1bHYACebXciHEN4ngcDjsg1k190gKJIAd/view?usp=sharing>

Lo primero que haremos será abrir la terminar del Docker NGINX. Una vez en ella utilizaremos los siguientes comandos en el orden que figura.

```
¿Has hecho backup??? ejem CA Backup / Restore Appdata
1 cd
2 su
3 apt-get update && apt-get install -y vim
4 ls -a
5 cd /etc/nginx/conf.d/include
6 ls
7 vim proxy.conf
Ahora estamos en vim
- pulsamos a    (para comenzar a editer
- utilizamos el desplazamiento de cursor del teclado y nos desplazamos a la ultima linea al final de la linea, 
- pulsamor enter
- utilizando el raton para copiar las cabeceras
- pulsamos la tecla esc para entrar en modo comando y a continuacion introducimos.
- (ATENCIÓN comprueba que esta todo correcto y bien escrito.)
- :wq!    (w escribir, q salir de vim, ! realizar la operacion aun estando siendo utilizado el archivo)


```

Reinicianos NGINX y observamos el log mientras arranca para comprobar que no existen fallos.

Volvemos hacer el test  [https://securityheaders.com](https://securityheaders.com/)/ pulsa ctrl+F5 para vaciar cache.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://topete.gitbook.io/contenido/nginx-geoip2/agregue-geoip-a-nginx/anadir-seguridad-add_header.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
