Previendo cambios en PHP
Actualmente han habido muchos ataques a sistemas PHP de código abierto debido a vulnerabilidades de todo tipo, en ocasiones ha ocurrido aún con código que se consideraba bastante seguro y maduro.
Una buena práctica de seguridad es mantener todo el sistema lo más actualizado posible, no instalar temas o código de terceros que no esté aprobado oficialmente, no descargar temas, plugins y addons de sitios no oficiales, etc. Pero las medidas aún ahí no son suficientes.
La tendencia de los ataques está en aprovechar el sitio para ofrecer SPAM de todo tipo, encuentran una vulnerabilidad, injectan código PHP y lo ponen a correr, crean backdoors para infectar más archivos y crean hasta servicios de monitoreo del estado de infección del sitio.
Es posible que aun el código del día de hoy tenga una vulnerabilidad así que para prevenir este tipo de infección sería ideal estar siempre monitoreando por archivos que hayan sido modificados así como monitorear archivos nuevos o archivos faltantes y justo para eso hice un pequeño código que crea un listado de todos tus archivos PHP a diario y busca las diferencias entre el día anterior y el día actual, diferencias de tamaño, localización, archivos nuevos o archivos faltantes.
Para utilizar este script primero debes tener acceso SSH y FTP a tu sitio, los pasos de instalación son fáciles para todo aquel que tenga conocimientos básicos de consola SSH y manejo del Crontab.
Pasos:
- Crear el archivo “scan.sh” en una carpeta que no sea de acceso público vía el web.
- Pegar el código al archivo “scan.sh” que se encuentra en esta dirección: http://pastebin.com/C7rBENtC
- Darle permisos de ejecución al archivo, “chmod +x scan.sh”.
- Ejecutar por primera vez el archivo, “./scan.sh” para que haga el primer log.
- Crear un archivo de texto plano para el crontab, por ej. “cron.txt”
- Pegar el código al archivo “cron.txt” que se encuentra en esta dirección: http://pastebin.com/JUNDFFbc
- Cambiar los datos del archivo “cron.txt” según sea necesario, la localización del “scan.sh” y el correo electrónico.
- Agregar al crontab con el comando “crontab cron.txt”, se puede revisar que esté agregado con el comando “crontab -l”
- Esperar a las cero horas para la ejecución del archivo.
Este script solo te enviará un correo electrónico si se realiza algún cambio en algún archivo PHP, este script no es infalible pues solo se basa en la localización y el tamaño en bytes del archivo, sin embargo puede ser evolucionado a usar más datos como la fecha o un hash MD5 y así estár seguro de que no hay cambios, lo dejo a la discresión de uds. Y espero que esto les sea útil.
Me parece tu idea. Solo que como “webmaster de verdad”, como vos decís, le haré unos retoques para que en caso de encontrar diferencias, sobreescriba por medio de SVN (algunos prefieren Git, igual sirve).
Existen cientos de formas, esta es la forma más práctica que se me ocurrió en un inicio y la que comparto esperando que cada quién la perfeccione a su gusto!
buen aporte