Désactiver SSH et Shell

SSH et le Shell peuvent s’avérer utiles sur les ESXi, cependant il est préférable de les désactiver en environnement de production, pour des raisons de sécurité.
Il est bien sûr possible de le faire dans l’onglet Configuration de chaque ESX, section Security Profile, mais avec de nombreux hosts, il est bien plus simple de le faire par script. D’autant que ce script peut être relancé à volonté pour faire le ménage sur les services qu’on a oublié de désactiver.

Le script ci-dessous vérifie la configuration de chaque ESXi, et la modifie si nécessaire : arrêt de SSH et du Shell, et désactivation du démarrage automatique de ceux-ci.
Il indique pour chaque host si ses éléments sont déjà configurés ou s’il doit le modifier.

Le script peut facilement être modifié pour démarrer ces services lorsqu’on en a besoin. En passant de « Set-VMHostService -Policy off -Policy off » à « Set-VMHostService -Policy off -Policy on » on active le démarrage automatique du service, et en passant de « Stop-VMHostService » à « Start-VMHostService » on démarre le service.


Variables

Une variable est initialisée à la première ligne.

$ListFQDNs : contient la liste des ESXi à contrôler.
Elle est initialisée par une requête pour lister par exemple un host, les hosts d’un cluster, ou tous les hosts connus du vCenter.

$EsxHosts = Get-VMHost host01.infra.local
$EsxHosts = Get-Cluster | Get-VMHost | Sort-Object -Property Name
$EsxHosts = Get-VMHost | Sort-Object -Property Name

Script

$EsxHosts = Get-VMHost | Sort-Object -Property Name
Foreach ($EsxHost in $EsxHosts)
{
   Write-Host $EsxHost.Name -ForegroundColor Red
   if ($EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "ESXi Shell" -and $_.Policy -eq "off"})
   {
      Write-Host "- ESXi Shell automatic startup already disabled on $EsxHost." -ForegroundColor Green
   }
   else
   {
      Write-Host "- ESXi Shell automatic startup is enabled on $EsxHost. Disabling..." -ForegroundColor Yellow
      $Result = $EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "ESXi Shell"} | Set-VMHostService -Policy off
   }
   if ($EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "ESXi Shell" -and $_.Running -eq $false})
   {
      Write-Host "- ESXi Shell already disabled on $EsxHost." -ForegroundColor Green
   }
   else
   {
      Write-Host "- ESXi Shell is running on $EsxHost. Stopping..." -ForegroundColor Yellow
      $Result = $EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "ESXi Shell"} | Stop-VMHostService -Confirm:$false
   }
   if ($EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "SSH" -and $_.Policy -eq "off"})
   {
      Write-Host "- SSH automatic startup already disabled on $EsxHost." -ForegroundColor Green
   }
   else
   {
      Write-Host "- SSH automatic startup is enabled on $EsxHost. Disabling..." -ForegroundColor Yellow
      $Result = $EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "SSH"} | Set-VMHostService -Policy off
   }
   if ($EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "SSH" -and $_.Running -eq $false})
   {
      Write-Host "- SSH already disabled on $EsxHost." -ForegroundColor Green
   }
   else
   {
      Write-Host "- SSH is running on $EsxHost. Stopping..." -ForegroundColor Yellow
      $Result = $EsxHost | Get-VMHostService | Where-Object {$_.Label -eq "SSH"} | Stop-VMHostService -Confirm:$false
   }
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *