Creating homefolders via Powershell
Din nevoia de a crea home foldere pentru aproximativ 70 useri si de a le da si permisiuni, m-a gandit sa caut o varianta cat mai rapida si profesionista as zice eu. Voiam sa fac chestia asta prin Powershell si in cele din urma am reusit sa fac urmatorul script care creaza folderele si da permisiuni inherited userilor.
$Users = Get-Content "C:\Users.txt"
ForEach ($user in $users)
{
$newPath = Join-Path "\\fileserver\homefolder" -childpath $user
New-Item $newPath -type directory
$acl = Get-Acl $newpath
$permission = "domeniu\$user","FullControl","Allow"
$inherit =[system.security.accesscontrol.InheritanceFlags]"ContainerInherit,ObjectInherit"
$propagation=[system.security.accesscontrol.PropagationFlags]"None"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ("domeniu\$user", "FullControl", $inherit, $propagation, "Allow")
$acl.SetAccessRule($accessRule)
$acl | Set-Acl $newpath
}
Lista cu userii o puteti obtine tot via Powershell prin comanda de mai jos:
Get-ADUser -Filter * -SearchBase "OU=TestUsers,DC=domeniu,DC=ro" -Properties * | Select-Object -property SamAccountName| Export-CSV c:\Users.csv
Iar urmatorul pas dupa crearea folderelor este sa setati Home Folder in proprietatile userului in Active Directory pentru ca maparea sa se faca automat dupa logon. Urmatoarea comanda va enumera userii dintr-un OU specificat si le va seta calea catre homefolder.
Get-ADUser -Filter * -SearchBase "OU=TestUsers, dc=domeniu,dc=ro" | %{set-aduser-identity $_ -HomeDirectory (‘\\fileserver\homfolder\’+ $($_.SamAccountName)) -homedrive"n:"}
NTFS Permission Reporter
NTFS Permission Reporter este un alt tool din categoria “must have”.
Iti permite sa generezi rapoarte cu permisiunile de securitate de pe share-uri, foldere remote sau locale.
Este destul de util atunci cand se cere asa ceva si te scuteste de multa munca (scripting).
Optiunile de export sunt CSV sua HTML.
Si cam asa arata un raport HTML (nu e recomandat pentru filesystem-uri mari deoarece output-ul poate fi imens si destul de greu de manevrat in browser).
Il puteti downloada free de aici:
http://www.cjwdev.co.uk/Software/NtfsReports/Download.html
Getting product version from the command line
Cateodata e nevoie sa afli rapid ce versiune a unei anumite componente software este instalata pe un sistem. Metode de a afla sunt multe dar in cazul de fata eu cautam o varianta rapida din command prompt.
Si merge foarte simplu folosind WMIC:
Merge sa rulati si WMIC PRODUCT GET NAME,VERSION direct din command prompt fara a mai intra inainte in WMIC.
Sau daca stiti numele produsului puteti folosi clauza WHERE si nu numai atat, puteti cauta si numai dupa o parte din nume ca in exemplul de mai jos:
WMIC product where "name like ‘Vmware%’" get name,version
De retinut aici este ca wildcard-ul este % si nu *.
Iar pentru fanii Powershell in imaginea de mai jos aveti si aceasta varianta:
GWMI este un alias pentru Get-WmiObject.
Must have tool – WinDirStat
Un admin ocupat sigur se loveste in fiecare zi de problema lipsei de spatiu pe disk-ul unui server. Ca a fost prost dimensionat de la inceput, ca utilizarea lui a crescut brusc sau ca pur si simplu profilele unor anumiti utilizatori au strans mult prea multe date, problema trebuie rezolvata cumva si nu in toate cazurile puteam extinde partitia repectiva.
WinDirStat dupa cum si numele ne spune este un Windows Directory Statistics tool. Il puteti descarca din link-ul urmator:
Sau puteti obtine si o versiune portabila de aici: http://portableapps.com/apps/utilities/windirstat_portable
Utilizarea este intuitiva si il puteti folosi foarte usor pentru a explora structura de foldere de pe disk-uri si a observa ce tip de fisiere ocupa cel mai mult spatiu.
Manual SCEP 2012 Client Install
System Center Endpoint Protection aka SCEP este suita antivirus a Microsoft ce se integreaza foarte bine in suita de produse System Center. Problema e ca solutia este atat de integrata cu System Center incat cu greu gasesti ceva informatii ca sa folosesti clientul SCEP si fara System Center. Dar asta nu inseamna ca nu este posibil. Cleintul il puteti obtine dupa o instalare completa de System Center cu Endpoint Protection sau pur si simplu din ISO-ul pe care vine SCEP 2012 in folderul SMSSETUP\CLIENT.
Instalarea manuala este utila atunci cand avem sisteme ce nu sunt in domeniu sau pur si simplu un environment foarte mic cu pana in 10 servere si nu dorim toate functionalitatile din suita System Center ci doar un client AV pe care sa il monitorizam manual.
Si cum pe servere, in functie de rolurile si aplicatiile instalate trebuie setate exceptii o sa avem nevoie de tool-urile de aici:
http://www.microsoft.com/en-us/download/details.aspx?id=13088
Chiar daca sunt pentru 2010 merg foarte bine si pe 2012. In fepserverrolepoliciesforusewithconfigmgrui.exe o sa gasim politicile pentru cateva din rolurile foarte populare cum ar fi AD, Exchange, Sharepoint, SQL, IIS, etc. Mai jos se poate vedea cum se porneste instalarea folosind policy-ul pentru Exchange.
Iar dupa instalare se pot vedea exceptiile facute in SCEP pentru a nu afecta functionarea serverului de Exchange. Bineinteles ca in functie de scenariul fiecaruia este posibil ca o parte din setari sa trebuiasca ajustate.
Exchange 2013 CU1
Mult asteptatul Exchange 2013 CU1 a fost lansat. Pentru cei ce nu stiau, acesta este build-ul de care aveti nevoie pentru a putea integra Exchange 2013 cu versiunile anterioare (2010 si 2007). Spre deosebire de celelalte update-uri pentru Exchange de pana acum acesta vine sub forma unui full build, deci il puteti folosi sa instalati un server nou cu Exchange. Detalii mai jos:
http://www.microsoft.com/en-us/download/details.aspx?id=38176
Securing SMTP Traffic in Exchange 2010/2007
Inca mai exista cazuri in care avem clienti POP3/IMAP ce se conecteaza din diferse locuri din Internet si pe care nu ii putem refuza (si nu accepta nici varianta cu VPN).
Accesul via POP3/IMAP poate fi securizat folosind versiunile SSL ale acestor protocoale si bineinteles deschizand doar porturile pentru versiunile securizate in firewall.
Dar IMAP si POP3 sunt protocoale doar pentru “email retrieval”. Va trebui sa trimitem email-urile tot via SMTP. In majoritatea cazurilor providerii de internet pun la dispozitia clientilor servere de SMTP prin care acestia pot face relay la email-uri. Dar sunt cazuri in care nu avem aceasta varianta si atunci va trebui sa le permitem sa faca relay direct prin SMTP-ul de pe Exchange. Open Relay nu putem face, nici reguli dupa IP, deci singura varianta a ramas cea cu autentificare pe SMTP.
Problema e ca trebuie sa securizam cumva macar trimiterea credentialelor sau si mai bine toata conexiunea. Doar ca varianta SMTP SSL ce teoretic functiona pe portul TCP 465 nu mai este implementata in Exchange 2007/2010. In schimb serverul SMTP suporta criptarea conexiunii peste acelasi port. Deci conexiunea poate incepe pe portul 25 si dupa EHLO se incepe conexiunea criptata folosind STARTTLS. Chestia ce mi se pare putin ciudata este ca e greu cateodata sa iti dai seama daca folosesti o conexiune criptata sau nu.
Totusi ca sa le diferentieze s-a stabilit cumva ca astfel de conexiuni de la clienti catre serverele de SMTP sa se faca peste portul 587. Si chiar din acest motiv veti vedea in Exchange inca un receive connector setat pe acest port si cu setarile necesare sa permita comunicarea criptata intre client si server.
Nota: In cazul conexiunilor externe, Integrated Windows Authentication se refera la NTLM ce va funtiona peste conexiunea SMTP.
Deci permitem accesul catre conectorul ce asculta pe portul 587 iar in clientul de email face setarile ca mai jos (sau apropiat).
Important este sa folosim portul pe care este setat conectorul si sa bifam optiunea “This server requires a secure conexion (SSL)”. Cu aceasta optiune activata clientul va cere serverului inceperea conexiunii securizate folosind comanda STARTTLS. Chiar si fara, folosind conectorul default pe portul 587 in procesul de autentificare va fi folosit NTLM, insa de preferat este TLS.
Sper sa mai foloseasca informatia asta si altora care inca mai lovesc de POP3/IMAP.
Spor!
Listing local group members via Powershell
Tot cautam un exemplu bun zilele astea pentru subiectul din titlu si am gasit ceva ce merge pe forumul powershellcommunity.org:
Nu este un exemplu classic powershell, pentru ca nu exista un cmdlet pentru asa ceva, insa important este ca merge si poate fi adaptat pentru mai multe cazuri.
Mai jos am pus cele doua exemple, unul care scoate numele grupului si inca unul ce pune si numele computerului (daca este grup local) sau numele domeniului. Bineinteles ca va fi nevoie de ceva extra procesare pentru a scoate WinNT:// din fata grupului insa nu e chiat atat de complicat.
$group =[ADSI]"WinNT://./Administrators"
$members = @($group.psbase.Invoke("Members"))
$members | foreach {$_.GetType().InvokeMember("Name", ‘GetProperty’, $null, $_, $null)}
function Get-localgroupmembers ([string]$localcomputername, [string]$localgroupname) {
$groupobj =[ADSI]"WinNT://$localcomputername/$localgroupname"
$localmembers = @($groupobj.psbase.Invoke("Members"))
$localmembers | foreach {$_.GetType().InvokeMember("AdsPath","GetProperty",$null,$_,$null)}
IE10 Hacked but it’s not the only one
Cand ziceam si noi ca poate se mai aseaza lucrurile si macar browserele devin putin mai sigure iar vine un val imens de exploit-uri. Ce este surprinzator este ca pana si noul browser IE10 cu care MS incearca sa ne convinga ca a revenit pe drumul cel bun a picat testele de la Pwn2Own.
Problema si mai mare e ca si restul browserelor din top au cedat (Chrome, Firefox). Gasiti aici rezultatele de la Pwn2Own 2013:
Si daca va ganditi ca in patch-urile de luna asta de la MS s-a rezolvat problema cu IE, think again. Nu s-a rezolvat.
In ritmul asta mai e putin si singura varianta ca sa iti securizezi sistemul va fi sa il scoti din priza.
Show-Command in Powershell v3
Cred ca am mai pomenit odata ca Show-Command este un mare plus in Powershell v3. Show-Command e un fel de extensie pentru putorosi sau si pentru cei care nu au chef sa isi incarce memoria cu syntaxa comenzilor powershell sau cu numele parametrilor.
Noul cmdlet se foloseste in combinatie cu restul comenzilor powershell si ofera access la sintaxa si parametrii acestora intr-o interfata grafica foarte usor de folosit. De exemplu sa spunem ca nu suntem foarte familiari cu Get-Service, atunci rulam Show-Command Get-Service:
Si sa zicem ca vrem sa listam toate serviciile ce incep cu litera A. In tab-ul DisplayName completam campul Displayname cu A*.
Selectam Run, si show-service o sa trimita catre powershell comanda get-service cu parametrii necesari pentru a face ce dorim:
Si inca un exemplu bun ar fi Show-Command Add-Computer:
Format-ul este foarte intuitiv si oricine va putea joina un sistem la domeniu via Powershell. Sau daca nu, macar va folosi optiunea WhatIf si va vedea sintaxa corecta pentru a folosi Add-Computer.
Bineinteles ca tot va trebui sa va mai uitati din cand in cand si in help pentru a vedea semnificatia anumitor parametri. Dar oricum pare mult mai simplu.