Come fermare gli attacchi di forza bruta su Terminal Server (Win2008R2)?


23

Ho più familiarità con gli strumenti Linux per fermare gli attacchi di forza bruta, quindi ho problemi a trovare strumenti adatti per Windows. Sto eseguendo un Windows Server 2008 R2 con Terminal Server e vorrei bloccare un IP dopo ripetuti tentativi di accesso tramite RDP. Qualche suggerimento?


3
Hai davvero bisogno di gestirlo sul tuo server Windows? Hai mai considerato di limitare la velocità sul tuo dispositivo periferico (firewall / router)?
Zoredache,

2
Il box di Windows è un VPS gestito da una società di hosting, quindi non ho accesso ai dispositivi di rete.
onik,

È possibile impostare un evento di pianificazione attività su accessi non riusciti per attivare uno script PS; PS Svript dovrebbe contare il numero di volte in cui un IP ha provato, quindi bloccarlo con una regola Firewall. Non ho una sceneggiatura del genere ma sarebbe possibile crearla.
Chris S,

@Chris S: Questo è più o meno ciò che fa il mio script ts_block, tranne per il fatto che viene eseguito come "sink" del registro eventi e riceve una richiamata ogni volta che vengono registrati nuovi eventi. Come tale, funziona più o meno in tempo reale.
Evan Anderson,

Usa VPN - installa ad es. OpenVPN sul router. Non mettere mai Windows Box direttamente su Internet - è pericoloso.
integratore IT

Risposte:


5

per interrompere i tentativi di accesso rdp, come già detto, è necessario il controllo del firewall per isolare un determinato IP. È possibile eseguire alcune impostazioni in Strumenti di amministrazione -> Gestione servizi terminal ma non è possibile fare nulla per arrestare un IP in questo modo. Forse devi prendere in considerazione uno script batch per ascoltare la porta rdp e controllare gli errori di accesso, quindi se ci fossero tentativi di tot (scegli il numero ...) dallo stesso IP, allora nessun altro tentativo per un arco di tempo noto potrebbe essere. Non sono sicuro che sia possibile, ma potrebbe essere un modo ...


1
Ok, quindi è come pensavo. Devo studiare il Visualizzatore eventi per vedere se posso esportare gli indirizzi IP in un file per l'elaborazione batch. Per il momento,
devi estrarli da

5
Cambia la porta su cui RDP risponde.
JohnThePro,

La cosa divertente è che voglio limitare gli IP, ma l'errore di accesso non riporta l'indirizzo IP
Csaba Toth,

Cambiare la porta oscura solo. Troveranno la nuova porta con un software di scansione delle porte intelligente.
TheLegendaryCopyCoder il

@CsabaToth Il registro eventi non registra informazioni utili per impostazione predefinita. È possibile abilitare la registrazione dettagliata nel servizio netlogon da un controller di dominio o un computer che riceve le richieste RDP per alcune informazioni aggiuntive. È possibile abilitare la registrazione del firewall di Windows per determinare l'indirizzo IP.
Michael Steele,

25

Dovresti davvero bloccare questi tentativi sul tuo firewall perimetrale, anche se solo con un limite di velocità. Se non hai la possibilità di farlo continua a leggere.

Se non riesci a bloccare il firewall perimetrale e hai bisogno che RDP sia aperto solo a un sottoinsieme di Internet, usa le funzionalità integrate di Windows Firewall per bloccare le connessioni in entrata.

Infine, se davvero devi avere RDP aperto all'intero Intenet potresti dare un'occhiata alla versione modificata del mio programma SSH brute force blocker per Windows che ho in un repository github . Questo script, ts_block, blocca i tentativi di accesso a Servizi terminal con forza bruta su Windows Server 2003, 2008 e 2008 R2. Sfortunatamente, a causa delle modifiche agli eventi registrati da Windows durante l'utilizzo del livello di sicurezza TLS / SSL per RDP questo script sta diventando sempre più inefficace . (Perché Microsoft ha scelto di omettere l'indirizzo IP dell'host che tenta di autenticarsi è al di là di me. Sembra che sarebbe una cosa abbastanza importante da registrare, eh?)


1
Uso la pagina ts_block qui ed è incredibile! Il mio server Windows (2008 R2) rallentava numerosi attacchi di forza bruta ma non più! TS_BLOCK È scritto in vbscript - e può / dovrebbe essere installato come servizio di Windows - ma non usare la versione MSI basta modificare il codice .vbs e installarsi con nssm util. Non hai bisogno delle voci di registro perché il codice .vbs ha i valori predefiniti hardcoded. <p> Ho modificato il codice e blocca immediatamente OGNI accesso fallito - poiché essendo il mio server web non ci dovrebbero essere tentativi di accesso falliti. Quindi lo script

Questo è piuttosto dolce, Evan. Ho una mezza idea di ri-implementarlo in C # in modo da poterlo eseguire come un servizio Windows nativo piuttosto che hackerare con srvany e simili. Se mai lo farò, lo getterò su Github o anche su qualcosa.
Ryan Bolger,

1
@RyanBolger: ho un debole per VBScript e per i linguaggi interpretati in generale. Trovo che l'uso di "Non-Sucking Service Manager" rende un'esperienza abbastanza indolore con i programmi VBScript come servizi.
Evan Anderson,

ts_block è sorprendente, è esattamente quello che stavo cercando "Grazie Evan Anderson" Quando ho messo il mio primo server virtuale Terminal in diretta direttamente sul web in un giorno, ho avuto oltre 10.000 accessi falliti. Quando ho tempo, potrei modificarlo e aggiungere un blocco permanente in base al numero di blocchi precedenti. es: IP viene bandito 4 volte in un giorno. (A meno che non sia già stato creato)

Basato sullo ts_blockscript qui è una soluzione che utilizza fail2bansul gateway per bloccare gli aggressori: wqweto.wordpress.com/2013/12/10/…
wqw

3

Ho un programma C # che fa esattamente questo. Ho riscontrato un problema su Server 2008 R2 in cui il registro eventi non elencava sempre gli indirizzi IP dell'utente (se si connettevano dai client Desktop remoto più recenti). Alcuni servizi implementano il proprio provider di controllo delle credenziali che non fornisce tutte le informazioni desiderate.

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

Tuttavia, per Desktop remoto ho scoperto che accedere a "Configurazione host sessione Desktop remoto" e modificare la connessione RDP-TCP per avere il livello di sicurezza di "Livello di sicurezza RDP" anziché "Negozia" o "SSL (TLS 1.0)" ha riportato Indirizzi IP.

Se vuoi davvero fare questa è un'altra domanda per te, "Se selezioni Livello di sicurezza RDP, non puoi utilizzare l'autenticazione a livello di rete".

Ho trovato utile http://www.windowsecurity.com/articles/logon-types.html . Ho usato EventLogWatcher e associato a "* [System / EventID = 4625 o System / EventID = 4624]" in modo da poter resettare un conteggio errato in caso di successo se l'utente avesse semplicemente sbagliato la password. Inoltre ho inserito nella whitelist :: 1, 0.0.0.0, 127.0.0.1 e "-". Potresti o meno voler autorizzare gli IP LAN / di gestione.

Uso Forefront TMG, quindi ho usato l'API per aggiungere indirizzi IP errati a un gruppo di IP in quel modo e ho chiesto a Cisco di aggiungere l'accesso API a uno dei loro router SMB (cosa che mi hanno assicurato che avrebbero potuto fare!)

Se vuoi usare il Windows Firewall nativo per bloccarli dai un'occhiata all'API ("netsh advfirewall").

Consentisco x numero di tentativi prima di vietare e un successo reimposterà il conteggio.


2

Stai cercando di impedire intrusioni o registri disordinati? Se stai cercando di prevenire le intrusioni, Windows ha un modo integrato per bloccare i tentativi di accesso. Esiste un'impostazione di Criteri di gruppo Soglia blocco account in Configurazione computer -> Criteri -> Impostazioni di Windows -> Impostazioni di sicurezza -> Politica dell'account -> Politica di blocco dell'account.

Gli aggressori useranno nomi utente comuni come Amministratore e sicuramente li bloccheranno. Avresti bisogno di un account separato per l'amministrazione effettiva, che è probabilmente consigliabile comunque.

Il blocco automatico a livello di firewall richiederà una lettura dei registri con script con aggiornamento automatico delle regole del firewall. In questo modo dovresti essere in grado di aggiungere regole basate sull'indirizzo IP. Questo è fondamentalmente ciò che fa iptables in un sistema Linux.

Può essere un po 'ovvio, ma hai anche considerato di eseguire Servizi Desktop remoto su una porta non standard ? Questo è stato molto efficace per me nel contrastare le irruzioni.


Il blocco di ripetuti tentativi di connessione al firewall è una buona pratica, ma supporre che gli attacchi di forza bruta non accadranno "dietro il firewall" non è un presupposto molto valido. Un bruto basato su host per blocco è una buona idea, a mio avviso. L'uso del blocco degli account è sicuramente una buona idea, ma mi piace anche l'idea di schiacciare i tentativi della forza bruta di mantenere più puliti i registri.
Evan Anderson,

1
Sono già in esecuzione su una porta nonstd e la mia più grande preoccupazione è in realtà il fatto che il mio server sia effettivamente portato offline a causa del gran numero di tentativi di accesso.
boomhauer,

Un'opzione è disabilitare completamente l'accesso al Desktop remoto tramite il Firewall, ma avere un servizio in esecuzione sul server che riconfigura il firewall per consentire il traffico RDP attraverso, questo servizio è protetto da password e forse consente l'accesso solo da una fonte IP "attendibile" ( come l'intervallo IP di un telefono cellulare o il tuo ufficio). Presenta problemi, ma funziona.
Dai

1

Ci sono alcune altre soluzioni anche se vuoi invece avere una soluzione basata sulla GUI e creare davvero diversi set di regole per eventi diversi. Il più semplice sarebbe RDPGuard (hxxp: //www.rdpguard.com) ma in un ambiente aziendale probabilmente vorrai più segnalazioni come da dove proviene l'attacco (paese, origine) e quale nome utente è stato utilizzato in modo da poter rapidamente decidere se è uno dei tuoi utenti che si blocca accidentalmente o cerca di accedere da dove sai che non lo sono.

Personalmente mi piace Syspeace (hxxp: //www.syspeace.com) che fa tutte quelle cose per noi, ma ho pensato di menzionarle entrambe comunque



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.