Archivi categoria: Come fare per…

Verificare le patch di vulnerabilità per Meltdown e Spectre (c.d. Speculation Control)

MeltdonSpectreVerify Microsoft ha messo a disposizione un modulo PowerShell per verificare le compatibilità delle patch di vulnerabilità: il c.d. Speculation Control. Ecco come installarlo

Il 3 gennaio 2018, Microsoft ha iniziato a pubblicare il suo Security Bulletin mensile in anticipo per alcune piattaforme a causa dei nuovi difetti di sicurezza della CPU, comunemente denominati “Meltdown” e “Spectre”. Nella KB4072699 Microsoft ha pubblicato le patch per la sicurezza e per la compatibilità col software anti-malware.

Microsoft ha riscontrato un problema di compatibilità con alcuni prodotti software antivirus. Il problema di compatibilità si verifica quando le applicazioni antivirus effettuano chiamate non supportate nella memoria del kernel di Windows.

Lo script powershell che segue abilita il comando  Get-SpeculationControlSettings che consente di verificare se sono stati applicate le patch per la vulnerabilita suddetta.

Ecco lo script:

$DownloadLink="https://gallery.technet.microsoft.com/scriptcenter/Speculation-Control-e36f0050/file/185444/1/SpeculationControl.zip"
$Filezip=$env:temp+"\SpeculationControl.zip"
$ModuliPS=$PSHome+"\Modules\"
$SCpath=$PSHome+"\Modules\SpeculationControl\"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($DownloadLink,$Filezip)
$shell = New-Object -COM Shell.Application
$target = $shell.NameSpace($ModuliPS)
$zip = $shell.NameSpace($Filezip)
$target.CopyHere($zip.Items(), 16)
cd $SCpath
$StatoIniziale=get-ExecutionPolicy
set-executionpolicy unrestricted -Force
import-module $SCpath\SpeculationControl.psm1
set-executionpolicy $StatoIniziale -Force
Get-SpeculationControlSettings

Questo il risultato quando nessuna patch è stata applicata:

Speculation control settings for CVE-2017-5715 [branch target injection]
For more information about the output below, please refer to https://support.mic
rosoft.com/en-in/help/4074629

Hardware support for branch target injection mitigation is present: False
Windows OS support for branch target injection mitigation is present: False
Windows OS support for branch target injection mitigation is enabled: False

Speculation control settings for CVE-2017-5754 [rogue data cache load]

Hardware requires kernel VA shadowing: True
Windows OS support for kernel VA shadow is present: False
Windows OS support for kernel VA shadow is enabled: False

Suggested actions

 * Install BIOS/firmware update provided by your device OEM that enables hardwar
e support for the branch target injection mitigation.
 * Install the latest available updates for Windows with support for speculation
 control mitigations.
 * Follow the guidance for enabling Windows Server support for speculation contr
ol mitigations described in https://support.microsoft.com/help/4072698


BTIHardwarePresent             : False
BTIWindowsSupportPresent       : False
BTIWindowsSupportEnabled       : False
BTIDisabledBySystemPolicy      : False
BTIDisabledByNoHardwareSupport : False
KVAShadowRequired              : True
KVAShadowWindowsSupportPresent : False
KVAShadowWindowsSupportEnabled : False
KVAShadowPcidEnabled           : False

Ulteriori informazioni sull’output potranno essere reperite qui

Informazioni sulle patch da applicare potranno essere reperite anche sul sito di OVH Francia o sul sito di Achab (che ringraziamo entrambi pubblicamente).

Annunci

Come comandare un Powershell remoto sui PC del dominio?

PSsessionAdmin Spesso vorreste usare Powershell in remoto sui vostri PC del dominio ma l’attivazione delle PSsession vi sembra complessa. Ecco un modo semplice e veloce.

Anzitutto bisognerà avere sul server l’utilità PsExec. Segui il link al precedente post di Sistemisti Senior per sapere come fare per scaricarlo. Ricordarsi di copiare il file PsExec.exe nella cartella %WINDIR%\SYSTEM32 (oppure di aggiungere il percorso alla variabile PATH).

Creare quindi il seguente file .bat

@echo off
title Sessione CMD su computer locale
set TESTATA= cls ^&echo. ^&echo ATTIVA E LANCIA UNA PSSESSION SU UN PC REMOTO ^&echo ============================================= ^&echo. ^&echo. ^&echo.
%TESTATA%
echo ATTENZIONE: per uscire digitare exit al primo prompt ed exit(1) al secondo
echo.
echo.
set /P NOMEPC=Inserire il nome del PC remoto: 
title Sessione CMD su computer remoto
%TESTATA%
echo Avvio PSEXEC sul computer remoto per eventuale 
echo attivazione delle sessioni remote di PowerShell
echo.
echo.
psexec \\%NOMEPC%  -s winrm.cmd quickconfig -q
echo %errorlevel% 
IF %ERRORLEVEL% GEQ 1 echo ************** ERRORE! **************** && pause
color 1f
title Sessione PowerShell su computer remoto
%TESTATA%
echo Avvio Powershell su PC %NOMEPC%
echo.
echo.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit " & {New-PSSession -ComputerName %NOMEPC% |Enter-PsSession}"
color

Goto Fine



:FINE

Otterrete una bella schermata come questa:

Schermata 2017-12-13 alle 12.11.02

Ricordarsi che:

Per uscire dalla sessione remota di Powershell digitare “exit” o “Exit-PsSession” come nell’esempio:

[NOME-PC_REMOTO]: PS C:\Users\admin\Documents> Exit-PSSession 

Per uscire dalla sessione locale di Powershell e tornare nel prompt dei comandi digitare “exit(1)” come nell’esempio:

PS C:\Windows\system32> exit(1) 

Mai più servizi automatici stoppati!

restartservices Spesso capita che su un server alcuni servizi automatici siano fermi.

Come evitarlo?

Con Powershell, grazie ai comandi Get-Service e Start-Service, possiamo controllare tutti quei servizi il cui avvio è impostato ad automatico e riavviarli nel caso in cui qualcuno di essi sia fermo.

Meglio ancora è programmare un controllo giornaliero che compia per noi questa azione e grazie all’Utilità di pianificazione è possibile schedulare tale attività.

Ecco come fare:

Create un file AvviaServiziAutomatici.xml con il blocco note come qui di seguito indicato

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
 <RegistrationInfo>
 <Description>Lo script powershell avvia tutti i servizi arrestati che hanno la modalità di avvio automatico settata</Description>
 </RegistrationInfo>
 <Triggers>
 <CalendarTrigger>
 <Enabled>true</Enabled>
 <ScheduleByDay>
 <DaysInterval>1</DaysInterval>
 </ScheduleByDay>
 </CalendarTrigger>
 </Triggers>
 <Principals>
 <Principal id="Author">
 <LogonType>Password</LogonType>
 <RunLevel>HighestAvailable</RunLevel>
 </Principal>
 </Principals>
 <Settings>
 <MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy>
 <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
 <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
 <AllowHardTerminate>true</AllowHardTerminate>
 <StartWhenAvailable>false</StartWhenAvailable>
 <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
 <IdleSettings>
 <StopOnIdleEnd>true</StopOnIdleEnd>
 <RestartOnIdle>false</RestartOnIdle>
 </IdleSettings>
 <AllowStartOnDemand>true</AllowStartOnDemand>
 <Enabled>true</Enabled>
 <Hidden>false</Hidden>
 <RunOnlyIfIdle>false</RunOnlyIfIdle>
 <WakeToRun>false</WakeToRun>
 <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
 <Priority>7</Priority>
 </Settings>
 <Actions Context="Author">
 <Exec>
 <Command>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command>
 <Arguments>-command " &amp; {get-service | where {($_.status -eq 'stopped') -and ($_.starttype -eq 'Automatic')} | Start-Service}"</Arguments>
 </Exec>
 </Actions>
</Task>

Quindi aprite l’Utilità di Pianificazione (potete farlo anche lanciando il comando taskschd.msc) e nel pannello Azioni, presente a destra, cliccate su Importa attività. Confermate il tutto ed inserite, quando richiesto, le credenziali di un amministratore del server.

Avrete così una schedulazione giornaliera che riavvia automaticamente i vostri servizi fermi.

 

Disinstallare Office manualmente

CancellaOffice Spesso capita di dover aggiornare o reinstallare Office ma la procedura non sempre riesce…

Microsoft vi aiuta.

Ecco come fare:

Dal sito del supporto Microsoft apri il link seguente e sarai reindirizzato alla pagina “Disinstallare Office da un PC”.

A questo punto scegli:

  • il sistema operativo del PC
  • la versione di Office da disinstallare.

Il sistema scarica un eseguibile che esegue automaticamente la disinstallazione.

Attenzione: riavviare il PC dopo la disinstallazione!!!

 

Lanciare uno script remoto su un PC del dominio con PsExec

server-to-pc Volete lanciare uno script remoto su un PC del dominio?

Volete, ad esempio, attivare il DHCP su un client della rete?

Usate PSexec!

Ecco come fare:

Anzitutto devi scaricare PsExec (puoi seguire le istruzioni presenti in questo nostro articolo).
Crea poi un file vbs o bat da copiare sul PC remoto e lanciare. Io in questo caso uso un file AttivaDHCP.vbs che configura l’assegnazione automatica degli indirizzi IP con DHCP sul PC remoto. Queste le righe dello script AttivaDHCP.vbs:

strComputer = "."
Set objWMIService = GetObject(_
 "winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
 ("Select * from Win32_NetworkAdapterConfiguration " _
 & "where IPEnabled=TRUE")
 
For Each objNetAdapter In colNetAdapters
 errEnable = objNetAdapter.EnableDHCP()
 errEnable = objNetAdapter.SetDNSServerSearchOrder()
Next

Crea poi un file .bat ed inserisci nella sezione “Impostazione parametri fissi” il nome dell’utente amministratore, il percorso/nome del file dello script da copiare e lanciare sul PC remoto. Ecco lo script:

@echo off
rem Impostazione parametri fissi
rem ============================
SET UTENTEAMMINISTRATORE="MIODOMINIO\Administrator"
SET PERCORSOSCRIPT="\\SERVER-01\Scripts"
SET NOMESCRIPT="AttivaDHCP.vbs" 

echo Impostazione parametri variabili
echo ================================
SET /P NOMEPC=[Inserisci il nome del PC]: 
SET /P PASSWORDADMIN=[Inserisci la password dell'utente %UTENTEAMMINISTRATORE%]: 


if "%PASSWORDADMIN%"=="NUL" goto NOPARAMETERS
if "%NOMEPC%"=="NUL" goto NOPARAMETERS 
Set NOMEPC=NUL 
Set PASSWORDADMIN=NUL 
echo.
echo.
echo.

echo Copio il file dello script sul PC %NOMEPC%
echo ==========================================
set STRINGAPSEXECCOPIA=cmd /c copy %PERCORSOSCRIPT%\%NOMESCRIPT% %public%\downloads
psexec -u %UTENTEAMMINISTRATORE% -p %PASSWORDADMIN% \\%NOMEPC% %STRINGAPSEXECCOPIA%
echo.
echo.
echo.

echo Lancio lo script sul PC %NOMEPC%
echo ================================
set STRINGAPSEXECLANCIA=cscript %public%\downloads\%NOMESCRIPT%
psexec -u %UTENTEAMMINISTRATORE% -p %PASSWORDADMIN% \\%NOMEPC% %STRINGAPSEXECLANCIA%
echo.

pause 
Set PASSWORDADMIN=NUL
Set NOMEPC=NUL
goto FINE

:NOPARAMETERS
echo.
echo ERRORE: Inserire il nome del PC e la PASSWORD DI ADMIN

:FINE
echo.
echo =================
echo Fine elaborazione

Lo script dapprima copierà il file indicato nella variabile %NOMESCRIPT% nel percorso locale del PC %public%\downloads e poi lo lancerà. Per consentire i giusti permessi lo script chiederà la password dell’utente amministrativo indicato nella variabile %UTENTEAMMINISTRATORE%.

Otterrai:

Impostazione parametri variabili
================================
[Inserisci il nome del PC]: PC-001
[Inserisci la password dell'utente "MIODOMINIO\Admin"]: Mi@password.



Copio il file dello script sul PC PC-001
==========================================

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com


        1 file copiati.
cmd exited on PC-001 with error code 0.



Lancio lo script sul PC PC-001
================================

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com


Microsoft (R) Windows Script Host Versione 5.8
Copyright (C) Microsoft Corporation 1996-2001. Tutti i diritti riservati.

cscript exited on PC-001 with error code 0.

Premere un tasto per continuare . . .

=================
Fine elaborazione

Installazione automatica PDFcreator

PDFprinter Volete installare una stampante PDF in un PC del dominio senza intervento dell’utente?

Usate PDFcreator

Ecco come fare:

Innanzitutto scaricate PDFcreator (la versione standard, non la Plus) e copiatelo in una cartella condivisa sul server.

Create poi uno script .bat, nella stessa cartella, con il seguente contenuto:

@echo off
for /f "tokens=*" %%a in ('dir /b "%~dp0PDFCreator*Setup.exe"') do (
echo %n% %~dp0%%a
start /wait "" "%~dp0%%a" /ForceInstall /SILENT /LANG=Italiano /COMPONENTS="program,ghostscript" /NORESTART /NOICONS /ProxyName=proxy1:8088
)

Io ho inserito anche un falso proxy per evitare che il programma si connetta ad Internet. Gli altri switch della linea di comando servono ad usare la lingua italiana (/LANG=Italiano), ad installare solo i componenti necessari (/COMPONENTS=”program,ghostscript”), ad evitare il riavvio del PC (/NORESTART), e ad evitare che il programma aggiunga icone sul desktop (/NOICONS).

L’opzione /SILENT consente un’installazione che mostra lo stato di avanzamento, ma se vorreste evitare del tutto interazioni con l’installazione allora basterà usare lo switch /VERYSILENT.

Basterà quindi lanciare lo script .bat dalla cartella condivisa e l’installazione creerà automaticamente una nuova stampante PDF su cui lanciare le stampe per la creazione dei documenti.

Vi consiglio anche di impostare la creazione di documenti PDF/A per l’utilizzo istituzionale; il formato PDF/A, infatti, incorpora tutte le informazioni necessarie e sufficienti per la visualizzazione del documento e quindi ne garantisce la leggibilità anche nelle versioni future. Questi i passaggi:

PDFcreator1

Quindi seleziona il profilo relativo

PDFcreator2