¿Cómo bloquear .git en Apache, Nginx y Cloudflare?

No exponga la carpeta .git, que puede contener información confidencial.

Cuando inicializa e implementa su aplicación a través de Git, crea una carpeta .git que contiene la información necesaria. Si se puede acceder a la carpeta .git a través de un servidor web o una interfaz a través de Internet, es posible que se filtren datos confidenciales.

Peor aún, si tiene credenciales almacenadas en algún archivo de configuración.

Si no está seguro de tener .git en alguna parte de sus aplicaciones web, puede usar un escáner de vulnerabilidad de seguridad como OpenVAS, Gitjacker u otros mencionados aquí.

Gitjacker es más que detectar el directorio .git. Descarga todo el directorio.

Hay varias formas de manejar esto.

Puede optar por no mantener la carpeta .git en el servidor o bloquear cualquier solicitud. Bloquear la solicitud es bastante sencillo, y así es como puede lograrlo según el servidor web que utilice.

Nginx

Si está utilizando Nginx, puede agregar la siguiente directiva de ubicación en el archivo nginx.conf

location ~ /\.git {
  deny all;
}

Lo anterior le indicaría a Nginx que arroje 403 como a continuación cada vez que haya una solicitud que contenga .git

Alternativamente, puede devolver 404 si no quiere que un atacante asuma que tiene .git en el servidor.

location ~ /\.git {
  return 404;
}

Y esto devolvería el código de estado HTTP como 404 como se muestra a continuación.

Independientemente de lo que elija, no olvide reiniciar Nginx después de realizar el cambio de configuración.

service nginx restart

apache HTTP

Veamos cómo bloquear .git en el servidor web Apache. Puede usar RedirectMatch o DirectoryMatch para lograr esto.

Usar RedirectMatch es probablemente el más fácil. Solo necesita agregar lo siguiente en el archivo httpd.conf o .htaccess.

RedirectMatch 404 /\.git

Lo anterior generaría 404 cuando alguien acceda a .git, y lo siguiente mostrará 403.

RedirectMatch 403 /\.git

A continuación, intentemos usar la regla DirectoryMatch agregando lo siguiente en el archivo httpd.conf.

<DirectoryMatch "^/.*/\.git/">
  Deny from all
</Directorymatch>

Reinicie Apache y acceda a la URL, incluido .git; mostrará el error 403 Prohibido.

Llamarada de la nube

Este es mi favorito. ¡Bloquee la solicitud en el borde!

Pero, como puede adivinar, esto solo funcionará si su sitio se acelera a través de la red de Cloudflare.

Inicie sesión en Cloudflare Vaya a la pestaña Firewall >> Reglas de Firewall >> Cree una regla de Firewall

Dar un nombre de regla – Bloquear GIT Seleccionar campo – Operador URI – contiene Valor – .git Elegir una acción – Bloquear y guardar

Se tardará alrededor de 1 minuto en propagar la regla en todos los centros de datos de Cloudflare. Una vez hecho esto, Cloudflare hará el resto.

Una cosa a tener en cuenta, al implementar la regla de firewall de Cloudflare para bloquear, debe asegurarse de que el origen no esté expuesto. De lo contrario, un atacante puede eludir Cloudflare para acceder a los archivos .git.

Conclusión

Espero que lo anterior lo ayude a mitigar el riesgo de exponer el directorio .git.

Botón volver arriba