Cómo hacer un comprobador de integridad de archivos simple

2

He visto muchos comprobadores de archivos PHP en la red. Básicamente, calculan el hash sha de un archivo solicitado. Su PC consulta periódicamente el script y le avisa si el hash devuelto cambia.

El problema es: si el atacante obtiene acceso de escritura a mi carpeta web, puede cambiar el comprobador de archivos para devolver siempre el hash anterior, haciendo que el comprobador de archivos sea completamente inútil y engañoso.

Entonces, ¿cómo puedo verificar que el script del verificador de archivos no haya sido modificado?

    
pregunta Surfer on the fall 29.08.2012 - 23:13
fuente

2 respuestas

3

Puede colocar el comprobador de archivos fuera del directorio web y denegar los permisos de lectura / escritura para la cuenta que ejecuta el servidor web. En otras palabras, no permita que la cuenta que ejecuta el servidor web modifique el comprobador de archivos o los valores esperados para los archivos. Además, asegúrese de que la cuenta que ejecuta el servidor web no tenga permisos para cambiar los permisos del verificador de archivos y los valores esperados.

También puede hacer esto desde una máquina remota, que ejecuta el script y tiene los valores esperados, utilizando las carpetas compartidas del administrador de Windows (por ejemplo, \ PC \ D $ \ www \ file.php), o SSH en un Unix sistema basado.

Se trata de permisos, ya que durante más tiempo la cuenta que ejecuta el servidor web tiene el menor permiso necesario para ejecutarse y no tiene permiso para cambiar el archivo de script y los valores esperados, no hará que el comprobador de archivos sea inútil.

Si está interesado en un comprobador de integridad de archivos de servicio pesado, de forma gratuita, le recomiendo OSSEC .

    
respondido por el w.c 29.08.2012 - 23:44
fuente
1
  

si el atacante obtiene acceso de escritura a mi carpeta web

Entonces, no lo guarde en su carpeta web. Sin embargo, ¿qué les impide modificar archivos fuera de lo que usted considera su carpeta web?

  

Entonces, ¿cómo puedo verificar que el script del verificador de archivos no haya sido modificado?

No puedes. Sería trivial implementar un script que no esté almacenado en el sistema de destino y enviar el script a través de una sesión ssh, pero aún depende de muchos de los archivos del sistema de destino. Aunque lo hace un poco más difícil.

También debería prestar al menos la misma atención a la base de datos de firmas: el atacante no necesita modificar el código si puede modificar la base de datos de la firma directamente, es decir, esto definitivamente no debe mantenerse en la computadora remota. .

    
respondido por el symcbean 30.08.2012 - 10:43
fuente

Lea otras preguntas en las etiquetas