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

domenica 20 marzo 2022

Veeam - restore virtual domain controller

 Puo capitare che il ripristino di un domain controller in veeam lo faccia avviare in safe mode in loop.

In questi casi occorre modificare il bcdedit usando questo comando:

  •     bcdedit /deletevalue safeboot
  •     shutdown -t 01 -r

REFERENCE

https://www.veeam.com/kb1277

martedì 15 marzo 2022

windows server: problemi impostazione linguistiche - impossibile aggiungere icone al desktop

Quando si accede con l'amministratore di dominio ad un server 2016/2019 (od anche una macchina Windows 10, in alcuni casi), tentando di modificare le impostazioni linguistiche puo verificarsi il seguente errore:

SystemSettingsAdminFlows.exe error

ho notato che si risolve anche l'errore che si verifica quando si tenta di abilitare le icone mycomputer/recycle bin ecc. ecc. sul desktop.

Aprire da prompt dei comandi:

secpol.msc

cercare la seguente voce ed abilitarla (enable)

user account control: admin approval mode for the built in administrator account

 nel seguente percorso:

Security settings - Local policies - Security options

REFERENCE

https://martinsblog.dk/windows-server-2016-systemsettingsadminflows-exe-error/

mercoledì 9 marzo 2022

Switch HP - Pulizia cache arp

Di solito, se scrivo le cose mi rimangono impresse :)


Pulizia della cache ARP su switch HP

clear mac-address port all

Si pouo pulire in base alla porta o in base alla VLAN. port all, pulisce ogni cosa.

Verifica della cache:
show mac-address

sabato 29 gennaio 2022

Office ADMX template

 Office template

Stavo installando i template aggiornati di Office, quando mi sono trovato a dover scegliere la versione 32 o 64 bit. Giusto per la cronaca: sono identiche a livello di admx. La prima va scaricata su sistemi a 32 bir e la seconda su sistemi x64. Poi, magari, ricordatevi di usare il central store (\\domain.local\sysvol\domain.local\Policies\PolicyDefinitions)

lunedì 24 gennaio 2022

Note sulla conversione di cassette postali utente in shared, in ambiente ibrido Microsoft 365.

 Note sulla conversione di cassette postali utente in shared, in ambiente ibrido Microsoft 365.


Mi e' capitato di dover convertire una casella di posta utente in una casella condivisa, in un ambiente ibrido di Microsoft 365.

La casella era gia su Microsoft 365.

Ho letto di vari suggerimenti, tra cui quello di riportarla on-prem, trasformarla in condivisa e riportarla online.


Io personalmente ho seguito una strada diversa, facendo riferimento al link sotto.


La prima cosa che ho notato e' che, solo per gli utenti sincronizzati con AD, devo entrare direttamente nell'interfaccia di amministrazione di 

Exchange online per poter convertire la casella.

Dopodiche ho seguito le istruzioni:


siccome la casella era gia su 365, dalla prospettiva dell'exchange on-prem, stiamo parlando di una cassetta remota.

A questo punto, dalla powershell di exchange on-prem eseguo il seguente comando:


Get-RemoteMailbox

per verificare se tra le caselle remote appare quella da convertire


Dopodiche eseguo il seguente comando

Set-RemoteMailbox "Giacomo Puccini" -Type Shared


Se tutto e' andato bene, dalla GUI on prem devo vedere la casella apparire tra le condivise.

Potrebbe essere necessario aspettare un attimo, prima che l'operazione diventi effettiva.


A questo punto mi sarei immaginato il miracolo e che dopo un po la  casella online si trasformasse in shared.

Purtroppo nessun miracolo, e cosi ho deciso di interventire manualmente:


Interfaccia di amministrazione di Microsoft 365-Exchange online, ricerca della mailbox, che on prem risulta shared, ma che online risulta ancora regular (utente),


converti in shared andando in https://admin.exchange.microsoft.com/#/mailboxes (selezionare utente e premere sul link)


Ho aspettato un po per dare il tempo ad exchange di fare i suoi ragionamenti e quindi sono tornato on prem.


Di solito l'utente delle caselle condivise risulta disattivo in AD.

Nel mio caso non e' successo neppure questo.

Ho disattivato l'utente a mano e verificato che tutto funzionasse.


A questo punto posso rimuovere la licenza di 365 dall'utente xche le caselle shared non necessitano di licenza.


OPINIONI

Penso che non dovrebbe funzionare cosi la conversione. In parte potrebbe dipendere dal fatto che la versione di AD che stiamo usando non ha il write-back.

Ma la conversione in shared on prem, non ha comunque fatto nulla. 

Forse non ho aspettato abbastanza... 


Insomma questi sono solo appunti di come ho svolto questa attivita, probabilmente in modo sbagliato :)


REFERENCE

https://www.alitajran.com/convert-user-mailbox-to-shared-mailbox-exchange-hybrid/


domenica 23 gennaio 2022

Powershell - colori console

Powershell - Colori console

Quesli sono i colori disponibili per l'output a video in powershell?

Ecco la lista ed il comando per verficare

PS C:\Script\AD\Set Primary Proxy Address> [Enum]::GetValues([System.ConsoleColor])

Black

DarkBlue

DarkGreen

DarkCyan

DarkRed

DarkMagenta

DarkYellow

Gray

DarkGray

Blue

Green

Cyan

Red

Magenta

Yellow

White


ES:

write-host $a -ForegroundColor Black scrivera in nero e

write-host $a -ForegroundColor Magenta scrivera in magenta

p.s. usdando write-host -nonewline si impedisce all'output a video di andare a capo e quindi e' possibile avere sulla stessa linea piu colori.


 


mercoledì 5 gennaio 2022

Exchange 2016-2019 - code bloccate - Buon 2022 Exchange

 Exchange 2016-2019 - Baco anno nuovo 2022


Il nostro exchange ci ha regalato un baco per il nuovo anno 2022.

Se nel registro degli eventi appare uqesto errore:


Errore rilevato FIPFS - 5300


Impossibile eseguire la scansione dei messaggi per cui questi rimangono in coda.

Eseguire lo script nella cartella x sbloccare


Vuol dire che ne siete affetti.


Il motore di scansione non riesce a processare i messaggi in coda e quindi non li spedisce.

In breve occorre aggiornare il motore di scansione per sistemare.

In fondo trovate i link a cui fare riferimento.


Dopo che ha terminato attendere che venga aggiornato l'engine di scansione 

Add-PSSnapin Microsoft.Forefront.Filtering.Management.Powershell

Get-EngineUpdateInformation


I messaggi dovrebbero ripartire dopo che l'aggiornamento si e' concluso.


Potrebbe essere necessario riavviare i servizi di exchange od il server stesso (anche se lo fa gia lo script)


In presenza di errori e' possibile forzare l'aggiornamento del motore di scansione

Andare nella cartella degli script di Exchange:

E:\Microsoft\Exchange Server\V15\Scripts ed eseguire il seguente comando:

.\Update-MalwareFilteringServer.ps1 MAILBOX01.domain.local


L'aggiornamento e' molto lungo e potrebbe richiedere fino a quasi un'ora. Dipende anche dalla velocita della linea internet.


Dopo che l'aggiornamento e' completo si puo provare a rispedire i messaggi in coda:

Retry-Queue –Server "MAILBOX01" -Filter {Status -eq "Retry"} -Resubmit $True


Se ancora i messaggi non dovessero andare l'errore potrebbe essere legato ai troppi tentativi gia effettuati.

Per averne la certezza occorre verificare i log. Potrebbe essere necessario abilitarli:


Verifica dello stato attuale di logging (nel mio caso NONE)

Get-TransportService MAILBOX01 |fl *level*

Get-FrontEndTransportService MAILBOX01 |fl *level*


MODIFICA LIVELLO DI LOGGING

Set-TransportService MAILBOX01 -IntraOrgConnectorProtocolLoggingLevel Verbose

Set-FrontEndTransportService MAILBOX01 -IntraOrgConnectorProtocolLoggingLevel Verbose


Riforzare la spedizone dei messaggi in coda ed analizzare i log


Nel mio caso ho fatto in questo modo: ho disattivato il malware agent ed il transport agent rule agent, 

riavviato il servizio di trasporto e riforzato l'invio.

Quindi ho riattivato i 2 agenti disabilitati, riavviato il servizio di trasporto e rieseguito un riavvio del servizio.

La coda in questo modo e' stata smaltita ed i messaggi nuovi sono partiti regolarmente.


Verifica della situazione

Get-TransportAgent


Disattivazione agenti transport rule e malware agent

Disable-TransportAgent "Transport rule agent"

Disable-TransportAgent "Malware Agent"

Restart-Service MSExchangeTransport


Processare la coda in modo forzato

Retry-Queue –Server "MAILBOX01" -Filter {Status -eq "Retry"} -Resubmit $True


Verifica delle code

Get-queue


Al termine dello smaltimento della coda, riavviare gli agenti disattivati.


Attivazione agenti transport rule e malware agent

Enable-TransportAgent "Transport rule agent"

Enable-TransportAgent "Malware Agent"

Restart-Service MSExchangeTransport


Verifica finale della situazione

Get-TransportAgent


Adesso occorre verificare regolarmente le code nel corso delle prox ore/gg.

Get-queue


REFERENCE

https://techcommunity.microsoft.com/t5/exchange-team-blog/email-stuck-in-exchange-on-premises-transport-queues/ba-p/3049447

https://docs.microsoft.com/en-us/exchange/troubleshoot/setup/manually-update-scan-engines

https://docs.microsoft.com/it-it/exchange/mail-flow/transport-agents/manage-transport-agents?view=exchserver-2019

https://techgenix.com/resubmitmessagesinqueues/

https://docs.microsoft.com/en-us/exchange/mail-flow/connectors/configure-protocol-logging?view=exchserver-2019#use-the-exchange-management-shell-to-enable-or-disable-protocol-logging-on-the-intra-organization-send-connector

https://www.alitajran.com/exchange-mail-flow-breaks/

https://docs.microsoft.com/it-it/exchange/mail-flow/queues/queue-procedures?view=exchserver-2019




APPENDICE

Prova a rispedire tutti i messaggi nella coda 3

Retry-Queue "MAILBOX01\3" -Resubmit $True


Prova a rispedire tutti i messaggi di tutte le code

Retry-Queue –Server “MAILBOX01” -Filter {Status -eq "Retry"} -Resubmit $True



Cancellare tuttu i messaggi dalla coda (senza mandare NDR di notifica

Get-Message -Queue "MAILBOX01\3" | Remove-Message -WithNDR $false -Confirm:$false


Cancellare un messaggio specifico

Get-ExchangeServer |

    ?{$_.IsHubTransportServer -eq $true} |

    Get-Queue |

    get-message |

    ? {$_.sender -eq 'Vinc@somedomain.uhoh'} |

    Remove-Message -withNDR $false



giovedì 25 novembre 2021

Report password utenti AD

 Una delle cose a cui spesso e' necessario mettere mano con AD e' il discorso delle password.

Molto spesso sono impostate per non scadere mai, o potrebbe essere necessario farle scadere.

Il primo passo per prendere delle decisioni in merito e' un report sulle password. Io ho usato questi 2  script:

ES1:

Tutti gli utenti di AD

Get-ADUser -filter {Enabled -eq $True} –Properties DisplayName,msDS-UserPasswordExpiryTimeComputed,BadLogonCount,LastBadPasswordAttempt,LastLogonDate,PasswordExpired,PasswordLastSet,PasswordNeverExpires | Select-Object -Property "Displayname",DistinguishedName,@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}},BadLogonCount,LastBadPasswordAttempt,LastLogonDate,PasswordExpired,PasswordLastSet,PasswordNeverExpires | export-csv C:\Script\AD\ReportUserPassword\PwdUsersAll.csv

ES2:

Solo con password che non scadono

Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} –Properties DisplayName,msDS-UserPasswordExpiryTimeComputed,BadLogonCount,LastBadPasswordAttempt,LastLogonDate,PasswordExpired,PasswordLastSet,PasswordNeverExpires | Select-Object -Property "Displayname",DistinguishedName,@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}},BadLogonCount,LastBadPasswordAttempt,LastLogonDate,PasswordExpired,PasswordLastSet,PasswordNeverExpires | export-csv C:\Script\AD\ReportUserPassword\PwdUsersNEFalse.csv

A questo punto avete qualche informazione in piu per fare un'analisi e prendere delle decisioni.

Ricordate che obbligare gli utenti a cambiare password rappresenta potenzialmente del lavoro in piu, ma e' uno dei passaggi necessari per migliorare la sicurezza.

E possibile verificare la scadenza della password di un singolo utente di dominio in modo molto piu semplice:

net user c.ogura /domain

Vengono restituiti molti dati utili, anche sulle password 

Sulle impostazioni delle password e' importante impostare una scadenza (90/180 gg.), possibilmente dei criteri di complessiva, ed almeno una lunghezza minima, e magari un minimo di password ricordate in modo che non vengano usate a rotazione sempre le stesse. E' anche molto importante impostare un lockout automatico degli account. Questo non ci espone ad attacchi brute force. In pratica e' consigliabile bloccare un account per un periodo di tempo, anche breve, se un utente sbaglia la password per un certo numero di volte. 

In active directory le impostazioni per le password sono definite nella default domain policy, nel seguente percorso:

Computer configuration/Policies/Windows settings/Security settings/Account policies

Password policies

Account lockout policies 

Sarebbe inoltre molto utile monitorare l'event viewer per tentativi di accesso falliti ripetuti all'indirizzo di un utente. (ES: event viewer/security log/4625). Provate a controllare questo evento su un server RDP pubblicato senza VPN :). 

REFERENCE

https://social.technet.microsoft.com/wiki/contents/articles/12037.active-directory-get-aduser-default-and-extended-properties.aspx

https://www.pcwdld.com/password-expiration-date-ad-user#wbounce-modal

https://www.alitajran.com/create-active-directory-users-from-csv-with-powershell/