none
Sledování aktivity na RDP - přístup u jiné IP adresy

    Dotaz

  • Zdravím, mám terminalserver na který přistupují uživatelé k aplikaci přes Remote App většinou z několika málo známých adres. Chtěl bych dostat email pokaždé, když se nějaký uživatel přihlásí z jiné než "známé" adresy.

    Předem děkuji za radu.


    Ludan

    30. března 2015 20:35

Odpovědi

  • Ahoj. Tak jsem se na to zkusil kouknout. Netestoval jsem to uplne, ale snad ti nastrel pomuze.
    Vychazim z autidu logon udalosti, takze zapnout. Zapnout powershell scripting (set-executionpolicy). Vytvorit csv soubor s databazi klientu (ip,desc v hlavicce a podtim ip adresy a popis pro tebe), oddelovat carka, klasika. 

    #
    $mailfrom = "script@localhost"
    $mailto = "admins@local.domain"
    $subject = "Email Subject" 
    $smtpserver = "mail.local.domain"
    #
    
    $ipdb = Import-Csv c:\scripts\ipdb.csv
    $query = @"
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">
    	*[System[(EventID=4624) 
    	and TimeCreated[timediff(@SystemTime) &lt;= 3600000]]] 
    	and *[EventData[Data[@Name='LogonType'] and (Data='10')]]</Select>
      </Query>
    </QueryList>
    "@
    
    function sendmail($user, $ip) {
        $body = "Posilam email, ze se $user se prihlasil z nezname ip $ip"
        #Send-MailMessage -To $mailto -From $mailfrom -Subject $subject -Body $body -SmtpServer $smtpserver -Priority High
        Write-Host $body
    }
    
    $events = Get-WinEvent -FilterXml $query
    
    ForEach ($event in $events) {
        $xmlevent=[xml]$event.ToXml()
        $user=$xmlevent.SelectSingleNode("//*[@Name='TargetUserName']")."#text"
        $ip=$xmlevent.SelectSingleNode("//*[@Name='IpAddress']")."#text"
        if ($ipdb.ip -notcontains $ip) {
            sendmail $user $ip
        }
    }

    Pomoci xml filtru chytam udalosti ze security logu 4624. Chytam posledi udalosti prihlaseni do TS relace za jednu hodinu. Cas si po otestovani uprav, je v ms. Videl bych to tak na 5 sec. Nasledne k teto udalosti muzes spustit tenhle script, no a nebo naplanovat treba v 5m intervalech, je to na tobe. Jo a samozrejme nastavit smtp, relay a podobne. Snad to pomuze.

    Martin aka Fangy


    19. dubna 2015 14:56
  • Se obavam, ze standardnimi prostredky Windows jste schopen reagovat pouze na LOGON akci. K te muzete napr. pres scheduler, nebo GPO priradit LOGON script. V nem si delejte co potrebujete. Necekejte, ze vam ten script nekdo zde doda kompletni.

    Tj nevyresite pripojeni z jedne IP, odpojeni a pripojeni k odpojene session z druhe IP (nepovolene)

    http://superuser.com/questions/122908/run-application-or-script-on-windows-rdc-connection

    Zde je idea, ze lze napsat aplikaci, ktera bude reagovat i na ostatni udalosti = pripojeni k odpojene session.

    A neslo by vasi ideu nahradit FW pravidlem? Proste povolit vyjmenovane IP. Ostatni maji smulu a budou povoleny po nejakem organizacnim procesu. Tim mate IP adresy pod kontrolou a delegujete na uzivatele reporting o nefunkcnosti RDP.

    31. března 2015 6:57
  • Dalsi inspirace z Internetu:

    Alright I figured out that the task scheduler application that comes with windows is configurable to where I can run a batch script, triggered when an event in the event log is generated. Via the UI you choose the event type, event source and event ID, in which case I used 4264 (and yes is captures all logon types). Here I used a simple batch script instead:

    SET logfile="rdp_ip_logs.log"
    date /T>>%logfile%
    time /T>>%logfile%
    netstat -n | find ":3389" | find "ESTABLISHED">>%logfile%
    

    Also I found a this super-useful example on how to subscribe/listen to event writes in .NET: http://msdn.microsoft.com/en-us/library/bb552514(v=vs.90).aspx I'm gonna end up using that instead to to write certain events to to a database for web-based examination.

    M.

    30. dubna 2015 9:27
    Moderátor

Všechny reakce

  • Se obavam, ze standardnimi prostredky Windows jste schopen reagovat pouze na LOGON akci. K te muzete napr. pres scheduler, nebo GPO priradit LOGON script. V nem si delejte co potrebujete. Necekejte, ze vam ten script nekdo zde doda kompletni.

    Tj nevyresite pripojeni z jedne IP, odpojeni a pripojeni k odpojene session z druhe IP (nepovolene)

    http://superuser.com/questions/122908/run-application-or-script-on-windows-rdc-connection

    Zde je idea, ze lze napsat aplikaci, ktera bude reagovat i na ostatni udalosti = pripojeni k odpojene session.

    A neslo by vasi ideu nahradit FW pravidlem? Proste povolit vyjmenovane IP. Ostatni maji smulu a budou povoleny po nejakem organizacnim procesu. Tim mate IP adresy pod kontrolou a delegujete na uzivatele reporting o nefunkcnosti RDP.

    31. března 2015 6:57
  • FW pravidlem by to nahradit nešlo protože neexistuje a není možná žádná 24hodinová služba umožňující uživatelům povolit přístup v nějakém reálném čase.  Přitom i když přístupy z "cizích" adres jsou potřeba jen nahodile, tak potřeba prostě jsou a nelze je vázat na nějaké povolování či nastavování. 

    Ještě mne napadá - je to mailem a samozřejmě vyhodnocované s určitým zpožděním, takže by nevadilo parsovat nějakým automatem třeba co 5 minut nějaký log a na základě jeho vyhodnocení ten email poslat.

    Takže z toho vyplývá otázka lze nějaký takový log kde by byla IP adresa a Username. Případně alespoň ta IP adresa (log FW ?)

    Není to nijak složitá záležitost, je to jeden virtuální sever2008 TS/RDP pro cca 8 uživatelů a jednu win aplikaci.


    Ludan

    31. března 2015 14:56
  • Udelejte si skript na strane klienta a poslete informaci treba pres mail.

    M.

    31. března 2015 19:33
    Moderátor
  • Mno to jaksi popírá celou záležitost, protože jde o to, kdyby byly někerému uživateli zcizeny přístupové údaje, případně kdyby někdo nějak RDP hacknul, tak jistě nebude spouštět nějaký script a upozorňovat mne na nabourávání do systému. Navíc na klientské straně - právě v těchto případech půjde o přístup z různých i neWindows systémů (například z tabletu) a těžko budu zajišťovat.

    Ludan

    31. března 2015 22:03
  • Pouzivate server jeste na jine ucely nez je RDP, jedna se o lokalni ucty na serveru nebo nejake domenove ucty?

    Napada me nejaky audit logon udalosti, ke kterym by melo dochazet vzdy pri prihlasovani....

    15. dubna 2015 13:11
  • Ne nic jiného než jedna aplikace přes RDP tam neběží.

    Ovšem nevím jak zjistit odkud se uživatel připojuje.


    Ludan


    • Upravený lzita 17. dubna 2015 22:48
    17. dubna 2015 22:47
  • Ahoj. Tak jsem se na to zkusil kouknout. Netestoval jsem to uplne, ale snad ti nastrel pomuze.
    Vychazim z autidu logon udalosti, takze zapnout. Zapnout powershell scripting (set-executionpolicy). Vytvorit csv soubor s databazi klientu (ip,desc v hlavicce a podtim ip adresy a popis pro tebe), oddelovat carka, klasika. 

    #
    $mailfrom = "script@localhost"
    $mailto = "admins@local.domain"
    $subject = "Email Subject" 
    $smtpserver = "mail.local.domain"
    #
    
    $ipdb = Import-Csv c:\scripts\ipdb.csv
    $query = @"
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">
    	*[System[(EventID=4624) 
    	and TimeCreated[timediff(@SystemTime) &lt;= 3600000]]] 
    	and *[EventData[Data[@Name='LogonType'] and (Data='10')]]</Select>
      </Query>
    </QueryList>
    "@
    
    function sendmail($user, $ip) {
        $body = "Posilam email, ze se $user se prihlasil z nezname ip $ip"
        #Send-MailMessage -To $mailto -From $mailfrom -Subject $subject -Body $body -SmtpServer $smtpserver -Priority High
        Write-Host $body
    }
    
    $events = Get-WinEvent -FilterXml $query
    
    ForEach ($event in $events) {
        $xmlevent=[xml]$event.ToXml()
        $user=$xmlevent.SelectSingleNode("//*[@Name='TargetUserName']")."#text"
        $ip=$xmlevent.SelectSingleNode("//*[@Name='IpAddress']")."#text"
        if ($ipdb.ip -notcontains $ip) {
            sendmail $user $ip
        }
    }

    Pomoci xml filtru chytam udalosti ze security logu 4624. Chytam posledi udalosti prihlaseni do TS relace za jednu hodinu. Cas si po otestovani uprav, je v ms. Videl bych to tak na 5 sec. Nasledne k teto udalosti muzes spustit tenhle script, no a nebo naplanovat treba v 5m intervalech, je to na tobe. Jo a samozrejme nastavit smtp, relay a podobne. Snad to pomuze.

    Martin aka Fangy


    19. dubna 2015 14:56
  • Ahoj, zkousel si to? Funguje to? Kdyztak to zavri nebo dopln. Fangy
    30. dubna 2015 7:25
  • Dalsi inspirace z Internetu:

    Alright I figured out that the task scheduler application that comes with windows is configurable to where I can run a batch script, triggered when an event in the event log is generated. Via the UI you choose the event type, event source and event ID, in which case I used 4264 (and yes is captures all logon types). Here I used a simple batch script instead:

    SET logfile="rdp_ip_logs.log"
    date /T>>%logfile%
    time /T>>%logfile%
    netstat -n | find ":3389" | find "ESTABLISHED">>%logfile%
    

    Also I found a this super-useful example on how to subscribe/listen to event writes in .NET: http://msdn.microsoft.com/en-us/library/bb552514(v=vs.90).aspx I'm gonna end up using that instead to to write certain events to to a database for web-based examination.

    M.

    30. dubna 2015 9:27
    Moderátor