¿Cómo detener los ataques de fuerza bruta en Terminal Server (Win2008R2)?

23

Estoy más familiarizado con las herramientas de Linux para detener los ataques de fuerza bruta, así que tengo problemas para encontrar herramientas adecuadas para Windows. Estoy ejecutando un Windows Server 2008 R2 con Terminal Server, y me gustaría bloquear una IP después de repetidos intentos de iniciar sesión a través de RDP. ¿Alguna pista?

onik
fuente
3
¿Realmente necesitas manejar esto en tu servidor de Windows? ¿Ha considerado limitar la velocidad en su dispositivo perimetral (firewall / enrutador)?
Zoredache
2
El cuadro de Windows es un VPS administrado por una empresa de alojamiento, por lo que no tengo acceso a los dispositivos de red.
onik
Puede configurar un evento de Programa de tareas en inicios de sesión fallidos para activar un script PS; PS Svript tendría que contar la cantidad de veces que un IP intentó y luego bloquearlo con una regla de Firewall. No tengo un script así, pero sería posible crearlo.
Chris S
@ Chris S: Eso es más o menos lo que hace mi script ts_block, excepto que se ejecuta como un registro de eventos "sumidero" y recibe una devolución de llamada cada vez que se registran nuevos eventos. Como tal, se ejecuta más o menos en tiempo real.
Evan Anderson el
Usar VPN: instalar, por ejemplo. OpenVPN en el enrutador. Nunca coloque Windows Box directamente en Internet, es peligroso.
integratorIT

Respuestas:

5

para detener los intentos de inicio de sesión de rdp, como ya se dijo, necesita el control de su firewall para aislar una ip en particular. Puede hacer algunas configuraciones en Herramientas administrativas -> Administrador de servicios de terminal, pero no puede hacer nada para detener una ip de esta manera. Tal vez tenga que considerar un script por lotes para escuchar el puerto rdp y controlar las fallas de inicio de sesión, por lo que si hubo un total de intentos (elige el número ...) por la misma ip, entonces ningún otro intento por un período de tiempo conocido podría ser. No estoy seguro de si es posible, pero podría ser una forma ...

Nicola Boccardi
fuente
1
Ok, entonces es como pensaba. Tengo que estudiar el Visor de eventos para ver si puedo exportar las direcciones IP a un archivo para el procesamiento por lotes. Por el momento, que grep ellos procedentes de los vertederos generados manualmente .csv
Onik
55
Cambiar el puerto RDP responde.
JohnThePro
Lo curioso es que quiero restringir las IP, pero el error de inicio de sesión no informa la dirección IP
Csaba Toth
Cambiar el puerto solo oscurece. Encontrarán el nuevo puerto con un software inteligente de escaneo de puertos.
TheLegendaryCopyCoder
@CsabaToth El registro de eventos no registra información útil por defecto. Puede habilitar el registro detallado en el servicio netlogon desde un controlador de dominio o computadora que recibe las solicitudes de RDP para obtener información adicional. Puede habilitar el registro del firewall de Windows para determinar la dirección IP.
Michael Steele
25

Realmente debería bloquear estos intentos en su firewall de borde, aunque solo sea con limitación de velocidad. Si no tienes la capacidad de hacer eso, sigue leyendo.

Si no puede bloquear en el firewall de borde y necesita que RDP esté abierto solo a un subconjunto de Internet, use las funciones integradas de Firewall de Windows para bloquear las conexiones entrantes.

Finalmente, si realmente debe tener RDP abierto en toda la Internet, puede echar un vistazo a la versión modificada de mi programa de bloqueo de fuerza bruta SSH para Windows que tengo en un repositorio de github . Este script, ts_block, bloquea los intentos de inicio de sesión de Terminal Services de fuerza bruta en Windows Server 2003, 2008 y 2008 R2. Desafortunadamente, debido a los cambios en los eventos registrados por Windows cuando se usa la capa de seguridad TLS / SSL para RDP, este script se está volviendo cada vez más ineficaz . (¿Por qué Microsoft eligió omitir la dirección IP del host que intenta autenticar está más allá de mí? Parece que eso sería algo muy importante para registrar, ¿eh?)

Evan Anderson
fuente
1
Yo uso la página ts_block aquí y ¡es increíble! ¡Mi servidor de Windows (2008 R2) solía ralentizarse bajo numerosos ataques de fuerza bruta, pero ya no! TS_BLOCK está escrito en vbscript, y puede / debe instalarse como un servicio de Windows, pero no use la versión MSI, solo edite el código .vbs e instálelo con la utilidad nssm. No necesita las entradas del registro porque el código .vbs tiene los valores predeterminados codificados. <p> He editado el código y bloquea TODO el inicio de sesión fallido de inmediato, ya que al ser mi propio servidor web NO debería haber intentos fallidos de inicio de sesión. Entonces, el script
Esto es muy dulce, Evan. Tengo la intención de volver a implementarlo en C # para que pueda ejecutarlo como un servicio nativo de Windows en lugar de piratear con srvany y similares. Si alguna vez lo hago, lo vomitaré en Github o algo así.
Ryan Bolger
1
@RyanBolger: Tengo un punto débil para VBScript e idiomas interpretados en general. Encuentro que usar "Non-Sucking Service Manager" es una experiencia bastante sencilla al ejecutar programas VBScript como servicios.
Evan Anderson
ts_block es increíble, es exactamente lo que estaba buscando "Gracias Evan Anderson" Cuando puse mi primer servidor virtual de Terminal en vivo directamente en la web en un día tuve más de 10,000 inicios de sesión fallidos. Cuando tenga tiempo, podría modificarlo y agregar un bloqueo permanente en función del número de bloques anteriores. Por ejemplo: IP se prohíbe 4 veces en un día. (A menos que ya se haya creado)
Basado en el ts_blockscript aquí hay una solución que utiliza fail2banen la puerta de enlace para bloquear a los atacantes: wqweto.wordpress.com/2013/12/10/…
wqw
3

Tengo un programa C # que hace exactamente esto. Tuve un problema en Server 2008 R2 donde el registro de eventos no siempre enumeraba las direcciones IP del usuario (si se conectaban desde los clientes más nuevos de Escritorio remoto). Algunos servicios implementan su propio proveedor de verificación de credenciales que no proporciona toda la información que desea.

http://cyberarms.net/security-insights/security-lab/remote-desktop-logging-of-ip-address-%28security-event-log-4625%29.aspx

Sin embargo, para el Escritorio remoto descubrí que entrar en "Configuración de host de sesión de Escritorio remoto" y cambiar la conexión RDP-TCP para tener la capa de seguridad de "Capa de seguridad RDP" en lugar de "Negociar" o "SSL (TLS 1.0)" trajo de vuelta el Direcciones IP.

Si realmente desea hacer esto es otra pregunta para usted: "Si selecciona la capa de seguridad RDP, no puede usar la autenticación de nivel de red".

Encontré http://www.windowsecurity.com/articles/logon-types.html útil. Utilicé EventLogWatcher y me uní a "* [System / EventID = 4625 o System / EventID = 4624]" para poder restablecer un recuento incorrecto si el usuario realmente se equivocó de contraseña. También incluí en la lista blanca :: 1, 0.0.0.0, 127.0.0.1 y "-". Es posible que desee o no incluir en la lista blanca direcciones IP de LAN / administración.

Utilizo Forefront TMG, así que utilicé la API para agregar direcciones IP incorrectas a un grupo de IP de esa manera y le pedí a Cisco que agregue acceso API a uno de sus enrutadores SMB (¡lo que me han asegurado que podrían hacer!)

Si desea utilizar el Firewall de Windows nativo para bloquearlos, eche un vistazo a la API para eso ("netsh advfirewall").

Permito x número de intentos antes de prohibir y un éxito restablecerá el conteo.

Mateo1471
fuente
2

¿Estás tratando de evitar robos o registros desordenados? Si está tratando de evitar robos, Windows tiene una forma integrada de bloquear los intentos de inicio de sesión. Hay una configuración de Política de grupo de umbral de bloqueo de cuenta en Configuración del equipo -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Política de cuenta -> Política de bloqueo de cuenta.

Los atacantes usarán nombres de usuario comunes como Administrador, y ciertamente los bloquearán. Necesitaría una cuenta separada para la administración real, que probablemente sea aconsejable de todos modos.

El bloqueo automático en el nivel del cortafuegos requerirá una lectura de registro programada con actualización automática de las reglas del cortafuegos. Debería poder agregar reglas basadas en la dirección IP de esta manera. Esto es básicamente lo que hace iptables en un sistema Linux.

Puede ser un poco obvio, pero ¿también ha considerado ejecutar Servicios de escritorio remoto en un puerto no estándar ? Esto ha sido muy efectivo para mí para frustrar los robos.

Joel E Salas
fuente
Bloquear intentos de conexión repetidos en el firewall es una buena práctica, pero asumir que los ataques de fuerza bruta no van a ocurrir "detrás del firewall" no es una muy buena suposición. En mi opinión, un bruto para bloqueo basado en host es una idea razonablemente buena. Usar el bloqueo de cuenta es definitivamente una buena idea, pero también me gusta la idea de aplastar los intentos de fuerza bruta para mantener los registros más limpios.
Evan Anderson el
1
Ya estoy ejecutando en un puerto no estándar, y mi mayor preocupación es que mi servidor se desconecte efectivamente debido a la gran cantidad de intentos de inicio de sesión.
boomhauer
Una opción es deshabilitar por completo el acceso al Escritorio remoto a través del Firewall, pero tener un servicio en ejecución en el servidor que reconfigura el firewall para permitir el tráfico RDP, este servicio está protegido con contraseña y tal vez solo permite el acceso desde una fuente IP "confiable" ( como el rango de IP de un teléfono móvil o su oficina). Presenta problemas, pero funciona.
Dai
1

También hay algunas otras soluciones si desea tener una solución basada en GUI y crear diferentes conjuntos de reglas para diferentes eventos realmente. El más fácil sería RDPGuard (hxxp: //www.rdpguard.com), pero en un entorno corporativo probablemente querría más informes, como de dónde vino el ataque (país, origen) y qué nombre de usuario se usó para que pueda rápidamente decida si es uno de sus propios usuarios que accidentalmente se bloquea o intenta iniciar sesión desde donde sabe que no lo está.

Personalmente, me gusta Syspeace (hxxp: //www.syspeace.com) que hace todo eso por nosotros, pero pensé en mencionarlos a ambos de todos modos

Juha Jurvanen
fuente