No exponga la carpeta .git, que puede contener información sensible
Cuando inicializa y despliega su aplicación a través de Git, se crea una carpeta . git
que contiene información necesaria. Si la carpeta . git
es accesible a través de un servidor web o frontend a través de Internet, puede potencialmente filtrar datos sensibles
Peor aún, si tiene credenciales almacenadas en algún archivo de configuración
Utilice estos herramientas para encontrar las credenciales en el repositorio de GitHub
Si no está seguro de si tiene .git en algún lugar de sus aplicaciones web, puede utilizar un escáner de vulnerabilidades de seguridad como OpenVAS, Gitjacker u otros mencionados aquí
Gitjacker es más que detectar el directorio .git. Descargar el directorio completo
Hay múltiples maneras de manejar esto
Puede elegir no mantener la carpeta . git
en el servidor o bloquear cualquier petición. Bloquear la petición es bastante sencillo, y así es como puede lograrlo dependiendo del servidor web que utilice
Nginx
Si utiliza Nginx, puede añadir la siguiente directiva de ubicación
en el archivo nginx.conf
location ~ /\.git {
deny all;
}
Lo anterior instruiría a Nginx para lanzar 403 como a continuación siempre 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
Elija lo que elija, no olvide reiniciar el Nginx después de hacer el cambio de configuración
service nginx restart
Apache HTTP
Veamos cómo bloquear .git
en el servidor web Apache. Puede utilizar RedirectMatch
o DirectoryMatch
para conseguirlo
Utilizar RedirectMatch es probablemente lo más fácil. Sólo tiene que añadir lo siguiente en httpd.conf
o en el archivo .htaccess
RedirectMatch 404 /\.git
Lo anterior arrojaría 404 cuando alguien acceda a .git, y lo siguiente mostrará 403
RedirectMatch 403
/\
.git
A continuación, intentaremos utilizar la regla DirectoryMatch añadiendo lo siguiente en el archivo httpd.conf
<DirectoryMatch "^/.*/\.git/">
Denegar desde todos
</Directorymatch>
Reinicie el Apache y acceda a la URL, incluyendo .git; mostrará el error 403 Forbidden
Cloudflare
Este es mi favorito. ¡Bloquea la petición en el borde!
Pero, como puede adivinar, esto sólo funcionará si su sitio está acelerado a través de la red Cloudflare
- Iniciar sesión en Cloudflare
- Vaya a la pestaña Cortafuegos >> Reglas del Cortafuegos >> Crear una regla del Cortafuegos
- Dé un nombre a la regla - Bloquear GIT
- Seleccione el campo - URI
- Operador - contiene
- Valor - .git
- Elija una acción - Bloquear y guardar
Tardará alrededor de 1 minuto en propagar la regla por todos los centros de datos de Cloudflare. Una vez hecho esto, Cloudflare hará el resto
Una cosa a tener en cuenta, cuando implementa la regla del cortafuegos de Cloudflare para bloquear, tiene que asegurarse de que el origen no está expuesto. De lo contrario, un atacante puede eludir la nube flare para acceder a los archivos .git
Conclusión
Espero que lo anterior le ayude a mitigar el riesgo de exponer el directorio .git.