Di recente ci siamo trovati di fronte al caso di un cliente che aveva perso l'accesso a un'istanza Windows Server in cloud. Un utente dell'azienda aveva applicato una modifica errata alla configurazione del Windows Firewall e, di conseguenza, nessuno riusciva più ad accedere alla macchina, né via RDP né in altro modo.
Purtroppo è una situazione più frequente di quanto si pensi, ma la buona notizia è che si può risolvere. Nella speranza che questo articolo possa tornare utile, illustro qui i semplici passaggi per uscire da casi analoghi.
Non potendoci collegare alla macchina con altri metodi, abbiamo scelto di sfruttare l'opzione di connessione alla porta seriale offerta dalla Google Cloud Web Console.
Per ripristinare l'accesso all'istanza Windows seguiremo tre passaggi: prima ci collegheremo alla macchina, poi accederemo a un prompt dei comandi di Windows e infine disabiliteremo il firewall per riaprire l'accesso RDP. Partiamo dal presupposto di essere già autenticati nella Google Cloud Web Console.
Per eseguire i passaggi descritti in questo articolo è necessario disporre delle seguenti autorizzazioni Google Cloud Platform (GCP):
- compute.instances.setMetadata
- compute.projects.setCommonInstanceMetadata
Passaggio 1: raggiungere l'istanza e collegarsi tramite serial console
Una volta effettuato l'accesso alla Google Cloud Web Console, andare alla pagina Compute Engine per visualizzare l'elenco delle istanze. Cercare e selezionare l'istanza interessata per aprirne la pagina di dettaglio.

Dettaglio dell'istanza VM
Verificare che l'accesso alla serial console sia abilitato controllando l'attributo "Enable connection to serial ports". In caso contrario sarà necessario abilitarlo: cliccare su "Edit", attivare l'attributo "Enable connecting to serial ports" e salvare la modifica.

Modifica della connettività alla porta seriale
Una volta abilitato l'accesso alla porta seriale, anche il pulsante "Connect to serial console" diventa attivo. Cliccarlo per aprire una finestra della serial console: si aprirà una nuova finestra con la Special Administration Console (SAC) di Windows.

Dettaglio dell'istanza VM — serial console abilitata
La SAC di Windows consente di interagire con il sistema operativo (OS) Windows e ne garantisce l'accesso anche quando la rete non funziona. Mette inoltre a disposizione un set essenziale di comandi per la gestione dell'OS.

Special Administration Console, SAC
Suggerimento: per approfondire il terminale SAC è possibile usare il comando
?oppurehelpper visualizzare l'elenco dei comandi disponibili.
Passaggio 2: aprire un prompt dei comandi di Windows
I comandi del firewall non sono disponibili nella SAC, quindi creiamo un nuovo canale che dia accesso al classico prompt dei comandi di Windows.
Nel terminale SAC, digitare il comando cmd per avviare un nuovo canale. Il sistema risponderà con un messaggio di conferma. Il nuovo canale si chiama "Cmd0001" e per spostarsi su di esso si usa il comando ch -sn Cmd0001.

Creazione del nuovo canale e passaggio ad esso
Il sistema mostrerà i dettagli del nuovo canale. Premere un tasto qualsiasi, escluse le combinazioni <esc><tab> elencate, per accedere al canale.
Digitare ch -sn seguito dal nome del canale, ad esempio ch -sn Cmd0001. Questo comando porterà la serial console sul canale specificato.
Il prompt dei comandi di Windows offre accesso completo alla macchina. Il sistema chiederà le credenziali per autenticarsi come utente autorizzato: inserire username, dominio e password. Se la macchina non appartiene a un dominio, lasciare il campo dominio vuoto.

Autenticazione al prompt dei comandi
Passaggio 3: disabilitare il firewall
Ora che siamo autenticati sulla macchina possiamo procedere con l'ultimo passaggio e disabilitare le regole del firewall che bloccano l'accesso. Per farlo, eseguire il comando netsh advfirewall set allprofiles state off. Il sistema risponderà con un breve messaggio "Ok." che conferma la disattivazione delle regole. A questo punto ci si può collegare alla macchina e riportare la configurazione allo stato desiderato. Naturalmente, non dimentichi di riabilitare il firewall.

Messaggio di conferma del comando netsh
In sintesi
Con i passaggi descritti abbiamo visto come ripristinare l'accesso a un'istanza Windows Server quando viene bloccato dal firewall del sistema operativo. Si ricordi di disabilitare l'accesso alla serial console per proteggere la risorsa. GCP mette a disposizione anche un controllo di sicurezza che tutela l'accesso alla serial console su tutte le macchine: impostando una policy a livello di organizzazione sull'accesso alla porta seriale, questa avrà la precedenza sulle impostazioni delle singole macchine. Per attivare questa funzionalità, utilizzare l'opzione "Disable VM serial port access" nella pagina Organization Policies.
GCP registra inoltre tutti gli accessi alla serial console nei log del cloud. Per consultarli, andare al menu Logs della web console GCP, filtrare sulla risorsa "GCE VM Instance" e cercare ssh-serialport-googleapis.com. Per accedere ai log occorre disporre delle autorizzazioni di log viewer sul proprio account utente.
Esistono alcune misure preventive di base per evitare questo tipo di situazioni. Garantire processi di change control consente di mantenere uno storico delle azioni eseguite: i relativi record aiutano a risalire alla causa degli incidenti, alla soluzione adottata e a tempi di recupero più rapidi. Si assicuri inoltre di eseguire backup regolari: Google Cloud Platform offre un ottimo servizio di pianificazione degli snapshot per le istanze.
Vuole leggere altri contenuti? Visiti il nostro blog su Medium, oppure segua Garrett su Twitter