¿Cuáles son las señales reveladoras de que un servidor Linux ha sido pirateado? ¿Hay alguna herramienta que pueda generar y enviar por correo electrónico un informe de auditoría de forma programada?
¿Cuáles son las señales reveladoras de que un servidor Linux ha sido pirateado? ¿Hay alguna herramienta que pueda generar y enviar por correo electrónico un informe de auditoría de forma programada?
Respuestas:
Usted no
Lo sé, lo sé, pero en realidad es la triste y paranoica verdad;) Hay muchas pistas, por supuesto, pero si el sistema fue dirigido específicamente, podría ser imposible saberlo. Es bueno entender que nada es completamente seguro. Pero tenemos que trabajar para obtener más seguridad, por lo que señalaré todas las otras respuestas en su lugar;)
Si su sistema se vio comprometido, no se puede confiar en ninguna de sus herramientas para revelar la verdad.
Tripwire es una herramienta de uso común: le notifica cuando los archivos del sistema han cambiado, aunque obviamente necesita tenerlo instalado de antemano. De lo contrario, los signos habituales son elementos como nuevas cuentas de usuario que no conoce, procesos extraños y archivos que no reconoce, o un mayor uso de ancho de banda sin razón aparente.
Se pueden configurar otros sistemas de monitoreo como Zabbix para alertarlo cuando se cambian archivos como / etc / passwd.
Algunas cosas que me han avisado en el pasado:
ls
(esto puede suceder con kits de raíz rotos)/
o /var/
(la mayoría de los script kiddies son demasiado estúpidos o flojos para cubrir sus huellas)netstat
muestra puertos abiertos que no deberían estar allíbind
, pero siempre usa djbdns
)Además, descubrí que hay una señal confiable de que una caja está comprometida: si tiene un mal presentimiento sobre la diligencia (con actualizaciones, etc.) del administrador del que heredó un sistema, ¡vigílelo de cerca!
Hay un método para verificar servidores pirateados a través de kill
:
Esencialmente, cuando ejecuta "kill -0 $ PID" está enviando una señal de nop para procesar el identificador $ PID. Si el proceso se está ejecutando, el comando kill saldrá normalmente. (FWIW, ya que estás pasando una señal de nop kill, no pasará nada en el proceso). Si un proceso no se está ejecutando, el comando kill fallará (el estado de salida es inferior a cero).
Cuando se piratea su servidor / se instala un rootkit, una de las primeras cosas que hace es decirle al kernel que oculte los procesos afectados de las tablas de procesos, etc. Sin embargo, puede hacer todo tipo de cosas interesantes en el espacio del kernel para manipular el kernel. procesos. Y esto significa que
a) Esta comprobación no es exhaustiva, ya que los rootkits bien codificados / inteligentes asegurarán que el núcleo responderá con una respuesta de "proceso no existe", haciendo que esta comprobación sea redundante. b) De cualquier manera, cuando un servidor pirateado tiene un proceso "malo" en ejecución, su PID generalmente no se mostrará en / proc.
Entonces , si está aquí hasta ahora, el método es eliminar -0 todos los procesos disponibles en el sistema (cualquier cosa, desde 1 -> / proc / sys / kernel / pid_max) y ver si hay procesos que se ejecutan pero no se informan en / proc.
Si algunos procesos aparecen como en ejecución, pero no se informan en / proc, es probable que tenga un problema de cualquier manera que lo mire.
Aquí hay un script bash que implementa todo eso: https://gist.github.com/1032229 . Guarde eso en algún archivo y ejecútelo, si encuentra un proceso que no se informa en el proceso, debe tener alguna pista para comenzar a investigar.
HTH
Secundaré las respuestas dadas aquí y agregaré una propia.
find /etc /var -mtime -2
Esto le dará una indicación rápida si alguno de sus archivos del servidor principal ha cambiado en los últimos 2 días.
Esto es de un artículo sobre detección de piratería Cómo detectar si su servidor ha sido pirateado.
De Cómo puedo detectar intrusiones no deseadas en mis servidores?
Use un IDS
SNORT® es un sistema de prevención y detección de intrusos de red de código abierto que utiliza un lenguaje basado en reglas, que combina los beneficios de los métodos de inspección basados en firma, protocolo y anomalías. Con millones de descargas hasta la fecha, Snort es la tecnología de detección y prevención de intrusos más ampliamente implementada en todo el mundo y se ha convertido en el estándar de facto para la industria.
Snort lee el tráfico de red y puede buscar cosas como "prueba de manejo con lápiz" donde alguien simplemente ejecuta un escaneo de metasploit completo contra sus servidores. Es bueno saber este tipo de cosas, en mi opinión.
Usa los registros ...
Dependiendo de su uso, puede configurarlo para que sepa cuándo un usuario inicia sesión, o inicia sesión desde una IP extraña, o cuando la raíz inicia sesión, o cuando alguien intenta iniciar sesión. De hecho, el servidor me envía un correo electrónico con cada mensaje de registro superior a Debug. Sí, incluso aviso. Filtrado algunos de ellos, por supuesto, pero cada mañana cuando recibo 10 correos electrónicos sobre cosas, me dan ganas de arreglarlo para que deje de suceder.
Supervise su configuración: de hecho, mantengo todo mi / etc en subversion para poder seguir las revisiones.
Ejecute escaneos. Herramientas como Lynis y Rootkit Hunter pueden brindarle alertas sobre posibles agujeros de seguridad en sus aplicaciones. Hay programas que mantienen un hash o un árbol de hash de todos sus contenedores y pueden alertarlo sobre los cambios.
Supervise su servidor: al igual que mencionó el espacio en disco, los gráficos pueden darle una pista si algo es inusual. Uso Cacti para vigilar la CPU, el tráfico de red, el espacio en disco, las temperaturas, etc. Si algo parece extraño, es extraño y deberías averiguar por qué es extraño.
Solo me gustaría agregar a esto:
Verifique su historial de bash, si está vacío y no lo ha desarmado o vaciado, existe una buena posibilidad de que alguien haya comprometido su servidor.
Verifique el último. O verá direcciones IP desconocidas o se verá muy vacío.
Luego, como dice la respuesta aceptada, los archivos del sistema a menudo cambian, verifique la fecha de modificación. Sin embargo, a menudo alteran la fecha de modificación.
A menudo instalan otra versión de ssh que se ejecuta en un puerto aleatorio. Esto a menudo está oculto en algunos lugares realmente extraños. Tenga en cuenta que normalmente cambiará su nombre a algo diferente a ssh. Por lo tanto, verifique netstat (puede que no funcione, ya que a menudo lo reemplazan) y use iptables para bloquear cualquier puerto desconocido.
En cualquier caso, esta es una situación en la que es mejor prevenir que curar. Si se ha visto comprometido, es mejor simplemente formatear y comenzar de nuevo. Es casi imposible confirmar que ha limpiado con éxito el truco.
Tome nota de lo siguiente para evitar que su servidor se vea comprometido.
Vale la pena tener en cuenta que una vez que estén en un servidor, verificarán su historial de bash y buscarán otros servidores a los que se conectó a través de ssh desde ese servidor. Luego intentarán conectarse a esos servidores. Por lo tanto, si obtiene una fuerza bruta debido a una contraseña deficiente, es muy posible que puedan conectarse al otro servidor y comprometerlos también.
Es un mundo feo, reitero que prevenir es mejor que curar.
Después de buscar un poco, también está esto, hace lo que he enumerado anteriormente, entre otras cosas: http://www.chkrootkit.org/ y http://www.rootkit.nl/projects/rootkit_hunter.html
Deberías revisar GuardRail. Puede escanear su servidor diariamente y decirle qué ha cambiado de una manera visual agradable. No requiere un agente y puede conectarse a través de SSH, por lo que no necesita desechar su máquina y recursos con un agente.
Lo mejor de todo, es gratis para hasta 5 servidores.
Compruébalo aquí: