Git es un sistema de control de versiones muy de moda ahora entre desarrolladores, fue escrito por y para programadores. Sin embargo al verlo funcionar puedes darte cuenta de su potencial en aplicaciones distintas a la programación, como la seguridad de un sitio web y la posibilidad de revertir cualquier intervención en milisegundos.
Yo había diseñado mi propia herramienta para saber si he sido intervenido, peo no con todas las habilidades que ya trae git.
En mi caso hacia un listado de toda la estructura de directorios y cada archivo después a esa lista le agregaba la sumatoria del archivo, la cual aun se usa para comprobar si el archivo que bajamos de algún servidor no ha sido alterado mientras lo bajamos o si no ha llegado corrupto, de igual forma sabía si faltaba un archivo o si ahora tenía un archivo de más que antes no tenía, un posible webshell
Si alguien modifica un archivo de tu sitio web, tú sabrías que su sumatoria ha cambiado, incluso si se mantiene la misma fecha y el mismo tamaño en bytes del archivo, ya no es el mismo archivo. Esto te ayudaría a saber que posiblemente en algún archivo se inyecto algún backdoor o se le escribió código que antes no tenía. Claro podría saber que el archivo fue modificado, pero no donde fue modificado por lo que tendría que leer el código de todo el archivo en busca del cambio.
Ejemplo:
md5sum wp-settings.php
264eb46f0e17c74c5a60b8928371db51 wp-settings.php
Si le hiciera cambios al archivo wp-settings.php ese hash cambiaria, de esa forma se que fue modificado.
Ahora git se presenta como una herramienta para programadores pero que puede servir con un propósito colateral asegurar sistemas y servidores, asi como su inmediata recuperación. Por supuesto nunca dejando de lado una buena copia de seguridad.
Git hace lo que he hecho yo antes, pero además maneja un sistema que en Windows fue bautizado como shadow copy y que años antes ya hacia norton con su sistema go back.
Con git puedes indexar un directorio, por ejemplo el directorio raíz de un sitio web, agregar todos los archivos al índice e inmediatamente saber si ha sido agregado un archivo de mas, ha sido borrado alguno o mejor aun donde y en que parte del archivo se modifico un archivo mostrando incluso la modificación hecha. Por si no fuera suficiente tiene la capacidad de restaurar los archivos modificados o borrados.
Con esas habilidades corriendo en un servicio del sistema operativo y después de un deface a un sitio web, el lamo que ataco no alcanzaría a llegar a zone-h antes de que el sitio ya se hubiera sanado así mismo. Tiene ciertas limitantes, si el sitio está mal programado de origen y permite sql inyección no hay mucho que hacer. Pero esa ya es una falla del programador no del sistema o de git.
Git funciona en local pero también se pueden hacer repositorios remotos que permitirían clonar sitios web en caso de un ataque DDoS podrías crear mirrors en segundos
Dicho lo anterior git asegura los archivos de cualquier carpeta no necesariamente sitios web, cualquier sistema local o de internet y con imaginación incluso usarlo en herramientas de respaldo incremental en lugar de comprar costosas soluciones que hacen exactamente lo mismo.
El siguiente video puede ejemplificar la funcionalidad de git
Como dato curioso, git fue realizado por Linus Torvalds y a pesar de todo lo que ha dicho sobre Richard Stallman sigue usando su filosofía e incluso la GNU GPL v2.
Muy buena info Last, personalmente ando haciendo una implementacion de este tipo y esta info me viene estupenda.
Saludos!