giovedì 4 agosto 2022

Teams - impossibile accedere - CAA20002 AADSTS1002016 - errore TLS

Ciao a tutti,

non riuscivo ad accedere a Teams, e Word mi chiedeva di rieffettuare l'accesso con il mio account.

Anche se un po scettico ho provato a seguire il consiglio dell'articolo riportato in fondo. La cosa che mi ha sbalordito di piu e' che ha funzionato!!!

Errore TLS - CAA20002 AADSTS1002016

Risoluzione:

pannello di controllo - opzioni internet - impostazioni avanzate - ripristina impostazioni avanzate

Credo che siano state reimpostate le impostazioni TLS.

========================================================

Hello friend, my name is Lucas and I'm from Brazil but I know how to help you. Go to "Control Panel" then "Internet Options", then click the "Advanced" tab, then click "Restore Advanced Settings", click "Apply" and then "OK". Hope this helps !

========================================================

REFERENCE

https://community.spiceworks.com/topic/2458811-teams-error-caa20002


mercoledì 3 agosto 2022

Powershell - Matrici Array

In powershell e' molto importante saper maneggiare matrici ed array. Un'altra cosa molto importante e' capire se si sta lavorando con degli oggetti o con dei valori. I primi sono dotati di proprieta che e' possibile interrogare e modificare. I secondi sono oggetti molto piu semplici. Lavorando con ImportExcel ho acquisito un intero foglio di lavoro in una singola variabile. A questo punto dovevo capire come maneggiarla. 

Importare il conenuto del foglio VpnUsers in una variabile

$test = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15

$test2 = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers


Visualizzo il contenuto delle variabili. Sembrerebbero degli arrays (vedo un simbolo @)

write-host $test

write-host $test2

Verifico il tipo esatto di variabile 

$test.gettype()

$test2.gettype()

$test.gettype() | fl

$test2.gettype() | fl


Verificare i tipi di elementi di una matrice

$test |get-member


Contare gli elementi dell'arrays

Se il risultato mi dice che ho 14 elementi, significa che l'array ha gli elementi da [0 a 13] valorizzati. L'elemento [14] non e' valorizzato

$test.count


Cosa contiene il primo elemento della matrice

$test[0]

Cosa contengono il primo ed il tredicesimo elemento

$test[0,12]


Ruotare i valori della matrice

Per utilizzare gli elementi, probabilmente dovro ruotarli, con un ciclo foreach o simile


$test = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers

$test | ForEach-Object {"Item: [$PSItem]"}


foreach ( $node in $test ) {

"Item: [$node]"

}



Matrici di oggetti


Matrici oggetti

Le matrici possono anche contenere degli oggetti, come elementi.


Esempio

$data = @(

    [pscustomobject]@{FirstName='Kevin';LastName='Marquette'}

    [pscustomobject]@{FirstName='John'; LastName='Doe'}

)


Esempio

$processList = Get-Process


La caratteristica principale degli oggetti e che essi hanno delle proprieta

ESEMPIO


$temp[0]  - mi restituisce il contenuto del singolo elemento

$test[0].givenname - mi restisce il valore della colonna givenname per il primo record


Elencare il contenuto del campo Surname di tutti gli elementi dell'array

$test | ForEach-Object {$_.Surname}


In alcuni casi potrebbe essere necessario le proprieta estese

$test | Select-Object -ExpandProperty LastName


Filtrare il contenuto di un'array


Vengono restituiti tutti gli elementi con Marco nel givenname

$test | Where-Object {$_.givenname -eq 'Marco'}

$data | Where FirstName -eq Kevin


REFERENCE

https://docs.microsoft.com/it-it/powershell/scripting/learn/deep-dives/overview?view=powershell-7.2

https://docs.microsoft.com/it-it/powershell/scripting/learn/deep-dives/everything-about-arrays?view=powershell-7.2


Powershell - importexcel

Mi e' capitato di dover lavorare con il modulo powershell ImportExcel. Questi sono alcuni degli appunti che mi sono segnato. 

get-services | Export-excel -now

Crea il file 

get-services | Export-excel c:\temp\testdemo.xlsx

Crea il file e lo apre

get-services | Export-excel c:\temp\testdemo.xlsx -show

Crea il file e lo apre, impostando filtri sulle colonne ed autosize

get-services | Export-excel c:\temp\testdemo.xlsx -show -autosize -autofilter

Cancellare un file 

rm test.xlsx -ErrorAction Ignore

Usare la formattazione condizionale

$data = get-service | Select Status, Name, DisplayName, StartType

$data | Export-Excel test.xlsx -Show -Autosize

rm test.xlsx -ErrorAction Ignore

$text1 = New-ConditionalText stop

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $text1

$text2 = New-ConditionalText runn Blue Cyan

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $text1, $Text2

$text3 = New-ConditionalText svc Wheat Green

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $Text1, $Text2, $$Text3

$data = get-process | Where Company | Select Company, Name, PM, Handles, *mem*

$cfmt = New-ConditionalFormattingIconSet -range "C:C" -ConditionalFormat ThreeIconSet - IconType Arrows

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalFormat $cfmt

$ctext = New-ConditionalText Microsoft Wheat Green

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalFormat $cfmt -ConditionalText $ctext

Importare i valori dal foglio di lavoro

import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15

DEMO

1 - Compilare un file  excel

ps excel -ErrorAction ignore | kill

$xl =  New-Object -ComObject excel.application

$xl.visible =  $True

$wb = $xl.workbooks.add()

$ws = $wb.worksheets["Sheet1"]

$ws.Cells[1,1].value = "ID"

$ws.Cells[1,2].value = "Product"

$ws.Cells[1,3].value = "Quantity"

$ws.Cells[1,4].value = "QPrice"

$ws.Cells[1,5].value = "Value"

$ws.Cells[2,1].value = 12001

$ws.Cells[2,2].value = "Nails"

$ws.Cells[2,3].value = 37

$ws.Cells[2,4].value = 3,99

$ws.Cells[2,5].formula = "=C2*D2"

$ws.Cells[3,1].value = 12002

$ws.Cells[3,2].value = "Hammer"

$ws.Cells[3,3].value = 5

$ws.Cells[3,4].value = 12,10

$ws.Cells[3,5].formula = "=C3*D3"

$ws.Cells[4,1].value = 12003

$ws.Cells[4,2].value = "Saw"

$ws.Cells[4,3].value = 12

$ws.Cells[4,4].value = 15,37

$ws.Cells[4,5].formula = "=C4*D4"

2 - creare un file excel con contenuto

#Hello World

"Hello World" | Export-Excel

3 - Creare una colonna con intestazione Data ed inserire hello world come primo valore

[PSCustomObject]@{Data="Hello World"} | Export-Excel

4 - chiudere il processo di excel e rimuovere eventuali file creati per test

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

5 - esportare tutti i processi in excel

get-process |export-excel '.\demo.xlsx'

invoke-item .\demo.xlsx (si apre solo se excel e' installato)

6 - esportare solo alcune proprieta dei processi in excel

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

get-process | select company, pm, handles | export-excel '.\demo.xlsx' -show

7 - importare dati da un csv ed esportarle in excel

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

import-csv data.csv | Export-Excel test.xlsx -show -TableName Itemms -AutoSize

8 - importare dati da un file excel in una variabile per poi elaborarli

$UserA = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers

9 - importare dati da un file excel, solo alcune colonne, in una variabile per poi elaborarli

$UserB = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15


Powershell - Lavorare con i moduli - ImportExcel

Powershell gallery e' il repository di Microsoft per script moduli aggiuntivi powershell.

E' possibile eseguire diversi comandi direttamente da powershell per esplorare cosa e' disponibile e per importarlo

Attualmente sono alla ricerca di un modulo powershell  che permetta di interfacciarsi ad excel senza che sia installato sul pc/server stesso.

Sopra trovate i riferimenti del modulo  che ho trovato.


Visualizzare l'elenco dei moduli installati

Get-InstalledModule

Cercare moduli powershell per excel

Find-Module *excel*


Ricerco tutte le versioni disponibili di un modulo specifico

Find-Module importexcel -allversions

PS C:\Script\Azure>Find-Module importexcel

Version    Name                                Repository           Description

-------    ----                                ----------           -----------

7.8.0      ImportExcel                         PSGallery            PowerShell module to import/export Excel spreads...


Installazione di un modulo

Find-Module importexcel | Install-Module

oppure

install-module ImportExcel


Verificare quali comandi il modulo mette a disposizione

get-command -module ImportExcel


N.B. 
Uno degli utilizzi del modulo ImportExcel e' quello di poter utilizzare file Excel senza che questo sia installato.

REFERENCE

https://www.powershellgallery.com/packages/ImportExcel/7.4.1

https://www.youtube.com/watch?v=U3Ne_yX4tYo&list=PL5uoqS92stXioZw-u-ze_NtvSo0k0K0kq

https://github.com/dfinke/ImportExcel

https://www.youtube.com/watch?v=4Xw7r6436w0


POWERSHELLGET

Puo capitare di dover installare dei moduli in powershell. Per fare questo ci viene in aiuto PowershellGet, che soprattutto nelle prome versioni di powershell richiede un po di preparazione. Questi sono un po di appunti che mi sono preso la prima volta che ho dovuto utilizzarlo.

prereq net framework 4.5 e superiori

Necessario da powershell 5.1 e precedenti

Abilita TLS 1.2

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

Per funzionare richiede che sia installati il NuGet provider

Install-PackageProvider -Name NuGet -Force

Installare powershellGet

Install-Module PowerShellGet -AllowClobber -Force

Registrare il repository Powershell gallery come repository attendibile

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

REFERENCE

https://docs.microsoft.com/it-it/nuget/what-is-nuget

https://docs.microsoft.com/it-it/powershell/scripting/gallery/installing-psget?view=powershell-7.2


Windows update notification

Puo capitare che ci siano programmi o procedure automatizzate che sono disturbate  da banner e messaggi a schermo, dio cui Windows 10 e le ultime versioni di Windows 10 sono ricche. Nel mio caso specifico mi riferisco al banner degli aggiornamenti pronti da installare di Windows 10.

I banner (NAG screen) di Windows viene periodicamente attivato da un processo schedulato presente in Task Scheduler - Microsoft - Windows - UpdateOrchestrator - USO_UxBroker.

La soluzione piu semplice e' ovviamente quella di disattivare questo task. Esiste una piccola complicazione nel farlo. Il task gira nel contesto del LocalSysytem e quindi occorre usare qualche tool come psexec, ad esempio. Nel mio caso, pr evitare di far scattare mille allarmi di sicurezza per attivita pericolose o sospette ho preferito lasciar perdere.

La soluzione alternativa che ho trovato e che nel mio caso sta funzionando e' stata quella di schedulare l'esecuzione di un batch:

C:\Windows\System32\taskkill.exe /im MusNotification.exe /f

C:\Windows\System32\taskkill.exe /im MusNotifyIcon.exe /f

net stop UALSVC && net start UALSVC

Che sta funzionando piuttosto bene. In poarticolare e' stato risolutivo il riavvio del servizio "User Access Logging Service", che resetta tutte le notifiche.

lunedì 1 agosto 2022

Powershell - profilo

E' possibile personalizzare il profilo con cui si avvia powershell. Il motivo piu comune per farlo e' quello di includere delle funzioni, per poterle richiamare piu velocemente. 

Per farlo, avviare powershell, eseguire il seguente comando, e nel file che si apre includere il codice per personalizzarla.

notepad $profile

domenica 19 giugno 2022

SQL server management studio mostra un punto di domanda

 SQL SERVER MANAGEMENT STUDIO

Puo succedere di dover utilizzare che server applicativo e SQL server a cui si appoggia, siano in reti differenti (ES: server in DMZ e SQL in LAN), separati da un firewall. Molto spesso in questi casi i due server risiederanno in domini differenti, probabilmente non trustati.

Usando la SSMS dalla DMZ verso la LAN, potrebbe apparire un punto interrogati sul nome dell'istanza alla quale ci connetteremo. Questo perche la console avviata in DMZ non e' in grado di rilevare lo stato del servizio SQL tramite interrogazione WMI.

Ovviamente, se siete collegati, non puo trattarsi di un problema di firewall. Nel mio caso si trattava di un problema di autenticazione. Per assicurarmene ho provato a fare un'interrogazione WMI dalla macchina in DMZ verso quella in LAN, usando WBEMTEST.

Nella schermata ho premuto CONNECT (facendo aprire una seconda finestra).

In questa seconda schermata ho inserito il nome del server e le relative credenziali  (ES:  \\serversql\root\cimv2   username@mydomain.local e password) e quindi premuto nuovamente CONNECT. Premendo ENUM CLASSES, se tutto funziona correttamente, verranno elenbca tutte le classi disponibili.



In breve e un falso problema, (se tutto sta funzionado correttamente, ovviamente :)) 

REFERENCE

https://www.logicmonitor.com/support/monitoring/os-virtualization/troubleshooting-wmi 


domenica 22 maggio 2022

Vmware - ridurre le dimensioni di un disco vmdk

 Ciao a tutti,

diverse volte mi e' capitato di dover ridurre le dimansioni di un disco virtuale in vmware.

L'operazione che vi sto spiegando non e' ufficialmente supportata da vmware, quindi decidete voi caso fare.

I passaggi per eseguire l'operazione sono:

ridurre le dimensioni della partizione nel sistema operativo della vm.

Da dentro il sistema operativo aprire la console diskmgmt.msc ed effettuare lo shrink della partizione.

Molto spesso capita che non e' possibile ridurre il disco di molto perche un piccolo file e' scritto nella parte finale del file system.

In questi casi ci possono aiutare tool di terze parti come gparted (live iso) o aomei partition assistant per ridurre le dimensioni della partizione.

SPEGNERE LA VM

Il passaggio successivo consiste nel ridurre le dimensioni del disco vmdk. Per farlo occorre accedere tramite ssh all'host esx ed andare nella cartella dove presenti i file della vm.

Solitamente il percorso e' "/vmfs/volumes/datastorename/nomevm/"

Nella cartella della VM sono presenti i file nomedisco.vmdk e nomedisco-flat.vmdk.

Prima di iniziare...

QUESTO E' UN BUON MOMENTO PER UN BACKUP!

Se non avete un backup della vm, per favore, copiate almeno i file *.vmdk che andrete a modificare!

per copiare i file e' sufficiente eseguire i seguenti comandi:

cp nomedisco.vmdk e nomedisco.vmdk.bak

cp nomedisco-flat.vmdk e nomedisco-flat.vmdk.bak

il tempo di copia dipende dalla velocita del datastore e dalle dimensioni del disco.

Assicuratevi che ci sia spazio a sufficienza prima di procedere. Se saturate il datastore bloccate tutte le vm che ci girano sopra!

Possiamo procedere alla editazione del file con vi:

vi nomedisco.vmdk

si aprira un file molto simile a questo:


################################################################

# Disk DescriptorFile

version=1

encoding="UTF-8"

CID=b692a9b1

parentCID=ffffffff

createType="vmfs"


# Extent description

RW 125829120 VMFS "nomedisco-flat.vmdk"


# The Disk Data Base

#DDB


ddb.adapterType = "lsilogic"

ddb.deletable = "true"

ddb.geometry.cylinders = "19581"

ddb.geometry.heads = "255"

ddb.geometry.sectors = "63"

ddb.longContentID = "4973c79b74f0e3d1709c1bdcb692a9b1"

ddb.toolsInstallType = "1"

ddb.toolsVersion = "12288"

ddb.uuid = "60 00 C2 95 70 68 43 b6-5f af 38 22 46 f6 5f 9a"

ddb.virtualHWVersion = "14"

################################################################


la parte che ci interessa modificare e' quella relativa alle dimensioni:



################################################################

# Extent description

RW 125829120 VMFS "nomedisco-flat.vmdk"

################################################################

il numero 125829120 rappresenta un disco da 60 GB.

la formula per calcolarlo e':

60*1024*1024*1024/512.

Dimensioni disco*1024*1024*1024/512.

Portarsi con il cursore sul valore da modificare, premere SHIFT+A per entrare nella modalita modifica.

Inserire il valore desiderato ed infine premere :wq! per salvare.

Se dovessimo aver compiuto qualche errore e non volessimo salvare il file, premere ":q!" (senza virgolette)

A questo punto ci rimane solo un'ultima operazione da fare, ovvero effettuare uno storage vmotion.

Fino a che non verra effettuato le dimensioni del disco non verranno aggiornate.


######################################################################################################################################################################

Effetture queste operazioni solo se non avete la possibilita di effettuare uno storage vmotion

Se non avete la possibilita di effettuare uno storage vmtion potete effettuare iil seguente comando.

Clonando il nuovo disco dopo la modifica del file, questo viene creato con le dimensioni aggiornate.

vmkfstools -i nomedisco.vmdk nomedisco_nuovo.vmdk

Cancellare il vecchio disco, clonare il disco nuovo appena creato con il nome del vecchio disco appena cancellato.

rm nomedisco.vmdk 

rm nomedisco-flat.vmdk

vmkfstools -i nomedisco_nuovo.vmdk nomedisco.vmdk 

######################################################################################################################################################################

Adesso non rimane che verificare le dimensioni del disco dalle proprieta della vm.

Se la vm si accende ed il disco e' delle dimensioni corrette abbiamo finito :)

REFERENCE

https://kb.vmware.com/s/article/1002019

http://woshub.com/shrinking-vmdk-virtual-disk-vmware-esxi/


lunedì 25 aprile 2022

Exchange -Hafnium - Marzo 2021

 Note su Exchange HAfiun

Dal 6 Gennaio (data di pubblicazione della vulnerabilita') al 2 Marzo 2021 l'exchange potrebbe essere stato bucato.

Lista letture utili

REFERENCE

https://www.informaticar.net/what-to-do-if-you-were-breached-by-hafnium-exchange-breach/

https://www.informaticar.net/microsoft-exchange-march-2021-breach-hafnium/

https://techcommunity.microsoft.com/t5/exchange-team-blog/march-2021-exchange-server-security-updates-for-older-cumulative/ba-p/2192020

https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/

https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/

https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/

https://www.reddit.com/r/sysadmin/comments/lz1jp4/youve_been_hit_by_youve_been_struck_by_an/

https://www.crowdstrike.com/blog/falcon-complete-stops-microsoft-exchange-server-zero-day-exploits/

https://www.cisa.gov/emergency-directive-21-02

https://www.bleepingcomputer.com/news/security/dearcry-ransomware-attacks-microsoft-exchange-with-proxylogon-exploits/


domenica 24 aprile 2022

Impostazioni blocco automatico delle postazioni di lavoro tramite GPO


User Configuration | Policies | Administrative Templates | Personalization | Enable screen saver 

User Configuration | Policies | Administrative Templates | Personalization | Password protected screen saver 

User Configuration | Policies | Administrative Templates | Personalization | Screen saver timeout

User Configuration | Policies | Administrative Templates | Personalization | Force specific screen saver

ed impostare questo comando %windir%\system32\rundll32.exe user32.dll,LockWorkStation, che forzera immediatamente il blocco dello schermo 

REFERENCE
https://techexpert.tips/it/windows-it/criteri-di-gruppo-per-bloccare-il-computer-windows-dopo-idle/

Azure on premise - Azure Stack Development Kit (ASDK)

Non lo sapevo, ed ancora non ho provato, ma ho scoperto che e' possibile "installare Azure su un server" in locale, on-prem. Si tratta di installare  Azure Stack Development Kit. Lascio i riferimenti.


REFERENCE

https://www.informaticar.net/can-i-install-azure-on-my-own-server-on-premises/

https://azure.microsoft.com/it-it/overview/azure-stack/development-kit/

https://docs.microsoft.com/en-gb/azure-stack/asdk/asdk-deploy-considerations?view=azs-1908


Impossibile collegarsi in RDP - Cred SSP encryption oracle remediation


Alcune volte mi e' capitato di non riuscire a collegarmi ad alcuni server a causa dell'errore CredSSP. Di solito il problema era che il server era indietro con gli aggiornamenti. La soluzione ottimale consiste nell'installare anche sul server la seguente patch:

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4103723

Purtroppo non sempre e' possibile poiche potrebbe essere richiesto un riavvio del server, che di solito va fatto fuori dall'orario lavorativo.

Ci sono alcuni workaround temporanei che consentono di risolvere. 

Workaroud

1 - un client aggiornato non riesce a connettersi ad un server non aggiornato.

Eseguire sul client

REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2


REFERENCE

https://www.informaticar.net/authentication-error-has-occurred-this-could-be-due-to-cred-ssp-encryption-oracle-remediation/

https://docs.microsoft.com/en-AU/troubleshoot/azure/virtual-machines/credssp-encryption-oracle-remediation