viernes, 17 de abril de 2015

GIT: Usado como seguridad en WEB


Debido a los múltiples ataques sobre páginas web, donde inyectan todo tipo de código, 
sin un  control de versiones , es prácticamente imposible de averiguar que es lo que han tocado.
La forma más simple es copiar de nuevo todo, pero ,
¿ No te gustaría saber que es lo que han hecho para tomar la decisión más correcta ?

Una forma de mitigar este problema, es intentar usar a git.

Una forma muy sencilla, es clonar en el directorio www correspondiente el repositorio de la web.

Para evitar que puede modificar nuestro repositorio remoto, crearemos un usuario especifico para ello en el git, que lo único que puede hacer es bajarse código , pull, pero no vamos a permitir que pueda subir, push, nada.

Teniendo claro lo de arriba, y configurado, creamos un script o bat, que será ejecutado cada x tiempo por el sistema, que hará lo siguiente;

git diff origin/master > alert.txt

Este comando lo que hará es comparar que el código que se está ejecutando en el servidor es el que descargó en su día del repositorio remoto.
Si el fichero es cero bytes, es que esta TODO OK, donde la integridad de las web no ha sido atacada.


En caso de que alguien haya cambiado alguna parte de nuestro código, es tan sencillo deshacerlo y dejarlo como estaba;
git reset --hard origin/master


Esto deja el código como lo habíamos dejado en su momento, eliminando la inyección.

De paso, podemos forzar además una actualización desde el repositorio remoto y deshacer algún commit intencionado en el sistema local;
git pull -f > logpull.txt


El script , quedaría pues de esta manera;
git diff origin/master > alert.txt
git reset --hard origin/master
git pull -f > logpull.txt


Enviar por mail o otro sistema los ficheros logpull.txt y alert.txt para ver si alguna cosa rara.

Android y Git. Disponer del hash automáticamente.

Una de las cosas a las que estoy acostumbrado, es tener siempre en mi código, el hash/tag/versión del control de versiones que estoy usan...