What is User Access Logging and how to use it

By Andrei Ungureanu - Last updated: Tuesday, April 10, 2018

User Access Logging (zis si UAL) este inca un feature obscur al Windows Server (prezent incepand cu versiunea 2012) necunoscut de majoritatea administratorilor si inca ma mir ca a reusit sa isi faca aparitia si in urmatoarele versiuni de Windows Server.

UAL este un serviciu ce colecteaza date despre utilizarea anumitor componente si vine instalat si activat by default.

image

Puteti controla serviciul din consola services sau cu alte variante din command prompt. Pentru mediile high performance unde stiti ca nu aveti nevoie de asa ceva, puteti sa il opriti (genereaza IO-uri suplimentare si va consuma si spatiu pe disk). Serviciul stocheaza date de pe ultimii doi ani, asa ca intr-un mediu utilizat intens o sa stocheze multa informatie pe disk.

Dar sa vedem si cum putem sa interogam datele stocate de acest serviciu.

Prima comanda ar fi Get-UAL ce ne va spune daca serviciul ruleaza sau nu.

image

Urmeaza Get-UALOverview ce ne arata toate componentele pentru care sunt colectate date de utilizare.

image

Sau mai bine asa:

image

Ce nu apare in lista de mai sus este rolul DNS pentru care exista si o comanda speciala, Get-UALDNS:

image

Pe un sistem de test (in cazul meu) informatiile sunt putin confuze, insa pe un sistem de productie veti putea vedea numele si ip-urile clientilor ce au interogat serverul DNS.

Este o metoda foarte utila de a vedea daca un anumit server de DNS este utilizat si de catre cine (fara a mai folosi Wireshark).

Cu Get-UalDailyAccess putem vedea un raport pe ultimele 24 de ore si il putem filtra sa ne arate doar informatiile necesare (gen doar Active Directory):

image

Dar iata si lista cu toate comenzile disponibile:

Get-UalOverview: Provides UAL related details and history of installed products and roles.

Get-UalServerUser: Provides client user access data for the local or targeted server.

Get-UalServerDevice: Provides client device access data for the local or targeted server.

Get-UalUserAccess: Provides client user access data for each role or product installed on the local or targeted server.

Get-UalDeviceAccess: Provides client device access data for each role or product installed on the local or targeted server.

Get-UalDailyUserAccess: Provides client user access data for each day of the year.

Get-UalDailyDeviceAccess: Provides client device access data for each day of the year.

Get-UalDailyAccess: Provides both client device and user access data for each day of the year.

Get-UalHyperV: Provides virtual machine data relevant to the local or targeted server.

Get-UalDns: Provides DNS client specific data of the local or targeted DNS server.

Get-UalSystemId: Provides system specific data to uniquely identify the local or targeted server.

Ce trebuie sa stiti este ca aceste informatii nu sunt afisate real time (cu toate ca informatiile sunt culese realtime pentru majoritatea serviciilor). Baza de date pe care se fac interogarile este updatata o data la 24 de ore. Se pot face modificari in registry pentru a modifica aceasta valoare si gasiti tot ce va trebuie in documentatia oficiala:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/jj574126(v%3dws.11)

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh849634%28v%3dws.11%29

Filed in Windows Server • Tags:

Cloudflare public DNS service 1.1.1.1

By Andrei Ungureanu - Last updated: Tuesday, April 3, 2018

In ultimul timp se tot leaga subiecte pe tema DNS si uite ca vine o stire utila pentru toata lumea. Mai ales in lumina ultimelor stiri legate de cum sunt folosite datele noastre si de urmele pe care le lasam online.

Enter Cloudflare 1.1.1.1 DNS service.

spraypainted-1.1.1.1

IP-urile v4 pentru noul serviciu de DNS sunt 1.1.1.1 si 1.0.0.1 (exista si v6 si le gasiti pe site-ul lor). Ce ii diferentiaza de Google (8.8.8.8 si 8.8.4.4) este faptul ca nu vor utiliza sau stoca informatiile clientilor iar logurile vor fi sterse la 24 de ore.

Este o miscare in directia potrivita pentru evolutia internetului si recomand utilizarea noilor servere DNS (fiabilitate, performanta, securitate).

Mai multe detalii gasiti in link-urile de mai jos:

https://blog.cloudflare.com/announcing-1111/

https://blog.cloudflare.com/dns-resolver-1-1-1-1/

PS: Acum sa nu credeti ca daca o sa folositi alte servere de DNS, traficul vostru de DNS o sa fie invizibil. Protocolul DNS mai are mult de evoluat si exista initiative (TLS/HTTPS) dar pana o sa le vedem implementate in sistemele de operare comerciale o sa mai dureze.

Filed in Networking • Tags: ,

Azure Private DNS Zones

By Andrei Ungureanu - Last updated: Tuesday, April 3, 2018

Am scris saptamana trecuta despre cum sa iti hostezi o zona DNS pe Azure, dar nu am mentionat varianta in care vrei sa hostezi o zona interna. Pana acum un server DNS de pe o masina onprem sau din cloud cu serviciul DNS instalat se ocupa de asta. Dar putem sa renuntam la in a mai administra un server cu serviciul DNS si putem sa tinem si zonele interne in Azure.

Serviciul se numeste Azure DNS for private domains si pentru ca in momentul de fata este in beta, este free of charge (dupa ce va fi GA atunci probabil va costa).

https://docs.microsoft.com/en-us/azure/dns/private-dns-overview

Il poti folosi acolo unde vrei sa ai rezolutie de nume intre masinile tale din cloud dar fara a mai administra si un server DNS.

DNS overview

Azure private DNS zones este inca in beta, asa ca inca ii mai lipsesc cateva chestii de baza. Daca sunteti integrati si cu un mediu Active Directory on premises atunci nu va recomand (nu puteti face Conditional Forwarding, inca).

Managementul se poate face momentan doar din linie de comanda cu Azure CLI sau Powershell.

Filed in Networking, Windows Azure • Tags: ,

How to use Set-ADUser instance feature

By Andrei Ungureanu - Last updated: Monday, April 2, 2018

Comanda Set-ADUser din modulul Active Directory are o multime de parametri ce pot fi folositi pentru a modifica direct atributele unui user din AD. Dar daca citesti atent documentatia vei observa ca exista un parametru numit –Instance ce schimba total modul de lucru al comenzii. Iar modul asta e util pentru cei familiari cu vechiul mod de operare din VbScript si ADSI. Mai exact lucrezi pe o instanta a obiectului stocata in memorie iar la final scrii schimbarile pe obiectul real din directory.

Prima data trebuie sa obtinem o copie a obiectului pe care dorim sa il modificam. Iar asta o facem cu Get-ADUser. Atentie cafara alti parametri, comanda va aduce doar un subset standard. Daca vrem sa aducem atribute suplimentare, va trebui sa le specificam cu parametrul –Properties (care accepta si * pentru a returna toata atributele):

image

Odata ce am stocat informatiile intr-o variabila locala, putem incerca sa accesam din proprietatile obiectului:

image

Pasul urmator va fi sa modificam o proprietate aflata in memorie iar apoi sa facem modificarea si in AD cu Set-ADUser:

image

Comanda SetAD-User a scris noile modificari in AD si se pot vedea imediat:

image

Filed in Active Directory, Scripting • Tags: , ,

Hosting your DNS zone on Windows Azure

By Andrei Ungureanu - Last updated: Tuesday, March 27, 2018

DNS hosting nu e un subiect nou iar hosting de DNS gasim peste tot. Cateodata chiar si free. Iar unii dintre noi folosesc serverele Windows existente ce sunt vizibile in Internet pentru a-si hosta zonele DNS externe.

Dar ce am observat ca este mai putin cunoscut este faptul ca poti sa iti hostezi zona DNS in Azure. Si este incredibil de simplu. Bineinteles ca nu este gratis. Preturile sunt decente si le gasiti in link-ul de mai jos si o sa pun si o imagine cu preturile de la data scrierii acestui articol:

https://azure.microsoft.com/en-us/pricing/details/dns/

image

Procedura pentru definirea zonei in Azure este urmatoarea. Dupa ce va logati in portalul de management va duceti la sectiunea Networking si de acolo selectati DNS Zones (sau puteti sa alegeti optiunea de Search si sa cautati dupa DNS Zones). Aici alegeti Create DNS Zone.

image

Ce este cel mai important aici este numele zonei. Resource group location nu este prea important pentru ca nameserver-ele oricum sunt distribuite global.

image

Cu un click pe zona puteti vedea detaliile din zona nou creata si puteti adauga noi inregistrari.

image

In partea dreapta sus puteti vedea lista de nameservere. Pe acestea trebuie sa le setati la TLD-ul responsabil de zona voastra. In exemplul meu am adaugat aceste nameservere la ROTLD. Totul a fost functional in aproximativ 5 minute.

Nota: Ce ma deranjeaza la setup-ul zonei este serial-ul din SOA ce nu prea respecta recomandarile. Dar se poate seta de mana cu un click pe SOA.

Filed in Windows Azure • Tags: ,

Windows ignoring specific entries in the HOSTS file

By Andrei Ungureanu - Last updated: Monday, March 26, 2018

Rezolvarea unor nume la adrese IP prin fisierul HOSTS (prezent in %windir%\system32\drivers\etc) este un mecanism arhicunoscut si folosit de fiecare data cand vrem sa facem bypass la metodele de rezolutie de nume externe sau pur si simplu dorim sa blocam accesul la un anumit site (iar unele tipuri de malware folosesc acest mecanism ca sa faca hijack la anumite situri legitime).

Ce nu se stie insa este ca anumite host-uri sunt hardcodate in Windows si oricat am incerca sa folosim noi fisierul HOSTS ca sa redirectam catre un anumit IP, nu va fi posibil.

De exemplu daca incercam sa setam un alt ip pentru update.microsoft.com:

image

Efectiv va fi ignorat:

image

Si asta se va intampla pentru mai multe nume ce sunt considerate critice pentru utilizator si sistemul de operare:

download.microsoft.com

update.microsoft.com

support.microsoft.com

go.microsoft.com

microsoftupdate.microsoft.com

windowsupdate.microsoft.com

msn.com

www.msn.com

Si mai sunt si altele, toate apartinand Microsoft. Asa ca daca incercati sa redirectati catre un alt IP un site Microsoft folosind fisierul HOSTS si nu o sa mearga, acum stiti motivul.

Daca totusi doriti sa blocati accesul catre un astfel de site, puteti incerca sa folositi Windows Firewall.

Filed in Windows Client • Tags:

No more Windows Homegroup starting with Windows 10 build 17063

By Andrei Ungureanu - Last updated: Sunday, March 25, 2018

Daca va numarati printre cei ce incepusera sa foloseasca Windows Homegroup ce a fost introdus incepand cu Windows 7, va asteapta o surpriza in urmatoarea versiune de Windows.

Incepand cu Windows 10 build 17063, aka Spring Creators Update, Homegroup nu va mai fi disponibil. Se pare ca exista un push foarte mare catre cloud si renuntarea la tehnologiile ce inca ne tin legati de stocarea datelor pe sistemele de acasa.

Conform https://blogs.windows.com/windowsexperience/2017/12/19/announcing-windows-10-insider-preview-build-17063-pc/ alternativele ar fi:

File Storage:

OneDrive is a cloud-first, cross-device storage and collaboration platform for all of the pieces of data that matter most in your life – like your files, your photos, your videos, and more.
OneDrive Files On-Demand takes cloud file storage a step further, allowing you to access all your files in the cloud without having to download them and use storage space on your device.

Share Functionality: For those who prefer not to use the Cloud to connect their devices, the Share functionality for folders and printers allows you to see the available devices and connect them to and from other PCs on your home network.
Easier Connection: No more remembering cryptic HomeGroup passwords in order to connect to another PC. You can now simply connect through your Microsoft Account email address across devices.

Pentru un end user, poate doar One Drive e o alternativa simplu de folosit. Sa folosesti un network share pe sisteme standalone poate fi o adevarata provocare cateodata.

Filed in Windows Client • Tags: ,

How to enable SMB Encryption on Windows Shares

By Andrei Ungureanu - Last updated: Friday, March 23, 2018

Transferul intre client si server-ul Windows ce hosteaza un network share este necriptat by default. Iar in scenariile unde se pune accent pe securitatea informatiilor, acest lucru poate fi o problema serioasa. Incepand cu SMB v3 si Windows 2012, exista SMB Encryption. Si toata criptarea asta end to end se poate face printr-un simplu click:

image

In schimb trebuie sa aveti grija la clientii legacy ce nu suporta SMB v3. Daca veti incerca sa accesati un astfel de share cu Windows 7 o sa primiti un mesaj de Access Denied.

SMB Encryption poate fi activat la nivel de share sau la nivelul intregului server. La nivel de share se poate vedea in imaginea de mai sus checkbox-ul responsabil de aceasta setare. A doua varianta (la nivelul intregului server) se activeaza doar din linie de comanda cu Set-SmbServerConfiguration (ce merge impreuna cu Get-SmbServerConfiguration):

image

Optiunea necesara pentru a activa SMB Encryption la nivelul intregului server este EncryptData, iar in cazul meu este pe False pentru a permite compatibilitatea cu clientii legacy. Tot ce trebuie sa faceti este sa schimbati aceasta optiune pe True.

Nota: Din clipa in care setati EncryptData pe True, orice client ce nu stie SMB v3 v-a prima Access Denied cand va incerca sa acceseze serverul prin protocolul SMB. Nu va putea nici macar sa listeze share-urile.

Tot in imaginea de mai sus puteti observa RejectUnencryptedAccess si probabil va intrebati de ce este pe True. Optiunea permite fallback pentru clientii vechi ce nu stiu SMB V3 atunci cand e pe False si face enforcement atunci cand e pe True. Ca un exemplu, daca activam encryption la nivel de share si setam RejectUnencryptedAccess pe False, clientii cu Windows 10 vor putea accesa share-ul conexiunea fiind criptata, iar clientii cu Windows 7 vor face fallback la SMB v2 si vor accesa share-ul necriptat. Tot la fel si cand e activat la nivel de server.

Filed in Windows Client, Windows Server • Tags: ,

Create Windows shares on remote servers

By Andrei Ungureanu - Last updated: Tuesday, March 20, 2018

Cum in ultimul timp ma invart numai prin probleme legate de file server, permisiuni NTFS si network share-uri, tot invat cum sa fac anumite task-uri in diverse moduri. Iar sa creezi un share pe o masina remote e tricky cateodata. Pe vremuri foloseam PSEXEC si rulam MKDIR si NET SHARE. Dar acum avem pretentii de la Powershell. Problema e ca prin noile comenzi din modulul SMB, tot nu merge. Poti sa fac share-uri local, dar nu remote. Sau poti folosi Invoke-Command si sa rulezi New-SMBShare sau NET SHARE remote.

Dar ce faci daca PS Remoting nu e activat. Si tot la WMI ajungem, dar de data asta via Powershell:

$newShare = Get-WmiObject win32_share -ComputerName numeserver -list
$newShare.Create("c:\path","numeShare",0)

image

Cand creati instanta lui Win32_Share trebuie sa folositi parametrul –List, altfel nu o sa vedeti metoda Create.

Parametrii folositi au fost Path, Share Name si Type. Type se refera la disk, printer etc. In cazul nostru am folosit 0 ce reprezinta Disk Drive.

Ca sa determinati daca taskul a fost efectuat cu succes, ReturnValue trebuie sa fie 0.

Documentatia completa o gasiti aici:

https://msdn.microsoft.com/en-us/library/aa389393(v=vs.85).aspx

Filed in Scripting, Windows Server • Tags: , , ,

Running commands on remote computers from Powershell

By Andrei Ungureanu - Last updated: Monday, March 19, 2018

A cam trecut vremea de cand singura varianta ca sa rulezi ceva pe un sistem remote se facea prin PSEXEC. In ultimii ani am folosit Powershell si PS Remoting pentru astfel de activitati insa as vrea azi sa prezint si cum se face plus o alternativa in caz ca Powershell Remoting nu este activat sau accesati sisteme mai vechi.

Prima data e util sa stiti cum sa testati daca sistemul remote are activat  Powershell Remoting. Prima data puteti  incerca sa verificati daca sistemul remote este online prin Test-NetConnection. Iar apoi o alta verificare partiala se poate face prin comanda Test-WSMan.

image

Daca returneaza eroare (si automat $False) atunci WinRM nu este activat si automat nici PS Remoting nu o sa mearga. Dar daca este activat atunci puteti incerca sa rulati o comanda remote folosind Invoke-Command. Si daca rezultatul va fi $False atunci probabil nu aveti drepturile necesare si colectati mesajul de eroare.

Invoke-Command functioneaza cam asa: Invoke-Command –ComputerName NumeleServerului {scriptblock}. In scriptblock puteti pune efectiv un script; o serie de comenzi despartite prin punct si virgula.

Iar in exemplul de mai jos am luat un caz simplu in care trebuie sa cream doua foldere pe sistemul remote. In exemplul asta trimitem si niste parametri catre comanda MKDIR din acel scriptblock. Vedeti mai jos cum se foloseste –ArgumentList (este un array, ce apoi il accesati din interiorul acoladelor).

image

Suficient pana aici ca sa va faceti o idee. Sunt multe de spus dar nu o sa mai dezvolt. in schimb o sa mai prezint o varianta prin care puteti executa aceasta operatiune si fara Powershell remoting.

Daca va mai aduceti aminte si prin WMI exista o clasa numita Win32_Process ce poate instanta procese remote. Iar cu Invoke-WmiMethod puteti face asta remote:

image

De data asta ArgumentList este diferit si aici punem de fapt procesul sau comanda ce vrem sa ruleze remote. Doar ca de exemplu, pentru ca MKDIR sa ruleze, acesta trebuie sa fie in contextul unui command prompt. Asa ca va trebui sa il rulati cu CMD /C. In cazul de mai sus numele folderului il puteti in locui cu o variabila locala (in primul exemplu cu Invoke-Command nu merge si trebuie sa folositi –ArgumentList).

Mai greu va fi sa colectati erorile in caz ca ceva nu merge. ReturnValue va fi 0 chiar si daca MKDIR va esua. Asta pentru ca win32_process a reusit sa porneasca CMD.EXE dar mai departe nu are vizibilitate daca a si mers comanda.

Sper sa va fie utila infomatia de mai sus.

Filed in Scripting, Windows Client, Windows Server • Tags: , ,