DEV Community

Sergio Jiménez
Sergio Jiménez

Posted on

Proteger mediante CloudFlare un sitio alojado en S3

Cuando creamos un sitio web, como por ejemplo una landing page estática, y queremos alojarla en un sitio rápido y rentable sin servidor, podemos utilizar directamente un bucket de aws s3.

Esta funcionalidad es bien conocida, pero por si acaso te dejo la propia documentación de aws dónde explica cómo hacerlo: aws hosting s3

En esa documentación se indica que directamente podremos hacer accesible el contenido del bucket de forma pública, adjuntando una politica tal que así:

Image description

CDN y WAF de Cloudflare

Si queremos añadir capacidades de CDN y WAF podríamos utilizar el servicio de CloudFront de AWS, o alguna alternativa como puede ser Cloudflare que nos permite también empezar con un nivel gratuito de protección para nuestro site, además de otras capacidades de protección en email y DNS.

El problema es que si alguien accede al bucket de s3 directamente, podrá acceder como un bypass sin la protección de Cloudflare. Es decir, en vez de acceder por el dominio protegido por Cloudflare www.example.com podría usar http://www.example.com.s3-website.eu-central-1.amazonaws.com que como tiene una politica de permitir todo es accesible igualmente.

¿Cómo podemos evitarlo?

Cloudflare publica una lista de Ips desde las que accede a los servicios:
IP List Cloudflare

Podemos crear una política que permita solo esas ip's para el acceso a S3 dando un 403 si no llamas desde cloudflare.

La política viene a sustituir a la anterior por defecto, y os dejo el código json para que podáis copiar y pegar:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCloudFlareIP",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:getObject",
            "Resource": [
                "arn:aws:s3:::Bucket-Name",
                "arn:aws:s3:::Bucket-Name/*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "2c0f:f248::/32",
                        "2a06:98c0::/29",
                        "2803:f800::/32",
                        "2606:4700::/32",
                        "2405:b500::/32",
                        "2405:8100::/32",
                        "2400:cb00::/32",
                        "198.41.128.0/17",
                        "197.234.240.0/22",
                        "190.93.240.0/20",
                        "188.114.96.0/20",
                        "173.245.48.0/20",
                        "172.64.0.0/13",
                        "162.158.0.0/15",
                        "141.101.64.0/18",
                        "131.0.72.0/22",
                        "108.162.192.0/18",
                        "104.16.0.0/12",
                        "103.31.4.0/22",
                        "103.22.200.0/22",
                        "103.21.244.0/22"
                    ]
                }
            }
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

Sustituid Bucket-Name por el nombre de vuestro bucket.

Esta es una forma sencilla de alojar y proteger un sitio estático ya de por sí tremendamente seguro y rápido. Añadiendo capacidad de CDN y WAF haremos que nuestro site literalmente vuele.

Espero que haya sido útil, y nos vemos en otros post.

Top comments (2)

Collapse
 
tyba_hassan_d9e718e326a8e profile image
Info Comment hidden by post author - thread only accessible via permalink
Tyba Hassan

Para proteger un sitio web alojado en Amazon S3 con Cloudflare, puedes configurar tu dominio en Cloudflare y luego ajustar las configuraciones DNS para que apunten a los endpoints de S3. Esto proporciona seguridad adicional y mejora el rendimiento del sitio.

Para un retoque de raíces en tono burdeos, aplica el tinte directamente sobre las raíces y deja actuar según las indicaciones del producto para obtener un color uniforme y vibrante.

Collapse
 
tyba_hassan_d9e718e326a8e profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Tyba Hassan

Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more