¿Cómo determino si mi caja de Linux se ha infiltrado?

11

Recientemente leí un artículo sobre el análisis de intentos de inicio de sesión SSH maliciosos. Esto me hizo pensar, ¿son poco comunes el nombre de usuario SSH, las combinaciones de contraseña en mi cuadro de Debian? ¿Había sido blanco de un ataque de diccionario de fuerza bruta? Echemos un vistazo a /var/log/auth.log.0 :

Sep 23 07:42:04 SLUG sshd[8303]: Invalid user tyjuan from 210.168.200.190
Sep 23 07:42:09 SLUG sshd[8305]: Invalid user tykeedra from 210.168.200.190
Sep 23 07:42:14 SLUG sshd[8307]: Invalid user tykeem from 210.168.200.190
Sep 23 07:42:19 SLUG sshd[8309]: Invalid user tykeshia from 210.168.200.190
Sep 23 07:42:25 SLUG sshd[8311]: Invalid user tyla from 210.168.200.190
Sep 23 07:42:30 SLUG sshd[8313]: Invalid user tylan from 210.168.200.190
Sep 23 07:42:35 SLUG sshd[8315]: Invalid user tylar from 210.168.200.190
Sep 23 07:42:40 SLUG sshd[8317]: Invalid user tyler from 210.168.200.190
Sep 23 07:42:45 SLUG sshd[8319]: Invalid user tylerfrank from 210.168.200.190
Sep 23 07:42:50 SLUG sshd[8321]: Invalid user tyliah from 210.168.200.190
Sep 23 07:42:55 SLUG sshd[8323]: Invalid user tylor from 210.168.200.190

Entonces eso no se ve bien. Ahora que sé que fui atacado por un ataque y que algunas de mis combinaciones de nombre de usuario y contraseña son débiles, me gustaría saber cómo puedo ...

  • ... determinar si mi caja de Linux se ha infiltrado?
  • ... deshacer el daño dejado por los perpetradores?
  • ... evitar que esto suceda en el futuro?

ACTUALIZAR

¿Algún consejo para deshacer el daño dejado por los perpetradores?

Jake McGraw
fuente
ese registro no sugiere que haya sido comprometido. ¿tiene más información más allá de eso que le preocupa?
posible duplicado de ¿Cómo trato con un servidor comprometido?
Dennis Nolte

Respuestas:

15

Mucha gente parece sugerir DenyHosts, pero he visto mucho éxito con Fail2Ban en mis sistemas. Observa una cantidad (configurable) de fallas y luego realiza una acción: en mis servidores, esa acción es usar iptables para eliminar todo el tráfico del host. Después de 10 fallas de inicio de sesión, se les prohíbe y eso es todo.

Lo uso en combinación con Logcheck, para que siempre sepa lo que está sucediendo en mis servidores.

Si tiene alguna evidencia de que alguien realmente ha entrado en sus sistemas (los registros que ha publicado no lo demuestran), entonces su única solución es hacer una copia de seguridad de todos los datos que necesita conservar, borrar la máquina, reinstalar y restaurar de las copias de seguridad. De lo contrario, no hay forma de estar seguro.

Dan Udey
fuente
1
Yo uso logcheck y fail2ban también. Muy buena combinación.
Secundo el uso de fail2ban.
Malfist
También cambié a fail2ban de denyhosts porque fail2ban monitorea más servicios (correo, web, ftp, ...) y es más configurable
Jure1873
10

Los intentos válidos de inicio de sesión también se registran, por lo que si ve un intento de fuerza bruta seguido de un éxito, es una buena indicación de que algo malo ha sucedido.

Utilizo DenyHosts para monitorear mis registros en busca de tráfico SSH sospechoso, y lo tengo configurado para cortafuegos automáticamente de los hosts en cierto punto.

Tenga en cuenta que hay una variedad de otras formas en que desea monitorear su máquina para ver si está comprometida, incluidos los patrones de carga, la actividad de inicio de sesión, el rastreo periódico del tráfico, el monitoreo de los procesos en ejecución y los puertos abiertos, y garantizar la integridad de los archivos con una herramienta como Tripwire.

Si solo va a hacer uno, monitorear la carga del sistema es una forma muy efectiva de detectar compromisos, porque la mayoría de las máquinas cuando se ven comprometidas se utilizan para hacer cosas como enviar grandes cantidades de correo no deseado o recibir mucho tráfico. Tal vez no sea útil si eres un objetivo de alto valor y las personas pueden estar tratando de irrumpir específicamente en ti por otras razones que no sean convertir a tu anfitrión en un zombi, pero valioso de todos modos. Además, la carga de monitoreo es necesaria para la creación de perfiles y para determinar cuándo necesita invertir en más hardware o mejor software.

También debe hacer un análisis de registro completo, mirando auth.log y otros para cosas inesperadas. El análisis de archivos de registro es un mercado competitivo y el problema aún no está resuelto, pero existen herramientas gratuitas como logwatch que se pueden configurar para enviarle resúmenes diariamente.

Seguridad a través de capas!

Daniel Papasian
fuente
1
Por supuesto, el atacante podría haber modificado los registros para eliminar la evidencia de su intrusión, por lo que la falta de evidencia en los registros no significa necesariamente que todo esté bien.
Esto es verdad. La falta de evidencia es, básicamente, nunca evidencia de ningún compromiso, en mi libro. Iniciar sesión en un servidor remoto puede aumentar la confiabilidad de los registros. Utilizo los túneles syslog-ng y ssh para este propósito.
Había estado viendo números ridículos de intentos de hackear mi servidor también ... instalé DenyHosts y ya había agregado un par de IPs después de solo 10 minutos. ¡Gracias!
Aaron Brown
4

Olvídate de Tripwire, es bastante caro. Use AIDE en su lugar. Es gratis, fácil de configurar (aunque lleva un poco de tiempo decidir qué directorios temporales excluir y configurar).

lo ejecutas, construye una base de datos de todos los archivos. Ejecútelo nuevamente y le dirá qué archivos han cambiado.

Otra cosa que debe hacer es instalar CSF, que tiene un bloqueador de tipo denyhost, ya que la gente no puede iniciar sesión repetidamente, los agregará a las reglas de su firewall. También puede requerir que los inicios de sesión SSH tengan una clave pública, los kiddies de script pueden intentar tantos inicios de sesión como quieran en ese momento.

gbjbaanb
fuente
Hay una versión de código abierto (y gratuita) de Tripwire. Ver tripwire.org
Dan Andreatta
4
"* ... determine if my Linux box has been infiltrated?"
  • Busque signos de procesos extraños. Normalmente uso las herramientas que vienen con chkrootkit ( http://www.chkrootkit.org )
  • Haga un escaneo de puertos con nmap desde una máquina diferente. Si su caja se ha visto comprometida, es probable que el atacante haya instalado una puerta trasera

"* ... deshacer el daño dejado por los perpetradores?"

olvídalo, si hubo un ataque, el mejor consejo es reinstalarlo desde cero (asegúrate de enchufar los agujeros en la nueva instalación). Es muy fácil no notar una puerta trasera o un proceso oculto, es mejor reinstalarlo.

"* ... ¿evitar que esto suceda en el futuro?"

  • actualizaciones de seguridad

  • cortafuegos apretado

  • contraseñas seguras

  • desactivar servicios innecesarios


fuente
3

Eche un vistazo a herramientas como logcheck , portsentry y tripwire . es muy común para los intentos aleatorios de SSH de diccionario, por lo que no me preocuparía demasiado por eso. Es posible que desee cambiar el puerto para la ofuscación aleatoria, pero de vez en cuando verá intentos aleatorios, es la vida tener una máquina en Internet.


fuente
3

Una cosa que uso en mis servidores para ayudar a prevenir estos ataques es DenyHosts . DenyHosts evitará que un usuario malintencionado intente iniciar sesión. Desde que lo instalé, mis archivos de registro han tenido muchas menos entradas de intentos de inicio de sesión.

Craig
fuente
3

Es una buena práctica utilizar pares de claves públicas / privadas como autenticación adicional; De esa manera, un usuario no puede iniciar sesión a través de SSH sin una clave correcta; lo cual sería bastante imposible de adivinar para un forzador bruto. Un buen artículo sobre esto se puede encontrar aquí .

Esto solo con una frase de contraseña sería bastante sólido para la autenticación SSH; ¡Pero hay más vulnerabilidades! Cuidado con todas las aplicaciones que usan un puerto abierto; Si contienen un error, los explotadores podrían superar su sistema. Un buen ejemplo fue un bot de spam que se instaló en nuestro servidor debido a un error en el software de estadísticas web que estábamos usando actualmente.


fuente
2

Fail2ban es un analizador de registro de acceso en tiempo real. Se puede configurar para bloquear cualquier IP con varios intentos fallidos de iniciar sesión. Esto evita ataques de diccionario sin tener que mover el puerto ssh. chkrootkit y rootkithunter son buenas utilidades para verificar la intrusión. Si la intrusión ha sido exitosa, la mejor práctica es copiar datos (y solo datos, no ejecutables), borrar y reinstalar porque es realmente difícil estar 100% seguro de que el sistema está limpio.


fuente
2

No hay nada aquí que sugiera que su caja ha sido comprometida. Incluso si sus contraseñas son bastante débiles, un ataque de diccionario que solo arroje un intento de inicio de sesión en cada nombre de usuario es extremadamente improbable que tenga éxito.

Pero, si sabes que tus contraseñas son débiles, ¡fortalécelas! Personalmente me gusta pwgen (que es empaquetado por Debian). En cada ejecución, genera una gran cantidad de candidatos de contraseña fuertes, pero relativamente pronouncables que (al menos para mí) son bastante fáciles de recordar, como yodieCh1, Tai2daci o Chohcah9.

Sin embargo, si hay otra evidencia que demuestre que su sistema ha sido comprometido ... Destroce desde la órbita. Es la única forma de estar seguro.

Los datos no ejecutables probablemente sean recuperables, pero todo lo que tenga contenido ejecutable (esto incluye potencialmente documentos de MS Office y algunos archivos de configuración) tiene que irse a menos que esté dispuesto y pueda examinarlos manualmente para asegurarse de que no se ha vuelto hostil o para aceptar la posibilidad de que pueda ser hostil y dañar su sistema o proporcionar una vía para un futuro compromiso si lo mantiene.

Dave Sherohman
fuente
2

Una pequeña protección adicional que me gusta es limitar la velocidad de las conexiones ssh entrantes para ralentizar cualquier ataque de diccionario o similar. No espere que esto lo proteja por sí solo, pero use esto además de las sugerencias en las otras respuestas, incluida la desactivación de la autenticación de contraseña.

Usando iptables:

$ iptables        -A INPUT      -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -j DROP
Sherbang
fuente
2

Hay algunos consejos pobres sobre este hilo, como:

  • usando un puerto no estándar para ssh (¡incorrecto!)
  • usando alguna herramienta de seguridad de terceros (agregando una dependencia / complejidad innecesaria)
  • configurar su firewall para bloquear o incluir en la lista blanca (dolor de cabeza de mantenimiento)

Simplemente modifique su /etc/ssh/sshd_configlugar para mejorar la seguridad:

  • PermitRootLogin no
  • Configure AllowUsers solo para los usuarios en el sistema que tienen cuentas ssh
  • Considere usar solo claves físicas con 'PasswordAuthentication no'

Si eres caja se ha infiltrado. Reconstruir la caja.

hendry
fuente
(-1) Algunas veces es necesario configurar reglas en el firewall o usar un sistema de prevención de intrusiones. Llamarlo un consejo pobre sin ninguna discusión adicional sobre por qué no es una buena idea no es muy útil.
Zoredache
1

Sucederá todo el tiempo con ssh habilitado. Muévelo a un puerto alto.

Hay un programa llamado "Tripwire" que es excelente para la detección de intrusos, pero bastante difícil de instalar. Por lo menos, debe leer sus documentos para comprender los problemas.

Bill K
fuente
1

Debe instalar la detección de intrusos antes de conectar la máquina a Internet.

Y es una buena idea incluir las conexiones SSH en la lista blanca de IP solo para asegurarse de que todo el mundo ni siquiera pueda probar cosas así.

Eric Z Beard
fuente
También agregaría usuarios de la lista blanca a los que se les permita iniciar sesión a través de SSH, así como deshabilitar la autenticación basada en contraseña si es posible.
1

¿Cómo puedo determinar si mi caja de Linux se ha infiltrado?

Inicie los medios de solo lectura (livecd) y compare los archivos con su copia de seguridad o los medios originales.

Solo mire a su alrededor en busca de un comportamiento extraño. Por supuesto, esto es más fácil si te tomas el tiempo antes de un hack para tener una buena idea de lo que es "normal".

Los errores que publicó no indican un compromiso. Solo que alguien lo está intentando.

¿Cómo puedo deshacer el daño que dejaron los perpetradores?

Reinstale y restaure desde una copia de seguridad antes de que el sistema se vea comprometido.

Ver:

¿Cómo puedo evitar que esto suceda en el futuro?

Ver:

Zoredache
fuente
0

Psad junto con Shorewall es una buena manera de complementar sus reglas de iptables.

También uso Fail2ban para rastrear mis inicios de sesión ssh

Sharjeel
fuente
0

use rkhunter o chkrootkit o ambos; escanea tu caja desde afuera para ver qué puertos están abiertos

de todos modos, si todo lo que tiene es un usuario no válido, no hay necesidad de preocuparse :)

quaie
fuente
0

Algo muy diferente: ¡intente usar Google en la dirección IP! Un hacker que se hace llamar STARTURK desde Turquía podría haber intentado hackear su sitio.

Si bien parece un ataque de fuerza bruta en su sistema, bien podría ser que este hacker solo lo intentó una vez y ahora se ha ido a otro sitio.

Wim ten Brink
fuente
0

Como muchos han notado, Tripwire / AIDE son la mejor manera de buscar cambios en el sistema. Desafortunadamente, la vaca está fuera del granero en ese puesto, ya que tiene que configurarse en un sistema bien conocido.

Al menos, una cosa que podría ayudarlo a comenzar es utilizar su base de datos RPM para verificar las sumas md5 de sus archivos. La esencia básica es esta:

rpm -qa | xargs rpm -V

Esto no es perfecto por una variedad de razones. Primero, su base de datos RPM local podría haberse alterado teóricamente. En segundo lugar, la mayoría de las distribuciones usan preenlace, y RPM no tiene preenlace. Los MD5 pueden parecer alterados de ese proceso, lo cual es legítimo.

El mejor consejo es este: si no está seguro de haber sido comprometido, realmente es hora de una reconstrucción.

pboin
fuente
0

Para evitar futuros problemas de seguridad, puede echar un vistazo a OSSEC , lo uso para hacer verificaciones de integridad de archivos y monitorear registros en nuestros servidores, es muy completo y fácil de configurar. Puede enviar notificaciones por correo, puede consultar alertas a través de la línea de comandos o una interfaz web ...

http://www.ossec.net/

tomado del sitio web:

"OSSEC es un sistema de detección de intrusiones de código abierto basado en host. Realiza análisis de registros, verificación de integridad de archivos, monitoreo de políticas, detección de rootkits, alertas en tiempo real y respuesta activa".

  • análisis de registro Puede verificar el archivo de registros en sus servidores y alertarlo a través de reglas (hay muchas predefinidas y puede agregar las suyas propias)

  • Integridad de archivo tripwire / aide como funcionalidad para que vea si algún archivo ha sido modificado en su servidor

  • monitoreo de políticas: verifique algunas reglas de seguridad de "Mejores prácticas"

  • detección de rootkit: rkhunter, chkrootkit como funcionalidad

  • Alerta en tiempo real y respuesta activa: puede configurar ossec para que reaccione automáticamente a las alertas (no lo uso, pero puede usarlo para bloquear el acceso ssh a los hosts que realizan demasiados intentos fallidos de conexión)

Muy buen producto y muy activo.

Para endurecer su caja también puede usar lynis o bastille

Guillaume
fuente