¿Es posible prohibir una dirección IP después de X número de intentos de inicio de sesión fallidos en un servidor de Windows? No a una cuenta en particular, que sé cómo hacer, sino a toda la máquina.
Los ataques de fuerza bruta nos golpean con bastante fuerza al tratar de adivinar los nombres de usuario, por lo que esto realmente ayudaría a quitar algo de carga del servidor.
windows
brute-force-attacks
HeavyWave
fuente
fuente
Respuestas:
Puede hacer esto con powershell y el administrador de tareas. Probablemente no sea la solución perfecta, pero funciona bastante bien y tengo alrededor de 100 direcciones IP bloqueadas en dos meses. Escribí un script, que selecciona de eventos especificados EventLog ("error de auditoría"). Si hay muchos inicios de sesión fallidos desde cualquier dirección IP, se agrega a la regla de firewall (creada manualmente) llamada "BlockAttackers" que bloquea el tráfico a las direcciones IP especificadas.
Guión de PS1:
Cree una tarea en el planificador y configure el desencadenador en el evento 4625 (inicio de sesión de Windows, incluidos los servicios de terminal) Pero puede configurar el disparador para que se ejecute, por ejemplo, dos veces por hora para evitar la carga innecesaria del servidor.
y después del disparador ejecute el script de powershell También debe establecer privilegios más altos para ejecutar este script, de lo contrario fallará con la excepción de seguridad.
También puede vincular este script a otros eventos de seguridad.
fuente
Sé que esta pregunta es antigua, pero en realidad fue la primera publicación en el foro con la que me topé cuando comencé a intentar hacer exactamente lo mismo hace un par de semanas. Me las arreglé para crear un script de trabajo que analizará los registros de eventos 24 horas atrás solo para las entradas de registro de eventos de inicio de sesión incorrectos, tome los que tengan más de 10 inicios de sesión incorrectos y luego los coloque en una lista de filtros ipsec usando el comando netsh Luego escribí un archivo por lotes con esta línea
powershell .\*scriptname.ps1*
y creé una tarea programada para ejecutar el archivo por lotes cada 24 horas (por alguna razón no se ejecutaría directamente).Sé que este script es probablemente ineficiente, pero cuando comencé a trabajar en esto no tenía absolutamente ninguna experiencia en PowerShell, por lo que mi capacidad para optimizar los scripts deja mucho que desear. Sin embargo, a pesar de este hecho, pensé en compartir esto con cualquiera que pudiera usarlo.
Agradezco a Remunda por darme la idea inicial, ese póster es el que me llevó a la idea de usar PowerShell para buscar en los registros de eventos.
fuente
Esta secuencia de comandos se basa en la respuesta de Remunda y va un poco más allá https://serverfault.com/a/397637/155102 Da cuenta de que la regla "BlockAttackers" aún no tiene ninguna IP ingresada (que devuelve un "*" como una cadena). También escribe un comentario en un archivo de registro para informarle cuándo se agregó la IP a la regla.
Un buen consejo es crear la regla "BlockAttackers" que bloquea las direcciones IP PERO al principio la deshabilita. Luego, ejecute este script una vez manualmente para que pueda completar el campo "RemoteAddresses" con direcciones IP reales que deben bloquearse. Eche un vistazo a esas direcciones IP para asegurarse de que no se haya agregado nada crítico y luego habilite la regla del firewall. Agregue esta regla a su firewall como se describe en remunda.
El git para este guión
fuente
No puedo dar crédito por esta respuesta, pero https://serverfault.com/users/7200/evan-anderson ha mencionado su proyecto http://opensource.wellbury.com/projects/windows_sshd_block/newest-release/
fuente
Por lo general, no es una buena idea dejar que otra persona controle las reglas de su firewall. Eso es básicamente lo que estás pidiendo aquí.
fuente
Este es un viejo hilo. Estaba usando el script proporcionado por kevinmicke en 2014-2015. Entonces simplemente dejó de funcionar. Así que tuve que editarlo un poco para adoptar la autenticación de Windows Network Security que no deja direcciones IP en el registro de seguridad. Además, como no tengo FTP en ejecución, eliminé esa parte porque estaba causando errores porque no había una carpeta de registro. El cambio principal está en la fuente de los eventos RDP.
La secuencia de comandos anterior funcionará en Windows 2012. Si todavía está utilizando Escritorio remoto con autenticación de nivel de acceso a la red en Windows 2008, es posible que deba hacer el siguiente truco. Windows 2008 no tiene direcciones IP en el registro de seguridad y tampoco parece tenerlas en el registro Microsoft-Windows-RemoteDesktopServices-RdpCoreTS. Así que tuve que usar 2 registros: eventos de coincidencia del registro de seguridad con intentos de acceso exitosos al puerto 3389 en el registro del firewall. Esta es una suposición, pero parece estar detectando ataques de contraseña. Aquí está la parte que recopila las IPs infractoras:
NOTA: No olvide habilitar los registros de firewall. NOTA 2: No soy un experto en PowerShell, por lo que sería bueno que algunos gurús puedan corregir / mejorar mi código.
fuente
Estoy usando ts_block freeby.
Básicamente es un "programa VBScript que actúa como un receptor de eventos WMI para recibir eventos registrados por Windows en respuesta a inicios de sesión no válidos de Terminal Services".
Parece funcionar perfectamente, y el script es sencillo si necesita modificarlo. Puede dejar que registre los intentos y luego prohibirlos según la cantidad de intentos permitidos, y / o puede codificar los nombres de inicio de sesión a los que no desea dar acceso.
Me sorprendió agregar accidentalmente el mismo nombre dos veces y el servicio simplemente entra en un bucle sin fin que se reinicia cada 1500 ms, pero es muy fácil de arreglar / modificar si está bien con vbs.
Mi configuración actual es solo un reintento y está prohibido durante 2 días, con inicios de sesión como 'admin' 'Admin' 'Administrador' 'invitado', etc., automáticamente prohibido. ¿Debería ser sencillo cambiar a ip?
Un poco adictivo para entrar y ver qué criaturas han sido prohibidas de la noche a la mañana ...
fuente
¿Quiere decir iniciar sesión en el servidor / dominio o iniciar sesión en un sitio web que se ejecuta en el servidor? Si quiere iniciar sesión en el servidor / dominio, la respuesta es no. Windows no tiene el concepto de bloquear direcciones IP basadas en intentos fallidos de inicio de sesión, ya que las direcciones IP no son entidades de seguridad. Puede haber herramientas de terceros que puedan hacer esto, pero no estoy al tanto de ninguna, ya que nunca la he visto.
fuente
Si hay un servidor web que está siendo atacado, puede instalar la extensión dinámica de restricciones de IP . Si esto es para la autenticación estándar del servidor, entonces debería poder implementar el dominio y el aislamiento del servidor, lo que limitaría el alcance de los ataques a las computadoras unidas al dominio, y podría configurarse para permitir solo los intentos de los sistemas a los que necesita tener acceso el servidor. En Windows, la prevención de ataques de fuerza bruta es establecer la política de bloqueo de la cuenta en una configuración como 10 minutos y una política de contraseña incorrecta en 3 intentos; esto significa que la cuenta que se está atacando se bloqueará durante 10 minutos después de 3 intentos. Las conexiones IP no se pueden bloquear de forma predeterminada en Windows. (Como comentario aparte, también tengo curiosidad por saber cuántos intentos de inicio de sesión tarda por segundo en afectar el sistema)
fuente
http://nerderies.blogspot.co.at/2012/12/automatically-banning-ips-with-windows.html
fuente
Utilizando el excelente script de remunda como punto de partida, agregué una cosa importante que faltaba: bloquear las direcciones IP de los inicios de sesión FTP fallidos . Windows Server no registra la dirección IP en el registro de seguridad cuando alguien no puede iniciar sesión a través de FTP, sino que establece la "Dirección de red de origen" en un guión. FTP es un vector de ataque muy común para los ataques de fuerza bruta, por lo que agregué a su script la capacidad de escanear los registros FTP del día actual en busca de múltiples fallas de inicio de sesión y también bloquear esas direcciones IP.
Actualización del 02/02/2014: cuando realicé algunos ajustes para procesar todos mis registros FTP antiguos, me di cuenta de que tenían un gran número de intentos (más de 50,000), los arreglos que creó serían enormes y el procesamiento sería increíblemente lento. Desde entonces lo reescribí para hacerlo mucho más eficiente al procesar registros FTP.
También descubrí que hay un límite estricto arbitrario de 1000 para cuántas direcciones IP pueden estar en una regla de Firewall de Windows. Debido a ese límite, lo necesitaba para crear automáticamente una nueva regla cuando se llena la última. Ahora lo hace, y también crea la regla de firewall inicial (si no crea la suya propia), de modo que la única configuración que se debe hacer es agregarla al Programador para que se ejecute cuando haya un evento 4625.
Aquí está el código, que se ha probado en Windows Server 2008 R2 y Windows 7:
fuente
Set-ExecutionPolicy RemoteSigned
para poder ejecutar los scripts locales. De lo contrario, obtendrá un error: "blockattackers.ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema".El script de remuda , editado por kevinmicke (7 de febrero a las 21:59) no verificó el canal de control del FTP, que tiene una carpeta propia en mi sistema (Windows Server 2008 R2). Además,
530 11001
no se han reconocido los eventos, que parecen aparecer cuando el pirata informático solo intenta acceder al canal de control. Así que agregué algunas líneas en el script para verificar una segunda carpeta de registro FTP:El nombre de la carpeta de registro del FTP
FTPSVC*
en la línea 54 debe completarse por causa. En la línea 115 y 116 se debe ingresar la IP de su servidor (IPv4 e IPv6), de lo contrario, la IP de los servidores propios podría agregarse a la regla del firewall cien veces. La variable$int_block_limit
que configuro en 1 en mi servidor, por lo que el script está bloqueando un ataque de piratas informáticos que causa un evento 4625 en dos segundos. Todavía estoy pensando en ejecutar el script adicionalmente para que ocurran 4625 eventos en un período de tiempo de unos pocos minutos. De hecho, también sería posible separar las secuencias de comandos y dejar que una secuencia de comandos verifique los eventos de 4625 activados por el evento de 4625 y otra que compruebe periódicamente las carpetas de registro del FTP cada 5 o 10 minutos, incluso con una regla de firewall separada y archivo de registro.fuente
He agregado el mío para SQL
Luego tendrá que agregar la matriz a ips_all
fuente