Visualizzazione post con etichetta microsoft. Mostra tutti i post
Visualizzazione post con etichetta microsoft. Mostra tutti i post

martedì 21 settembre 2021

Installazione Exchange 2016 - Aggiornamento Exchange

Ciao a tutti,

ho deciso di condividere un po di appunti e di note che ho buttato giu per le installazioni di Exchange. Sono un insieme non troppo connesso, e per usarli occorre avere un minimo di conoscenza della materia (non fenomeni, ma neppure essere totalmente all'oscuro!). Se eseguite solo i comandi elencati, senza cognizione, ci sono forti probabilità che facciate un casino. Ma sono anche una buona traccia da cui partire e sulla quale effettuare gli aggiustamenti del vostro caso. :)

NOTE

Controllate molto bene le note di exchange, sulla coesistenza e sulla versione di net framework. La versione sbagliata di net framework puo fare veramente tanti danni.

REFERENCES

http://techgenix.com/migrating-small-organization-exchange-2010-exchange-2016-part6/


Aggiornamento Exchange versione ibrida

https://www.itpromentor.com/upgrade-hybrid-2016/


=========================================================================VERIFICA DELL'AMBIENTE (EXCHANGE 2010)

Start-Transcript EnvironmentBackup.txt

Get-OutlookProvider | Format-List

Get-OutlookAnywhere | Format-List

Get-ClientAccessServer | Format-List

Get-ActiveSyncVirtualDirectory | Format-List

Get-AutodiscoverVirtualDirectory | Format-List

Get-EcpVirtualDirectory | Format-List

Get-OabVirtualDirectory | Format-List

Get-OwaVirtualDirectory | Format-List

Get-PowerShellVirtualDirectory | Format-List

Get-WebServicesVirtualDirectory | Format-List

Get-SendConnector | Where-Object {$_.Enabled -eq $true} | Format-List

Get-SendConnector | Where-Object {$_.Enabled -eq $true} | Get-ADPermission | Where-Object { $_.extendedrights -like '*routing*' } | fl identity, user, *rights

nslookup -type=a mail.domain.com

nslookup -type=a autodiscover.domain.com

nslookup -type=a mail.domain.com 8.8.8.8

nslookup -type=a autodiscover.domain.com 8.8.8.8

nslookup -type=mx domain.com 8.8.8.8

nslookup -type=txt domain.com 8.8.8.8

nslookup -type=a i-should-not-exist.domain.com 8.8.8.8

Stop-Transcript

OPPURE

VERIFICA SPAZIO LIBERO SU DB DEI SERVER

https://gallery.technet.microsoft.com/office/Exchange-2010-Architecture-9368ff56

Get-MailboxDatabase (recupero il nome del DB)

Get-MailboxDatabase "Mailbox Database 1596579151" -status |fl ava*

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



=========================================================================EXCHANGE 2010 - INSTALLAZIONE PREREQUISITI

https://technet.microsoft.com/en-us/library/bb691354(v=exchg.141)

http://www.telnetport25.com/2011/04/prerequisites-for-installing-exchange-2010-sp1-on-windows-2008-r2/


Import-Module ServerManager

MAILBOX

Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth,Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model,RSAT-Web-Server,Web-ISAPI-Ext,Web-Digest-Auth,Web-Dyn-Compression,NET-HTTP-Activation,RPC-Over-HTTP-Proxy,Web-WMI -Restart

CLIENT ACCESS/HUB TRANSPORT

Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth,Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model,RSAT-Web-Server,Web-ISAPI-Ext,Web-Digest-Auth,Web-Dyn-Compression,NET-HTTP-Activation,RPC-Over-HTTP-Proxy,Web-WMI -Restart

MAILBOX ONLY

Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth,Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model,RSAT-Web-Server -Restart

IMPOSTAZIONE SERVIZIO

Set-Service NetTcpPortSharing -StartupType Automatic

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



=========================================================================install exchange 2016 prereq

https://gallery.technet.microsoft.com/office/Install-Exchange-2016-48983e13

verificare lo schema di Exchange

https://blogs.technet.microsoft.com/rmilne/2015/03/17/how-to-check-exchange-schema-and-object-values-in-ad/

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



=========================================================================Enable access from remote: winrm quickconfig

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



=========================================================================VERIFICA NET FRAMEWORK INSTALLED

Verificare che i requisiti necessari alla versione di Exchnage che si sta installando siano coerenti con quella sul PC

https://gallery.technet.microsoft.com/scriptcenter/Detect-NET-Framework-120ec923

PATCH EXCHANGE SU WINDOWS SERVER 2016

https://blogs.technet.microsoft.com/exchange/2016/11/04/update-on-windows-server-2016-and-exchange-server-2016/

EXCHANGE 2016 CU6 - Blocco installazione .NET Framework 4.7

https://blogs.technet.microsoft.com/exchange/2017/06/13/net-framework-4-7-and-exchange-server/

https://support.microsoft.com/en-us/help/4024204/how-to-temporarily-block-installation-of-the-net-framework-4-7

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



=========================================================================CREAZIONE FILE DUMMY VUOTO DA 1 GB

fsutil file createnew E:\dummy01.txt 1073741824

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



=========================================================================AGGIORNAMENTO MANUALE SCHEMA - Se ambiente ibrido andare al passo successivo


eseguire dalla schema master - richiede i permessi di schema master (probabilmente occorre aggiungere l'utente al gruppo)


"exchange schema version = " + ([ADSI]("LDAP://CN=ms-Exch-Schema-Version-Pt," + ([ADSI]"LDAP://RootDSE").schemaNamingContext)).rangeUpper


N.B. se Exchange non e' mail stato installato prima dara un valore vuoto come risultato


setup /prepareschema /IAcceptExchangeServerLicenseTerms


"exchange schema version = " + ([ADSI]("LDAP://CN=ms-Exch-Schema-Version-Pt," + ([ADSI]"LDAP://RootDSE").schemaNamingContext)).rangeUpper

https://eightwone.com/references/schema-versions/


get-organizationconfig (x verificare il nime dell'organizzazione exchange, se gia esistente)


setup /preparead /Organizationname:PIPPO /IAcceptExchangeServerLicenseTerms

Verificare se viene creato la OU Microsoft Exchange Security Group (view advanced feature)


setup /preparealldomains /IAcceptExchangeServerLicenseTerms


Finite le operazioni preliminari per preparare AD


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



=========================================================================AGGIORNAMENTO MANUALE SCHEMA - AMBIENTE IBRIDO


"A hybrid deployment with Office 365 has been detected.  Please ensure that

you are running setup with the /TenantOrganizationConfig switch.  To use the Ten

antOrganizationConfig switch you must first connect to your Exchange Online tena

nt via PowerShell and execute the following command: “Get-OrganizationConfig | E

xport-Clixml -Path MyTenantOrganizationConfig.XML”.  Once the XML file has been

generated, run setup with the TenantOrganizationConfig switch as follows “/Tenan

tOrganizationConfig MyTenantOrganizationConfig.XML”."


d:\setup.exe /PrepareAD /TenantOrganizationconfig:C:\script\0365oconfig.xml /IAcceptExchangeServerLicenseTerms


UPGRADE ACTIVE DIRECTORY 

Setup.exe /PrepareSchema /IAcceptExchangeServerLicenseTerms (requires Enterprise Admins and Schema Admins permissions, and must be performed in the same AD Site as the Schema Master on a server with the RSAT-ADDS-Tools feature installed – the Schema Master itself would meet these requirements)

Setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms

Setup.exe /PrepareDomain /IAcceptExchangeServerLicenseTerms

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



=========================================================================Installazione a riga di comando

.\Setup.exe /mode:install /role:Mailbox /targetdir:"D:\Program Files\Microsoft\Exchange Server\V15" /MdbName:Mail01 /DbFilePath:"E:\DB\Mail01.edb" /LogFolderPath:"F:\Mail01" /DisableAMFiltering /InstallWindowsComponents /IAcceptExchangeServerLicenseTerms

.\Setup.exe /mode:install /role:Mailbox /targetdir:"D:\Program Files\Microsoft\Exchange Server\V15" /MdbName:Mail02 /DbFilePath:"E:\DB\Mail02.edb" /LogFolderPath:"F:\Mail02" /DisableAMFiltering /InstallWindowsComponents /IAcceptExchangeServerLicenseTerms

Al termine riavviare e cominciare la configurazione:

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



=========================================================================EXCHANGE 2016 INSTALLAZIONE

L'installazione di Exchange 2016 in automatico effettua l'aggiornamento dello schema e del dominio. Nel caso di presenza di un abiente ibrido pogtrebbe apparire il seguente erore:

“A hybrid deployment with Office 365 has been detected. Please ensure that you are running setup with the /TenantOrganizationConfig switch”


Per risolvere occorre collegarsi al tenant per scaricare l'XML della configurazione dell'organizzazione e quindi eseguire il preparead.


Collegarsi in powershell al tenant ed eseguire il comando

Get-OrganizationConfig | Export-Clixml -Path MyTenantOrganizationConfig.XML


Montare la ISO di Exchange ed eseguire il seguente comando

Setup.exe /PrepareAD /TenantOrganizationConfig MyTenantOrganizationConfig.xml /IAcceptExchangeServerLicenseTerms

Questo comando esegue anche l'aggiornamento dello schema.


Per finire andare nella console di azure ad connect e fare un refresh dello schema


REFERENCE

https://practical365.com/installing-the-first-exchange-2016-server-fails-in-hybrid-environment/

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



=========================================================================ACCEPTED DOMAIN (solo se serve aggiungere nuovi domini oltre a quelli gia presenti)

VERIFICA

Get-AcceptedDomain


AGGIUNTA

New-AcceptedDomain –Name “dominio.net” –DomainName dominio.net –DomainType Authoritative


MODIFICA DEFAULT ACCEPTED DOMAIN

Set-AcceptedDomain -identity dominio.net -MakeDefault $true


RIMOZIONE

Remove-AcceptedDomain –Identity dominio.net

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



=========================================================================Impostare il certificato Exchange

Import-ExchangeCertificate -FileData ([Byte[]$(Get-content -Path c:\SSL\Wild-Trap.pfx -Encoding byte -ReadCount 0)) -Server EXCH2016 -FriendlyName WildTrap -Password:(Get-Credential).password

Get-ExchangeCertificate -Server EXCH2016 (da qui si ricava il thumbprint)

Enable-ExchangeCertificate -Thumbprint 834F2EAACF96260C399D9C32B862B14134B73931 -Services "IIS, SMTP, POP, IMAP" -Server EXCH2016

Oppure si puo procedere tramite GUI

Andare sul vecchio server aprire MMC - add/remove snapins - certificates - computer

Scegliere personal ed individuare il certificato utilizzato dal vecchio Exchange

Scegliere tutte le attivita - esporta

Esportare anche la chiave privata - esporta le proprieta estese e tutti i certificati

Verra chiesto di inserire una password ed infine verra creato un file .pfx

Copiare il file sul nuovo server ed importarlo dalla stessa console.

Quindi accedere ad Exchange e verificare la presenza del certificato (potrebbe servire il riavvio di qualche servizio, es IIS)

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



=========================================================================Configurazione Autodiscovery - SCP

mail.dominio.net e' il "nome virtuale" del server che abbiamo creato. L'autodiscover va configurato per ogni server installato

Set-ClientAccessService -Identity EXCH2016 -AutodiscoverServiceInternalUri https://mail.dominio.net/Autodiscover/Autodiscover.xml

Get-ClientAccessService |fl Identity,AutoDiscoverServiceInternalUri,OutlookAnywhereEnabled

VERIFICA SCP IN ADSI EDIT

ESEMPIO DI PATH

CN=EXCH2016,CN=Autodiscover,CN=Protocols,CN=EXCH2016,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=testsrl,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=test,DC=local

https://EXCH2016.test.local/Autodiscover/Autodiscover.xml

verifica SCP in AD: adsi edit confguration/services/microsoft exchange/organization name/administrative groups/exchange administrative groups/servers/nome server/protocols/autodiscover

parametro ServiceBindingInformation

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



=========================================================================Configurazione VirtualFolder


$Server = "EX1601"

$HTTPS_FQDN = "mail.dominio.net"

Get-OWAVirtualDirectory -Server $Server | Set-OWAVirtualDirectory -InternalURL "https://$($HTTPS_FQDN)/owa" -ExternalURL "https://$($HTTPS_FQDN)/owa"

Get-ECPVirtualDirectory -Server $Server | Set-ECPVirtualDirectory -InternalURL "https://$($HTTPS_FQDN)/ecp" -ExternalURL "https://$($HTTPS_FQDN)/ecp"

Get-OABVirtualDirectory -Server $Server | Set-OABVirtualDirectory -InternalURL "https://$($HTTPS_FQDN)/oab" -ExternalURL "https://$($HTTPS_FQDN)/oab"

Get-ActiveSyncVirtualDirectory -Server $Server | Set-ActiveSyncVirtualDirectory -InternalURL "https://$($HTTPS_FQDN)/Microsoft-Server-ActiveSync" -ExternalURL "https://$($HTTPS_FQDN)/Microsoft-Server-ActiveSync"

Get-WebServicesVirtualDirectory -Server $Server | Set-WebServicesVirtualDirectory -InternalURL "https://$($HTTPS_FQDN)/EWS/Exchange.asmx" -ExternalURL "https://$($HTTPS_FQDN)/EWS/Exchange.asmx"

Get-MapiVirtualDirectory -Server $Server | Set-MapiVirtualDirectory -InternalURL "https://$($HTTPS_FQDN)/mapi" -ExternalURL "https://$($HTTPS_FQDN)/mapi"

Get-PowerShellVirtualDirectory -Server $Server | Set-PowerShellVirtualDirectory -InternalURL "https://$($HTTPS_FQDN)/powershell" -ExternalURL "https://$($HTTPS_FQDN)/powershell"


iisreset (dalla console del server appena installato)


Verifica

Get-AutodiscoverVirtualDirectory |fl server,name,identity,internalurl,externalurl

Get-ClientAccessService |fl Identity,AutoDiscoverServiceInternalUri,OutlookAnywhereEnabledGet-OWAVirtualDirectory |fl server,name,identity,internalurl,externalurl

Get-ECPVirtualDirectory |fl server,name,identity,internalurl,externalurl

Get-OABVirtualDirectory |fl server,name,identity,internalurl,externalurl

Get-ActiveSyncVirtualDirectory |fl server,name,identity,internalurl,externalurl

Get-WebServicesVirtualDirectory |fl server,name,identity,internalurl,externalurl

Get-MapiVirtualDirectory |fl server,name,identity,internalurl,externalurl

Get-PowerShellVirtualDirectory |fl server,name,identity,internalurl,externalurl


For references

https://blogs.technet.microsoft.com/exchange/2010/09/23/default-settings-for-exchange-related-virtual-directories-in-exchange-server-2010/

https://technet.microsoft.com/en-us/library/gg247612(v=exchg.160).aspx

MANAGE VIRTUAL DIRECTORIES

https://social.technet.microsoft.com/wiki/contents/articles/5163.managing-exchange-2010-externalinternal-url-s-via-powershell.aspx

RESET VIRTUAL DIRECTORIES

https://technet.microsoft.com/en-us/library/ff629372(v=exchg.141).aspx

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



=========================================================================Rimuovere le external URL dalle virtual directory - solo per info, non e' da fare

$Server = "EXCH2016"

Get-OWAVirtualDirectory -Server $Server | Set-OWAVirtualDirectory -ExternalURL $null

Get-ECPVirtualDirectory -Server $Server | Set-ECPVirtualDirectory -ExternalURL $null

Get-OABVirtualDirectory -Server $Server | Set-OABVirtualDirectory -ExternalURL $null

Get-ActiveSyncVirtualDirectory -Server $Server | Set-ActiveSyncVirtualDirectory-ExternalURL $null

Get-WebServicesVirtualDirectory -Server $Server | Set-WebServicesVirtualDirectory-ExternalURL $null

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



=========================================================================Configurazione OutlookAnywhere

Set-OutlookAnywhere -identity "EXCH2016\Rpc (Default Web Site)" -ExternalHostname "mail.dominio.net" -ExternalClientAuthenticationMethod Negotiate -ExternalClientsRequireSsl:$True

Set-OutlookAnywhere -identity "EXCH2016\Rpc (Default Web Site)" -InternalHostname "mail.dominio.net" -InternalClientAuthenticationMethod ntlm -InternalClientsRequireSsl:$True

Set-OutlookAnywhere -identity "TESTEX1602\Rpc (Default Web Site)" -ExternalHostname "mail.dominio.net" -ExternalClientAuthenticationMethod Negotiate -ExternalClientsRequireSsl:$True

Set-OutlookAnywhere -identity "TESTEX1602\Rpc (Default Web Site)" -InternalHostname "mail.dominio.net" -InternalClientAuthenticationMethod ntlm -InternalClientsRequireSsl:$True

Get-OutlookAnywhere | fl Identity,ExchangeVersion,*hostname*,*Client*,IISAuthenticationMethods,SSLOffloading

Get-OutlookAnywhere | fl server,identity,*host*,*auth*,SSLOffloading (come sopra)

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



=========================================================================OUTLOOK ANYWHERE NOTES

https://blogs.technet.microsoft.com/exchange/2013/05/23/ambiguous-urls-and-their-effect-on-exchange-2010-to-exchange-2013-migrations/

https://technet.microsoft.com/en-us/library/bb123741(v=exchg.141).aspx

Enable-OutlookAnywhere -Server $Server -ClientAuthenticationMethod Basic -SSLOffloading $False -ExternalHostName $HTTPS_FQDN -IISAuthenticationMethods NTLM, Basic

then change dns name to point exchange 2013 instead of 2010

Moving Mailboxes creates logs, the more you move, the more logs it creates. The only way to clear these logs properly is to do an Exchange Aware/VSS Level backup. If you just start moving mailboxes without keeping an eye on this you can fill up a volume with logs, and if you are daft enough to have this on our system volume you can take the server down, you have been warned! 


Under Microsoft Exchange proxy settings, the default are:

 - on fast network connect using http first, then using tcp/ip

 X on slow network connect using http first, then using tcp/ip


To use OutlookAnywhere to force the HTTP protocol we need this:

-->    X on fast network connect using http first, then using tcp/ip  <--

       X on slow network connect using http first, then using tcp/ip

to check also the first option

this allow Outlook to be forced to use http connection over TCP, which is needeed for coexistence and migration

This is made by autodiscover service by changing the outlook provider


CHECK THE SETTINGS BEFORE ANY CHANGES

Get-OutlookProvider EXPR |fl name, OutlookProviderFlags

Get-OutlookProvider EXCH |fl name, OutlookProviderFlags

Get-OutlookProvider WEB |fl name, OutlookProviderFlags



FORCE CLIENTS CONNECTED TO EXCHANGE 2010 USING OUTLOKANYWHERE TO USE HTTPS

The following commands are executed from the Exchange 2010 Management Shell.

Set-OutlookProvider EXPR -OutlookProviderFlags:ServerExclusiveConnect

Set-OutlookProvider EXCH -OutlookProviderFlags:ServerExclusiveConnect


If for any reason you need to put the configuration back to its default settings, issue the following commands and clients will no longer prefer HTTP on Fast Networks.


RESTORE DEFAULT SETTINGS

Set-OutlookProvider EXPR -OutlookProviderFlags:None

Set-OutlookProvider EXCH -OutlookProviderFlags:None

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



=========================================================================CREAZIONE SEND CONNECTOR

New-SendConnector -Name "InternetEXCH2016" -Usage Internet -AddressSpaces '*' -SourceTransportServers EXCH2016 -DNSRoutingEnabled:$True

#New-SendConnector -Name "InternetEXCH2016" -Usage Internet -AddressSpaces {smtp:*;10} -SourceTransportServers TESTEX1602 -DNSRoutingEnabled:$True

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



=========================================================================CREAZIONE RECEIVE CONNECTOR

Se fosse utilizzato un connettore per mandare le scansioni x email agli utenti interni, e' necessario icreare il connettore di ricezione.

Controllare ed importare le impostazioni da quello precedente

New-ReceiveConnector -Name “Allowed Anonymous Relay” -Usage Custom -TransportRole FrontEnd -PermissionGroups AnonymousUsers,ExchangeServers -AuthMechanism Tls,ExternalAuthoritative -Bindings 10.11.12.37:25 -RemoteIPRanges 10.11.12.250-10.11.12.251,10.11.12.240,10.11.12.230

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



=========================================================================SPOSTAMENTO DATABASE (SE NECESSARIO)

Move-DatabasePath -Identity Mail01 -EdbFilePath E:\Mail01\Mail01.edb -LogFolderPath E:\Mail01

Move-DatabasePath -Identity Mail02 -EdbFilePath E:\Mail02\Mail02.edb -LogFolderPath E:\Mail02

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



=========================================================================SPOSTAMENTO MAILBOX DI SISTEMA


Get-Mailbox –RecipientTypeDetails DiscoveryMailbox | Format-Table Name, Database

Get-Mailbox -RecipientTypeDetails DiscoveryMailbox | New-MoveRequest -TargetDatabase db01


Get-Mailbox –Arbitration

Get-Mailbox -Arbitration | New-MoveRequest -TargetDatabase db01


REFERENCE

https://www.ntweekly.com/2016/01/04/find-and-move-discovery-mailboxes-exchange-server/

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



=========================================================================CONFIGURAZIONE DNS


INTERNO

mail.dominio.net IN A 10.11.12.37

autodiscover.dominio.net IN CNAME mail.dominio.net (si puo mettere il CNAME, perche un server DNS non mette in cache i nomi del dominio di cui e' responsabile. IL dns dominio.net non mette in cache i risultati per il poprio dominio)


ESTERNO

mail.dominio.net IN A 89.96.73.33

autodiscover.dominio.net IN CNAME mail.dominio.net (vedi sopra)

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



=========================================================================SPOSTAMENTO PUBLIC FOLDER

Potrebbe essere necessario spostare i public folder, se utilizzati. Da Exchange 2013 in poi i PF si appoggiano ad una mailbox, mentre fino a 2010 utilizzavano un proprio DB.

Da 2013 in poi si parla di "modern public fiolder", mentre quelly fino a 2010 sono legacy PF.

I modern public folder sono poco piu che lo spostamento di una mailbox.

LA migrazione dei PF da 2010 e molto piu complessa e presenta diversi step, ed una migrazione batch. Viene dato inoltre un certo periodo di disservizio.

E' importante ricordarsi che una volta che i PF sono su 2016, le mailbox su 2010 non potranno accedervi. E' consigliabile per questo motivo spostare tutte le mailbox su 2016 prima di iniziare la migrazione dei PF.


Scaricare da questo link gli script di migrazione

https://www.microsoft.com/download/details.aspx?id=38407


EXCHANGE 2010

Creare degli snapshot dei PF prima di iniziare. Ci serviranno successivamente per un confronto

Get-PublicFolder -Recurse | Export-CliXML C:\PFMigration\Legacy_PFStructure.xml

Get-PublicFolderStatistics | Export-CliXML C:\PFMigration\Legacy_PFStatistics.xml

Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML C:\PFMigration\Legacy_PFPerms.xml


EXCHANGE 2010

Verificare che non siano presenti dei PF con il carattere / o \ nel nome. Se presenti rinominarli

Get-PublicFolderStatistics -ResultSize Unlimited | Where {($_.Name -like "*\*") -or ($_.Name -like "*/*") } | Format-List Name, Identity


Comando per riinominare i PF se necessario

Set-PublicFolder -Identity <public folder identity> -Name <new public folder name>


EXCHANGE 2010

Verificare che non ci siano migrazioni iniziate, in corso oppure sospese. Se una delle proprieta sotto sono impostate a $true occorre riportarle a $false per portare avanti la migrazione

Get-OrganizationConfig | Format-List PublicFoldersLockedforMigration, PublicFolderMigrationComplete


Per modificare i valori, se necessario:

Set-OrganizationConfig -PublicFoldersLockedforMigration $false -PublicFolderMigrationComplete $false


Potrebbero volerci fino ad un paio di ore perche questi parametri si aggiornino.


EXCHANGE 2016

Adesso occorre verificare l'ambiente 2016 prima di cominciare

Se ci fosse in corso una migrazione occorre resettare alcuni parametri, ma anche capire perche e' stata interrotta.


$batch = Get-MigrationBatch | ?{$_.MigrationType.ToString() -eq "PublicFolder"}

Eseguire il comando seguente per rimuovere eventuali richieste di migrazione batch di cartelle pubbliche esistenti.


$batch | Remove-MigrationBatch -Confirm:$false


Verifica la presenza dei public folder

Get-Mailbox -PublicFolder

Get-PublicFolder


Se i PF su 2016 sono gia presenti, vanno rimossi per poter procedere con la migrazione. Fate attenzione perche se si procede, i dati nei PF andranno perduti!

Get-Mailbox -PublicFolder | Where {$_.IsRootPublicFolderMailbox -eq $false} | Remove-Mailbox -PublicFolder -Force -Confirm:$false

Get-Mailbox -PublicFolder | Remove-Mailbox -PublicFolder -Force -Confirm:$false


EXCHANGE 2010

Adesso useremo gli script scaricati per generare dei file csv che verranno usati successivamente

.\Export-PublicFolderStatistics.ps1 C:\PFMigration\name-to-folder.csv server2010.dominio.local


La dimensione dei PF su Exchange 2010 e' di 2 GB circa. Ho deciso di ijmpostar euna dimensione max di 10 GB, che in byte e' il numero sotto.

.\PublicFolderToMailboxMapGenerator.ps1 10.737.418.240 C:\PFMigration\name-to-folder.csv C:\PFMigration\folder-to-mailbox.csv


Adesso occorre copiare i csv creati su Exchange 2016

C:\PFMigration\name-to-folder.csv

C:\PFMigration\folder-to-mailbox.csv


EXCHANGE 2016

Creazione della mailbox x i PF su Exchange 2016

.\Create-PublicFolderMailboxesForMigration.ps1 -FolderMappingCsv C:\PFMigration\folder-to-mailbox.csv -EstimatedNumberOfConcurrentUsers:20


EXCHANGE 2016

Creazione del batch di migrazione dei PF

New-MigrationBatch -Name PFMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server server2010.dominio.local) -CSVData (Get-Content C:\PFMigration\folder-to-mailbox.csv -Encoding Byte) -NotificationEmails administrator@dominio.it


Avvio del batch di migrazione

Start-MigrationBatch PFMigration


Adesso bisogna attendere un po fino allo stato sync


Per verificare lo stato di avanzamento usare il seguente comando

Get-PublicFolderMailboxMigrationRequest |fl


EXCHANGE 2010

Solo dopo che i PF sono arrivati allo stato sync eseguire il seguente comando.

Da adesso in poi i PF saranno bloccati e non disponibili

Set-OrganizationConfig -PublicFoldersLockedForMigration:$true


Potrebbe volerci un po di tempo per la propagazione.


EXCHANGE 2016

Eseguire adesso questi 2 comandi

Set-OrganizationConfig -PublicFoldersEnabled Remote

Complete-MigrationBatch PFMigration


Se ancora non fossero rilevati i PF bloccati, riavviare l'information store su Exchange 2010 e riprovare il completamento del batch di migrazione

Dopodiche aspettare, anche se a tratti potrebbe sembrare morto.


EXCHANGE 2016

Prima di passare definitivamente la gerarchia dei PF su 2016 e' bene fare un test di funzionamento.

Scegliamo un utente su 2016 ed eseguiamo il seguente comando

Se l'utente scelto si chiamo pippo e la mailbox dei PF si chiama mailbox1


Set-Mailbox -Identity pippo -DefaultPublicFolderMailbox mailbox1 


Adesso configuriamo un profilo outlook e verifichiamo che sia possibile accedere ai PF ed effettuiamo qualche test (creazione, cancellazione, verifica permessi ecc. ecc.)

Se tutto e' andato bene possiamo andare avanti, altrimenti possiamo tornare indietro.


Con questo comando sblocchiamo i pf

Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false


EXCHANGE 2010

Set-OrganizationConfig -PublicFolderMigrationComplete:$true


EXCHANGE 2016

Set-OrganizationConfig -PublicFoldersEnabled Local


EXCHANGE 2016

Al termine della migrazione possiamo rigenerare gli stessi xml che abbiamo generato all'inizio ed effettuare un confronto per valutare il risultato finale

Get-PublicFolder -Recurse | Export-CliXML C:\PFMigration\Cloud_PFStructure.xml

Get-PublicFolderStatistics -ResultSize Unlimited | Export-CliXML C:\PFMigration\Cloud_PFStatistics.xml

Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML  C:\PFMigration\Cloud_PFPerms.xml


EXCHANGE 2010

Adeeso siamo pronti a rimuovere il database dei public folder da Exchange 2010.

Remove-PublicFolderDatabase -Identity "PFDB01"


REFERENCE

https://docs.microsoft.com/it-it/exchange/collaboration/public-folders/batch-migration-from-previous-versions?view=exchserver-2016

https://assistants.microsoft.com/assistants/#/session/e119ee90-bbc7-4387-9094-6811dd11c829

https://docs.microsoft.com/it-it/exchange/decommission-on-premises-exchange

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



=========================================================================ESEMPIO DI ANALISI LOG - utile, ad esempio, per verificare da quali connettori passano i messaggi


get-messagetrackinglog -Server "srvaep03b" -Start "09/19/2021 19:20:00" -End "09/19/2021 19:40:00" |Export-Csv C:\PFMigration\ccc.csv

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



=========================================================================TEST EXCHANGE HEALTH SCRIPT

https://practical365.com/exchange-server/powershell-script-exchange-server-health-check-report/

PARAMETERS

    -Server, Perform a health check of a single server

    -ReportMode, Set to $true to generate a HTML report. A default file name is used if none is specified.

    -ReportFile, Allows you to specify a different HTML report file name than the default.

    -SendEmail, Sends the HTML report via email using the SMTP configuration within the script.

    -AlertsOnly, Only sends the email report if at least one error or warning was detected.

    -Log, Writes a log file to help with troubleshooting.

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



=========================================================================NOTE SUI PROTOCOLLI

Inizialmente Outlook funzionava come MAPI Over RCP: mapi erano le istruzioni del client di posta incapsulate in un protocollo di trasporto (RCP). Tutto questo funzionava basandosi sul TCP.

Successivamente, per semplificare il passaggio dai firewall ed altri aspetti e' stato introdotto RPC over HTTPS, ridenominato in Exchange 2007 Outlook Anywhere.

In questo caso il mapi viene incapsulato nell'RPC, che a sua volta e' incapsulato nell'HTTPS (tre strati)

Infine da Exchnage 2013 CU qualche cosa SP1, il default e' diventato MAPI over HTTP. In questo caso viene completamente rimosso l'RPC e rimane il MAPI dentro l'HTTP, il che semplifica ulteriormente la gestione.

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



=========================================================================RESOURCES

https://blogs.technet.microsoft.com/exchange/2015/10/12/the-exchange-2016-preferred-architecture/

https://blogs.technet.microsoft.com/exchange/2015/10/26/client-connectivity-in-an-exchange-2016-coexistence-environment-with-exchange-2010/

https://blogs.technet.microsoft.com/exchange/2015/05/05/exchange-server-2016-architecture/

https://blogs.technet.microsoft.com/exchange/2013/05/23/ambiguous-urls-and-their-effect-on-exchange-2010-to-exchange-2013-migrations/

http://techgenix.com/migrating-small-organization-exchange-2010-exchange-2016-part6/

https://gallery.technet.microsoft.com/office/Exchange-2010-Architecture-9368ff56

https://technet.microsoft.com/en-us/library/bb691354(v=exchg.141)

http://www.telnetport25.com/2011/04/prerequisites-for-installing-exchange-2010-sp1-on-windows-2008-r2/

https://gallery.technet.microsoft.com/office/Install-Exchange-2016-48983e13

https://blogs.technet.microsoft.com/rmilne/2015/03/17/how-to-check-exchange-schema-and-object-values-in-ad/

https://eightwone.com/references/schema-versions/

https://gallery.technet.microsoft.com/scriptcenter/Detect-NET-Framework-120ec923

https://blogs.technet.microsoft.com/exchange/2016/11/04/update-on-windows-server-2016-and-exchange-server-2016/

https://blogs.technet.microsoft.com/exchange/2017/06/13/net-framework-4-7-and-exchange-server/

https://support.microsoft.com/en-us/help/4024204/how-to-temporarily-block-installation-of-the-net-framework-4-7

http://markgossa.blogspot.it/2015/12/exchange-2016-dns-round-robin-load-balancing-part-1.html

https://blogs.technet.microsoft.com/exchange/2010/09/23/default-settings-for-exchange-related-virtual-directories-in-exchange-server-2010/

https://technet.microsoft.com/en-us/library/gg247612(v=exchg.160).aspx

https://social.technet.microsoft.com/wiki/contents/articles/5163.managing-exchange-2010-externalinternal-url-s-via-powershell.aspx

https://technet.microsoft.com/en-us/library/ff629372(v=exchg.141).aspx

http://markgossa.blogspot.it/2015/12/exchange-2016-database-availability-group-part-1.html

http://markgossa.blogspot.it/2015/12/exchange-2016-database-availability-group-troubleshooting-part1.html

http://markgossa.blogspot.it/2015/12/exchange-2016-balance-active-mailbox-databases.html

http://markgossa.blogspot.it/2015/12/exchange-2016-dns-round-robin-load-balancing-part-1.html

https://practical365.com/exchange-server/exchange-server-2013-lagged-database-copies-action/

https://practical365.com/exchange-server/powershell-script-exchange-server-health-check-report/

https://blogs.technet.microsoft.com/exchange/2013/05/23/ambiguous-urls-and-their-effect-on-exchange-2010-to-exchange-2013-migrations/

https://practical365.com/exchange-server/installing-cumulative-updates-on-exchange-server-2016/

https://blogs.technet.microsoft.com/exchange/2012/03/23/demystifying-the-cas-array-object-part-1/

https://blogs.technet.microsoft.com/exchange/2012/03/28/demystifying-the-cas-array-object-part-2/

https://technet.microsoft.com/en-us/library/bb123741(v=exchg.141).aspx

https://technet.microsoft.com/en-us/library/ff808312(v=exchg.160).aspx

https://blogs.technet.microsoft.com/exchange/2015/05/05/exchange-server-2016-architecture/

https://blogs.technet.microsoft.com/exchange/2015/10/12/the-exchange-2016-preferred-architecture/

https://blogs.it.ox.ac.uk/nexus/2014/05/12/mapihttp/

https://blogs.technet.microsoft.com/exchange/2015/10/12/the-exchange-2016-preferred-architecture/

https://blogs.technet.microsoft.com/exchange/2015/10/26/client-connectivity-in-an-exchange-2016-coexistence-environment-with-exchange-2010/

https://practical365.com/exchange-server/exchange-server-2016-migration-preparing-for-coexistence/

https://technet.microsoft.com/en-us/library/bb124904(v=exchg.160).aspx

https://technet.microsoft.com/en-us/library/aa998047(v=exchg.160).aspx

https://technet.microsoft.com/en-us/exdeploy2013/Checklist?state=3229-W-AAAAAAAAQAAAAAEAAAAAAAAAAAAAwAMAAAA%7e

https://docs.microsoft.com/it-it/exchange/high-availability/manage-ha/monitor-dags?view=exchserver-2019

https://blog.myvmx.com/2013/04/exchange-2013-crimson-channel-event-logs.html

https://techgenix.com/exchange-2013-crimson-channel-event-logs/

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

martedì 1 giugno 2021

HYPERV Replica

 Ecco un po di appunti sparsi sulla replica HyperV tra host in gruppo di lavoro, ed in particolare sulla gestione.

La replica hyperv puo avvenire tra host in dominio o in gruppo di lavoro (workgroup). Tra host in gruppo di lavoro, come nel nostro caso, e necessaria una parte preliminare piu articolata, che consiste nella creazione dei certificati, che vanno poi installati sui rispettivi host.

La scelta di lasciare gli host hyperV in gruppo di lavoro e’ relativa alla sicurezza, x evitare che con le credenziali di dominio si possa accedere anche agli host ed agli storage dove sono salvate le VM.

E’ possibile generare i certificati da qualsiasi PC o server.

Nel nostro caso ho generato i certificati dal mio PC, con Windows 10. I certificati coinvolti solo quella della CA authority (il mio PC, in questo caso) ed i due certifcati creati per l’host HYPERV_A e per HYPERV_B.

GENERAZIONE DEI CERTIFICATI

Ecco i comandi da eseguire per generarli (powershell):

GENERAZIONE DEL CERTIFICATO CA

New-SelfSignedCertificate -Type "Custom" -KeyExportPolicy "Exportable" -Subject "CN=HyperVCA" -CertStoreLocation "Cert:\LocalMachine\My" -KeySpec "Signature" -KeyUsage "CertSign" -NotAfter (Get-Date).AddMonths(240)

In risposta al comando viene restituito il thumbprint del certificato ed il common name. Dovremo utilizzare il thumbprint nei comandi successivi

689A1887D9891AFE4B756118C8E04DC23E6DFE44  CN=HyperVCA

GENERAZIONE CERTIFICATO HYPERV_A

New-SelfSignedCertificate -type "Custom" -KeyExportPolicy "Exportable" -Subject "CN=HYPERV_A" -CertStoreLocation "Cert:\LocalMachine\My" -KeySpec "KeyExchange" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2") -Signer "Cert:LocalMachine\My\689A1887D9891AFE4B756118C8E04DC23E6DFE44" -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" -NotAfter (Get-Date).AddMonths(240)

GENERAZIONE CERTIFICATO HYPERV_B

New-SelfSignedCertificate -type "Custom" -KeyExportPolicy "Exportable" -Subject "CN=HYPERV_B" -CertStoreLocation "Cert:\LocalMachine\My" -KeySpec "KeyExchange" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2") -Signer "Cert:LocalMachine\My\689A1887D9891AFE4B756118C8E04DC23E6DFE44" -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" -NotAfter (Get-Date).AddMonths(240)

1CC38C74D619838E8D6DA1708ED79CAB2FAF0D8A  CN=HYPERV_A

106EB8002EFB7424254959DBD49EAC2F22F80E69  CN=HYPERV_B

ESPORTAZIONE DEI CERTIFICATI

Per esportare i certificati , aprire la console dei certificati (mmc – certificate snapin – computer – Cartella personal). Dentro dovrebbero esserci tutti e tre i certificati creati sopra. Esportare il certificato della CA come .cer (non esportare la chiave privata), mentre esportare quelli relativi agli host con la chiave privata, in formato .pfx (verrà chiesto di usare una password, necessaria successivamente per importarli).

IMPORTAZIONE CERTIFICATI SULL’HOST

I certificati quindi vanno importati sugli host.

HYPERV_A

HYPERVCA, HYPERV_A

HYPERV_B

HYPERVCA, HYPERV_B

Eseguire questi comandi per importarli

certutil -addstore -f Root "C:\hypervcert\HypervCA.cer"

certutil -f -p 11111111 -importpfx "c:\hypervcert\HYPERV_A_11111111.pfx"

– Disabilitare la verifica della revoca dei certificati digitando nel prompt dei comandi di tutti gli host Hyper-V:

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\FailoverReplication" /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication" /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f

IMPOSTAZIONI PRELIMINARI DELLA REPLICA

Affinché tutto il processo di replica funzioni correttamente (failover e replica inversa), è necessario configurare entrambi gli host come replica. Infatti, nel funzionamento normale una VM viene replicata dall’host principale verso l’host di replica. Quando viene effettuato un failover i ruoli degli host rispetto alla VM si invertono, facendo diventare host di replica quello che era l’host principale e viceversa.

FIREWALL

E inoltre importante che la porta 443 del firewall sia aperta e che la risoluzione dei nomi, soprattutto se attiva l’autenticazione tramite certificato, funzioni correttamente.

RISOLUZIONE NOMI

Affinché l’autenticazione tramite certificato funzioni correttamente, è fondamentale che il nome host venga sempre risolto correttamente. Per questo motivo ho preferito mettere il nome host dei rispettivi dentro al file hosts di Windows in system32\drivers\etc\.

IMPOSTAZIONI REPLICA

IMPOSTAZIONE HOST

Nella impostazioni di HYPERV scegliere CONFIGURAZIONE REPLICA, ABILITAZIONE REPLICA e USA AUTENTICAZIONE BASATA SU CERTIFICATI (HTTPS). In caso di host in dominio può andare bene anche la kerberos. Tenere presente che usando i certificati e’ possibile cifrare il traffico di replica e con Kerberos no.

REPLICA VM

Dopo aver configurato gli host occorre attivare la replica per le singole VM. Tasto destro sulla VM e scegliere abilitazione replica. Seguire la configurazione guidata. Quando parte la replica, è possibile scegliere come vogliamo fare la prima sincronizzazione (ES: tramite rete)

OPZIONI REPLICA

Le opzioni di replica disponibili da host primario e host di replica sono leggermente diverse

HOST PRIMARIO

FAILOVER PIANIFICATO

In caso di manutenzione dell’host primario, attiva la replica sul secondario. Per funzionare la macchina principale deve essere spenta. Questo consente di fare un ultimo allineamento della replica, senza che vengano persi dati. E’ possibile decidere se accendere o no la VM di replica.

SOSPENDI REPLICA

Mette in pausa la replica tra i 2 host

VISUALIZZA STATO REPLICA

Controlla lo stato della reòlica

RIMUOVI REPLICA

Cancella la replica definitivamente

 

HOST REPLICA

FAILOVER

Si tratta dell’unplanner failover. Consente di attivare la replica in caso di blocchi improvvisi dell’host primario o VM principale. E’ una procedura di emergenza.

TEST FAILOVER

Verifica il corretto funzionamento della replica. Viene creata una macchina con il suffisso TEST, per verificare che tutto funzioni correttamente.

ESTENDI REPLICA

Consente di estendere la replica ad un terzo host

SOSPENDI REPLICA

Mette in pausa la replica tra i 2 host

VISUALIZZA STATO REPLICA

Controlla lo stato della reòlica

RIMUOVI REPLICA

Cancella la replica definitivamente

GESTIONE REPLICA – COME FARE UN FAILOVER

La funzione più utile è il planned failover (PFO) utile per “attivare” le VM sull’host di replica quando è necessario effettuare una manutenzione sull’host principale. In sintesi il processo del PFO e’ il seguente:

VM1_HYPERV_A su host HYPERV_A e replicata su HYPERV_B, come VM01_HYPERV_B

A regime la macchina in produzione è VM1_HYPERV_A ed è replicata su VM01_HYPERV_B.

Attivo il PFO: spengo VM1_HYPERV_A, le ultime modifiche sono riportate su VM01_HYPERV_B.

Si accende VM01_HYPERV_B e da ora in poi è lei la macchina di produzione.

In questo momento VM1_HYPERV_A e’ spenta e sto facendo le operazioni di manutenzione necessarie su HYPERV_A (l’host).

Dopo aver terminato le operazioni di manutenzione ho riacceso l’host HYPERV_A e sono pronte a riaccendere VM1_HYPERV_A. Per farlo ho la possibilità di invertire la replica o annullare il failover.

REPLICA INVERSA

Inverte il senso di replica. In pratica trasmettiamo le modifiche di VM01_HYPERV_B (produzione) a VM01_HYPER01 (ex produzione). Per concludere e riportare tutto alle condizioni iniziali, rieseguire un PFO ed una nuova REPLICA INVERSA.

ANNULLA FAILOVER

Consente di tornare indietro alla situazione precedente al failover. Se annulliamo il failover VM01_HYPERV_A ritornerà ad essere la VM di produzione e VM01_HYPERV_B tornerà ad essere la replica. Tutte le modifiche avvenute su VM01_HYPERV_B andranno perdute. Operazione caldamente SCONSIGLIATA in casi di domain controller, database ecc. ecc.

NOTE

La replica HYPERV è essenzialmente una soluzione di disaster recovery e non propriamente di backup o business continuity come un cluster. Per fare un failover pianificato (PFO) è OBBLIGATORIO spegnere le VM. La soluzione più indolore e rapida consiste nel tenere spenta la macchina di replica. Se non la si accende e’ possibile effettuare un ANNULLA FAILOVER senza perdere nulla in termini di informazioni, ed e’ molto veloce. E’ molto importante tenere presente il discorso dei checkpoint (production e standard), per evitare di perdere dati o introdurre errori.

 

 

 

ABILITARE AMMINISTRAZIONE REMOTA DEGLI HOST HYPERV DA UN CLIENT

E’ possibile installare la console Hyperv sul proprio PC per gestire direttamente gli host hyperv senza collegarsi direttamente al server. Per farlo occorre eseguire una serie di comandi:

SERVER

Sul server HYPERV al quale collegarsi eseguire i seguenti comandi

-        netsh advfirewall firewall set rule group="Windows Management Instrumentation (WMI)" new enable=Yes

-        netsh advfirewall firewall set rule group="Remote Event Log Management" new enable=Yes

FACOLTATIVO

-        netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes

-        netsh advfirewall firewall set rule group="Remote Volume Management" new enable=Yes

CLIENT

Siccome stiamo parlando di server in workgroup, probabilmente non useranno gli stessi DNS del client. Per questo motivo il primo passaggio e' quello di aggiungere i nomi dei server al file hosts (C:\windows\system32\drivers\etc)

Dalla macchina CLIENT da cui connettersi al server in questione eseguire i seguenti comandi

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "HYPERV"

Enable-WSManCredSSP -Role client -DelegateComputer "HYPERV"

NOTA

Se il comando sopra non dovesse funzionare, si puo provare con quello sotto, generico per tutti gli host ed in seconda battuta restringerlo solo agli host necessari

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" - questo comando funziona x tutti gli host

N.B. Nel mio caso sul CLIENT ho dovuto avviare manualmente il servizio "Gestione remota Windows (WS-Management)" affinche il primo comando avesse esito positivo

AGGIUNTA DEGLI HOST IN GPEDIT.MSC

Configurazione computer > Modelli amministrativi > Sistema > Delega di credenziali > Consenti delega credenziali nuove solo con autenticazione server NTLM

wsman/HYPERV

A questo punto e' necessario aprire la console di HYPERV, aggiungere l'host a cui collegarsi e cliccare sulla casella "CONNETTI COME ALTRO UTENTE" ed inserirlo nel formato HYPERV\username

 

HYPERV CHECKPOINT

In HyperV esistono 2 tipologie di checkpoint: standard (crash consistent) e produzione (application consistent). E’ consigliato di usare i checkpoint standard solo in ambiente di test xche possono creare problemi con active directory e DB. In produzione è necessario utilizzare i checkpoint di produzione. Questi ultimi sono APPLICAZION CONSISTENT (il checkpoint effettua una richiesta ai provider VSS del guest). Con PFO non si presenta il problema perché viene effettuato lo switch a VM spenta. Nella situazione di un UNPLANNED FAILOVER (che si fa in situazioni di emergenza), bisogna cercare di ripristinare un APPLICATION CHECKPOINT, soprattutto se ci sono in ballo DB, AD ecc. ecc.

 

 

REFERENCE

https://itlabz10.tk/archives/1041

https://itlabz10.tk/archives/1025

martedì 6 ottobre 2020

Installazione e configurazione di un certificato in Exchange

 Installazione e configurazione di un certificato in Exchange


Ormai e' praticamente d'obbligo usare certificati SSL validi ed "ufficiali" (non self-signed) per evitare di avere problemi, soprattutto con i dispositivi mobili ed in ambienti ibridi.

Partiamo dal punto in cui abbiamo a disposizione un .pfx da caricare.

Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path c:\certificates\YOUR_CERTIFICATE.pfx -Encoding byte -ReadCount 0)) -FriendlyName "New_SAN"

Consiglio di usare il parametro friendlyname per poterlo identificare facilmente.

A questo punto il certificato e' disponible in Exchange. Occorre assegnarlo ai servizi.

Enable-ExchangeCertificate -Services "IIS,POP,IMAP,SMTP"

L'assegnazione di un certificato ad un servizio non rimuove automaticamente l'associazione con i precedenti.

Per motivi di "ordine" consiglio di rimuovere questa associazione. Per farlo si puo usare il seguente comando:

Enable-ExchangeCertificate -Services "None" -Thumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Personalmente ho avuto qualche problema con questo comando, e non sempre ha funzionato.

Ad ogni modo, occorre essere sicuri al 100% prima di cancellare un certificato. Sarebbe bene assicurarsi di poterlo ricaricare in caso di necessita.

Remove-ExchangeCertificate -Thumbprint 5C5E9124B0960BBFB570596AAE6902742D95361E


APPENDICE

Comandi utili per l'interrogazione dei certificati Exchange

Get-ExchangeCertificate | where {$_.IsSelfSigned -match "False"} | fl

Get-ExchangeCertificate | where {$_.IsSelfSigned -match "False" -and $_.Status -match "Valid"} | fl

Get-ExchangeCertificate | where {$_.IsSelfSigned -match "False" -and $_.Status -notmatch "Invalid"} | fl

Get-ExchangeCertificate | where {$_.IsSelfSigned -match "False" -and $_.Status -notmatch "Invalid" -and $_.Issuer -notmatch "CN=XXXX-YYYY-CA"} | fl

Get-ExchangeCertificate | select Thumbprint, Services, NotAfter, Subject, CertificateDomains | where {$_.Services -match "SMTP"} | fl

GESTIONE FRIENDLY NAME TRAMITE GUI

se avete caricato il certificato tramite EMC, potreste voler lo stesso assegnare un nome al certificato. Per farlo occorre cercare il certificato nello store dei certificati della macchina locale ed assegnare ad esso un nome.

mmc-add plugin-certificate-computer-personal

REFERENCE

https://practical365.com/exchange-server/remove-ssl-certificate-exchange-server-2013/

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-7

https://stackoverflow.com/questions/24682939/multiple-and-or-in-powershell-where-object-statement

venerdì 25 settembre 2020

Implementazione EFS

 

EFS – Encrypted file system

Nei sistemi Windows con file system NTFS consente di crittografare cartelle e file, con alcune limitazioni:

-          Non funziona su FAT/FAT32

-          Non si possono cifrare i file compressi

-          Non si possono cifrare i file di sistema

La funzionalità è disponibile per il file system locale. Con EFS non è possibile, ad esempio, cifrare file e cartelle in rete/unità di rete mappate. Se anche fosse possibile, lo sconsiglierei.

Dal mio punto di vista, ha senso usare EFS soprattutto sui portatili, ed eventualmente sui desktop degli utenti.

Sempre per come la vedo io, la prima domanda da porsi su EFS, è se davvero si vuole consentire agli utenti di usarlo. Se la risposta è SI, occorre “attrezzarsi”, altrimenti bisogna disattivarlo.

La prima operazione da fare se si vuole usare EFS è creare uno o più DRA (Data recovery agent).

Se vi vuole disattivare l’EFS occorre cancellare DRA precedenti e, tramite GPO, disattivarne l’utilizzo.

Tutto quanto riportato sotto e’ applicabile anche a macchine in gruppo di lavoro, con i conseguenti limiti: tutte le operazioni vanno effettuate su ogni singola macchina e la console da utilizzare e’ quella delle policy locali (gpedit.msc).

 

EFS – COME FUNZIONA?

Per cifrare un file/cartella, EFS usa un mix di chiavi simmetriche/asimmetriche.

Usa una chiave simmetrica generata casualmente (FEK) per cifrare il file ed una chiave pubblica (asimmetrica) per cifrare la FEK.

Il motivo di tutto questo risiede nella velocita delle operazioni. La cifratura simmetrica è circa 1000 volte più veloce di quella asimmetrica.

Quando EFS deve cifrare la FEK crea un Data Decryption Field (DDF) per l'utente corrente dove inserisce la FEK criptata usando la sua chiave pubblica. Se è presente un data recovery agent (DRA), viene creato un campo DRF in cui viene inserita la FEK criptata con la rispettiva chiave pubblica.

In questo modo sarà possibile decriptare il file da qualunque chiave privata la cui corrispondente chiave pubblica sia stata usata per cifrare i campi DDF o DRF. I certificati che contengono la chiave pubblica/privata sono associati agli utenti. Solitamente, i file .cer contengono solo la chiave pubblica, mentre i file .pfx contengono chiave pubblica e privata e sono solitamente protetti da password. Dopo aver cifrato un file, a questo viene aggiunto l’attributo “cifrato”.

 

CIFRATURA DI CARTELLE E FILES

Come fare a cifrare una cartella o un file?

Tasto dx sul file, tab GENERALE, pulsante avanzate, mettere un flag sulla casella “crittografa… “



Fatto!

Di solito si crittografa una cartella. Tutti i file creati all’interno di essa vengono automaticamente crittografati. Se un file viene copiato/spostato al suo interno, viene automaticamente crittografato. Se sposto un file all’esterno di essa NON viene automaticamente de-crittografato. Ricordate inoltre che permessi di acceso ai file e cifratura viaggiano su piani differenti e sono cose differenti.

ABILITAZIONE E DISATTIVAZIONE EFS

La prima decisione da prendere in merito all’EFS è se consentire di usarlo. È possibile farlo tramite GPO.

Di solito, al primo accesso del primo amministratore di dominio viene creato un DRA nella “Default domain policy”. Il primo passaggio, quindi, deve essere quello di rimuovere DRA e disattivare impostazioni specifiche relative all’EFS.

Se nella parte DX della schermata trovate elencato uno o più certificati al posto del simbolo di attenzione, allora sono presenti dei DRA. Se non li avete creati voi in precedenza, vanno rimossi, perché di solito sono auto-generati.



A questo punto potete creare una nuova policy (EFS_DRA), impostare la priorità sulle altre (enforced/imposto) ed effettuarne la  configurazione (chi preferisce può continuare ad usare la default domain policy!).

Andando in Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Encrypting File System

E’ possibile decidere se usare o meno l’EFS. Come potete vedere in figura, io ho scelto di abilitarlo.

 



DRA – DATA RECOVERY  AGENT

Una delle cose più importanti di cui preoccuparci in caso di utilizzo di EFS, è come poter recuperare i file in caso di problemi/cancellazione/corruzione/perdita della chiave privata Il meccanismo di recupero si basa sulla creazione di un DRA (data recovery agent) che è una coppia di chiavi pubbliche/private aggiuntive con cui è possibile cifrare/decifrare il file. E’ la prima operazione da fare, ancora prima di dare la possibilità di usare EFS agli utenti. È possibile creare più di un DRA. Di solito il DRA è associato ad un utente amministratore. Per designare un utente come DRA è sufficiente fargli ottenere il certificato necessario (OID , tramite CA o tramite il comando Cipher. In sintesi un DRA è una coppia di certificati (.cer e .pfx). Il . cer contiene solo la chiave pubblica, e viene distribuita tramite GPO a tutti i client, mentre il .pfx è la chiave privata, che dovremo conservare con molta cura e assolutamente non perdere.

Anche in questo caso e’ necessario qualche ragionamento preliminare su come generare il certificato DRA. Per poter funzionare un DRA non deve essere scaduto, ma può essere self-signed, ovvero emesso da una CA non validata dal computer dove viene utilizzata. Uno dei punti cruciali è la durata. Se il certificato del DRA viene emesso da una CA di dominio, la sua durata non può superare quella della CA (max 5 anni di default). Se viene emessa tramite il comando cipher, ha una durata di 100 anni.

Ogni volta che il DRA scade, va rinnovato, ridistribuito a tutti i client e vanno aggiornati TUTTI i file cifrati con la nuova chiave.

Per questo motivo ho scelto di usare quello generato usando cipher. Conto che tra 100 anni dovrà fare tutto questo al posto mio 😊.

Per creare il certificato di DRA occorre accedere con l’utente a cui si vuole attribuire questo ruolo occorre aprire un prompt dei comandi come amministratore, portarsi nella cartella in cui creare i certificato e digitare il seguente comando:

cipher /r:xxx

ES: cipher /r:DRA_Administrator o cipher /r:DRA_superadmin ecc. ecc.

A questo punto dovete inserire e confermare una password, che serve per proteggere il .pfx.

Nella cartella verranno creati un file .cer ed un file .pfx. Salvate entrambi in un posto sicuro. Non devono andare perduti per nessun motivo.

Per creare più DRA, effettuare l’operazione sopra, loggandosi con altri utenti amministratori.

Aprite la Group policy console (gpmc.msc), selezionate la policy EFS_DRA, o quella scelta da voi per l’EFS, e modificatela.

Andate nel seguente percorso:

Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Encrypting File System

Tasto DX su Crittografia file system – Aggiungi agente recupero dati



 

Si aprirà una finestra da cui è possibile scegliere sfoglia directory (per scegliere un utente AD, a cui tramite CA è associato un certificato) oppure sfoglia cartelle da cui andare a cercare il file. Cer (e quindi la chiave pubblica) da distribuire.

Confermare, ok e chiudere. Eseguire un gpupdate /force sul server e quindi sui client. (potete mettere il comando nello script di logon, eseguirlo direttamente da console gpmc, da console remota e via dicendo).

Il vostro lavoro per implementare l’EFS è finito.

Per verificare che tutto abbia funzionato come deve, provate a cifrare un file su un client, premete sul pulsante dettagli e verificate che nella parte inferiore della finestra appaiano i DRA.



 

Come nel mio caso ho implementato 2 DRA.

La parte di implementazione è terminata.

RECUPERO TRAMITE DRA

Il primo dubbio che ho avuto, dopo aver fatto tutto questo è stato quello di come fare a recuperare l’accesso ad un file cifrato, poiché non mi era molto chiaro il meccanismo. Per recuperare l’accesso ad un file cifrato su di un client occorre accedere con utente designato come DRA ed importare il .pfx (vi verrà chiesta la pwd inserita durante l’esecuzione del comando cipher /r:xxx). Poiché sul client adesso è a disposizione la chiave privata si potrà accedere ai file, e decidere di decriptarli, ad esempio.

Per importare i file dovete accedere alla console degli store dei certificati locali.

MMC – file – aggiungi rimuovi snap-in – certificati – aggiungi per utente

Selezionare lo store personale – tasto dx – tutte le attività – importa

 

 



Dopo aver premuto importa partirà il wizard di importazione.

Di solito il compito del DRA è quello di disattivare la cifratura dei file per renderli nuovamente disponibili.

Notate anche che da “tutte le attività è disponibile “richiedi nuovo certificato”. Usando questa voce di menu è possibile richiedere nuovi certificati alla CA del dominio. In base ai permessi impostati sui template, ogni utente può richiedere differenti tipi di certificato. I certificati che un utente amministratore può richiedere sono differenti da quelli che può richiedere un domain user.

 

APPENDICE


CERTIFICATO - SCOPI DEL CERTIFICATO

Uno delle caratteristiche di un certificato e' lo scopo, ovvero per che cosa viene usato.

Parlando di EFS abbiamo a che fare con principalmente due tipologie di certificato

Encrypting File System - usato dall'utente per cifrare i file

File Recovery - usato per il DRA, serve per recuperare l'accesso ai file cifrati nel caso in cui vada perduto quello principale usato dall'utente.

A ciascuno di questi scopi viene assegnato un OID, ovvero un numero univoco che definisce lo scopo del certificato:

Encrypting File System (1.3.6.1.4.1.311.10.3.4)

File Recovery (1.3.6.1.4.1.311.10.3.4.1)

Come potete vedere il certificato per cifrare e quello per recuperarli sono certificati con scopi ed OID differenti.

 

CERTIFICATO – DUPLICAZIONE TEMPLATE

Ci sono situazioni in cui si rende necessario modificare alcuni settaggi dei certificati emessi (ad esempio la durata di default). Per farlo e’ necessario modificare il template. Il consiglio e’ sempre quello di duplicare il template ed agire su quello, lasciando l’originale intatto. Per arrivare alla gestione dei template di certificato, aprire la console dei certificati – modelli di certificato – tasto DX – gestisci.



 Si aprira’ una console che mostra tutti i certificati disponibili. Selezionare il template da duplicare, tasto DX – duplica modello. Effettuare le modifiche necessarie, nel tab sicurezza inserire gruppi e utenti che devono poter richiedere il certificato, modificare eventuali altri parametri. Se il template del certificato deve rimpiazzarne un altro nel tab Modelli sostituiti – premere aggiungi e scegliere il vecchio modello.



 

Adesso e’ possibile chiudere questa console. Nella console certificati (precedente) occorre effettuare un ultimo passaggio, ovvero rendere disponibile per il rilascio il nuovo template appena creato. Seleziona Modello di certificato - Tasto DX – Nuovo – Modello di certificato da rilasciare. Scegliere il nuovo template appena creato. Dopo questa operazione il template deve apparire nell’elenco a DX. Ricordate sempre che a prescindere la durata temporale specificata nel template, la durata del certificato non potrà mai essere superiore a quella della CA che lo emette.



 

Dopo aver emesso il certificato è possibile quale template sia stato utilizzato per emetterlo, controllando il campo Nome modello del certificato



 

RICHIESTA NUOVO CERTIFICATO

Se usate una CA di dominio, e’ possibile richiedere un certificato dalla console dello store dei certificati

MMC – file – aggiungi rimuovi snap-in – certificati – aggiungi per utente. Selezionare lo store dove mettere il certificato, (solitamente personale). Tasto DX sulla cartella – tutte le attività – richiedi nuovo certificato.



 

Se presente una CA di dominio, occorre selezionarla, andare avanti e quindi scegliere il tipo di certificato.




 COMANDI UTILI

cipher c:\* /u /n /h - trova tutti i file cifrati in nel disco c:\

cipher c:\* /u aggiorna i certificati di tutti i file

cipher /u /n /h > %UserProfile%\Desktop\MyEncryptedFiles.txt

cipher /y - mostra certificati x cifratura

cipher /x - esegue il backup delle chiavi per la cifratura

cipher /r:xxxxxx (qualsiasi nome, senza estensione) - genera il .cer ed il .pfx

I comandi sopra possono essere utili per uno script di login nel caso in cui i certificati siano stati rinnovati a seguito della scadenza.

 

PERCORSI

Le chiavi di cifratura sono memorizzate nel seguente percorso

%appdata%\Microsoft\Crypto\RSA

%appdata%\Microsoft\Crypto\

 

REFERENCE:

https://docs.microsoft.com/en-us/archive/blogs/sbs/help-secure-your-business-information-using-encrypting-file-system

https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc875821(v=technet.10)?redirectedfrom=MSDN

https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc162507(v=msdn.10)?redirectedfrom=MSDN

https://www.itsfullofstars.de/2016/01/microsoft-ca-create-a-new-certificate-template/

https://support.hpe.com/hpesc/public/docDisplay?docId=emr_na-c00811633

http://07.net/e/EFS/

http://www.idc-online.com/technical_references/pdfs/information_technology/An_Overview_of_Efs.pdf

http://ntfs.com/internals-encrypted-files.htm