Megosztás a következőn keresztül:


A Bastion for Kerberos-hitelesítés konfigurálása az Azure Portal használatával

Ez a cikk bemutatja, hogyan konfigurálhatja az Azure Bastiont a Kerberos-hitelesítés használatára. A Kerberos-hitelesítés az Alapszintű és a Standard Bastion termékváltozatokkal is használható. A Kerberos-hitelesítésről további információt a Kerberos-hitelesítés áttekintésében talál. További információ az Azure Bastionról: Mi az Az Azure Bastion?

Megfontolások

  • Az Azure Bastion Kerberos-beállítása csak az Azure Portalon konfigurálható, natív ügyféllel nem.
  • A helyszíniről az Azure-ba migrált virtuális gépek jelenleg nem támogatottak a Kerberos esetében. 
  • A kerberosok jelenleg nem támogatják a tartományok közötti hitelesítést.
  • A tartományvezérlőnek egy Azure-ban üzemeltetett virtuális gépnek kell lennie ugyanazon a virtuális hálózaton belül, amelyet a megerősített rendszer üzembe helyezett.
  • A DNS-kiszolgálók módosításai nem propagálnak a Bastionba. A DNS-adatok megfelelő propagálásához a Bastion újratelepítésére van szükség. Miután módosította a DNS-kiszolgálót, törölnie kell és újra létre kell hoznia a Bastion-erőforrást.
  • Ha további tartományvezérlőket (tartományvezérlőket) ad hozzá, a Bastion csak az első tartományvezérlőt ismeri fel.
  • Ha a rendszer további tartományvezérlőket ad hozzá a különböző tartományokhoz, a hozzáadott tartományok nem tudnak sikeresen hitelesíteni a Kerberossal.

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Ha nincs ilyenje, hozzon létre egyet ingyen. Ahhoz, hogy a Bastion használatával kapcsolódhasson egy virtuális géphez a böngészőben, be kell tudnia jelentkeznie az Azure Portalra.

  • Egy Azure-beli virtuális hálózat. A virtuális hálózat létrehozásának lépéseit a rövid útmutatóban találja : Virtuális hálózat létrehozása.

Virtuális hálózati DNS-kiszolgálók frissítése

Ebben a szakaszban az alábbi lépések segítenek frissíteni a virtuális hálózatot az egyéni DNS-beállítások megadásához.

  1. Jelentkezzen be az Azure Portalra.
  2. Lépjen arra a virtuális hálózatra, amelyhez telepíteni szeretné a Bastion-erőforrásokat.
  3. Nyissa meg a virtuális hálózat DNS-kiszolgálóinak lapját, és válassza az Egyéni lehetőséget. Adja hozzá az Azure által üzemeltetett tartományvezérlő ÉS a Mentés IP-címét.

A Bastion üzembe helyezése

  1. Kezdje el konfigurálni a megerősített üzembe helyezést az oktatóanyag lépéseivel : A Bastion üzembe helyezése manuális konfigurációs beállítások használatával. Konfigurálja a beállításokat az Alapszintű beállítások lapon. Ezután a lap tetején kattintson a Speciális gombra a Speciális lap eléréséhez.

  2. A Speciális lapon válassza a Kerberos lehetőséget.

    Képernyőkép a megerősített funkciók kiválasztásáról.

  3. A lap alján válassza a Véleményezés + létrehozás, majd a Létrehozás lehetőséget a Bastion virtuális hálózaton való üzembe helyezéséhez.

  4. Az üzembe helyezés befejeződése után bejelentkezhet a korábbi lépésekben megadott egyéni DNS-hez csatlakoztatott, elérhető Windows rendszerű virtuális gépekre.

Meglévő Bastion-telepítés módosítása

Ebben a szakaszban a következő lépések segítenek módosítani a virtuális hálózatot és a Meglévő Bastion-telepítést a Kerberos-hitelesítéshez.

  1. Frissítse a virtuális hálózat DNS-beállításait .
  2. Nyissa meg a Bastion-telepítés portállapját, és válassza a Konfiguráció lehetőséget.
  3. A Konfiguráció lapon válassza a Kerberos-hitelesítés, majd az Alkalmaz lehetőséget.
  4. A Bastion az új konfigurációs beállításokkal frissül.

Annak ellenőrzése, hogy a Bastion Kerberost használ-e

Feljegyzés

A Kerberos használatával való bejelentkezéshez az egyszerű felhasználónévvel (UPN) kell bejelentkeznie.

Miután engedélyezte a Kerberost a Bastion-erőforráson, ellenőrizheti, hogy valóban a Kerberost használja-e a céltartományhoz csatlakoztatott virtuális gép hitelesítéséhez.

  1. Jelentkezzen be a cél virtuális gépre (vagy a Bastionon keresztül, vagy nem). Keressen rá a "Csoportházirend szerkesztése" kifejezésre a tálcán, és nyissa meg a Helyi csoportházirend-szerkesztőt.

  2. Válassza a Számítógép konfigurációja > Windows-beállítások > biztonsági beállítások > helyi házirendek > biztonsági beállításai lehetőséget.

  3. Keresse meg a házirend hálózati biztonságát: Korlátozza az NTLM: Bejövő NTLM-forgalmat, és állítsa be az összes tartományi fiók megtagadására. Mivel a Bastion NTLM-et használ a hitelesítéshez, ha a Kerberos le van tiltva, ez a beállítás biztosítja, hogy az NTLM-alapú hitelesítés sikertelen legyen a virtuális gépen való jövőbeli bejelentkezési kísérletek esetén.

  4. Fejezd be a virtuálisgép-munkamenetet.

  5. Csatlakozzon ismét a cél virtuális géphez a Bastion használatával. A bejelentkezésnek sikeresnek kell lennie, ami azt jelzi, hogy a Bastion a Kerberost (és nem az NTLM-et) használta a hitelesítéshez.

    Feljegyzés

    Az NTLM-be történő feladat-visszavétel megakadályozásához kövesse az előző lépéseket. A Kerberos engedélyezése (az eljárás követése nélkül) nem akadályozza meg az NTLM-be történő feladat-visszavételt.

Rövid útmutató: A Bastion beállítása a Kerberos használatával – Resource Manager-sablon

A sablon áttekintése

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "defaultValue": "[resourceGroup().location]",
      "type": "string"
    },
    "defaultNsgName": {
      "type": "string",
      "defaultValue": "Default-nsg"
    },
    "VnetName": {
      "type": "string",
      "defaultValue": "myVnet"
    },
    "ClientVMName": {
      "defaultValue": "Client-vm",
      "type": "string"
    },
    "ServerVMName": {
      "defaultValue": "Server-vm",
      "type": "string"
    },
    "vmsize": {
      "defaultValue": "Standard_DS1_v2",
      "type": "string",
      "metadata": {
        "description": "VM SKU to deploy"
      }
    },
    "ServerVMUsername": {
      "type": "string",
      "defaultValue": "serveruser",
      "metadata": {
        "description": "Admin username on all VMs."
      }
    },
    "ServerVMPassword": {
      "type": "securestring",
      "metadata": {
        "description": "Admin password on all VMs."
      }
    },
    "SafeModeAdministratorPassword": {
      "type": "securestring",
      "metadata": {
        "description": "See https://learn.microsoft.com/en-us/powershell/module/addsdeployment/install-addsdomaincontroller?view=windowsserver2022-ps#-safemodeadministratorpassword"
      }
    },
    "ClientVMUsername": {
      "type": "string",
      "defaultValue": "clientuser",
      "metadata": {
        "description": "username on ClientVM."
      }
    },
    "ClientVMPassword": {
      "type": "securestring",
      "metadata": {
        "description": "password on ClientVM."
      }
    },
    "ServerVmImage": {
      "type": "object",
      "defaultValue": {
        "offer": "WindowsServer",
        "publisher": "MicrosoftWindowsServer",
        "sku": "2019-Datacenter",
        "version": "latest"
      }
    },
    "ClientVmImage": {
      "type": "object",
      "defaultValue": {
        "offer": "Windows",
        "publisher": "microsoftvisualstudio",
        "sku": "Windows-10-N-x64",
        "version": "latest"
      }
    },
    "publicIPAllocationMethod": {
      "type": "string",
      "defaultValue": "Static"
    },
    "BastionName": {
      "defaultValue": "Bastion",
      "type": "string"
    },
    "BastionPublicIPName": {
        "defaultValue": "Bastion-ip",
        "type": "string"
    }
  },
  "variables": {
    "DefaultSubnetId": "[concat(resourceId('Microsoft.Network/virtualNetworks', parameters('VnetName')), '/subnets/default')]",
    "ClientVMSubnetId": "[concat(resourceId('Microsoft.Network/virtualNetworks', parameters('VnetName')), '/subnets/clientvm-subnet')]",
    "DNSServerIpAddress": "10.16.0.4",
    "ClientVMPrivateIpAddress": "10.16.1.4"
  },
  "resources": [
    {
      "apiVersion": "2020-03-01",
      "name": "[parameters('VnetName')]",
      "type": "Microsoft.Network/virtualNetworks",
      "location": "[parameters('location')]",
      "properties": {
        "dhcpOptions": {
          "dnsServers": [ "[variables('DNSServerIpAddress')]" ]
        },
        "subnets": [
          {
            "name": "default",
            "properties": {
              "addressPrefix": "10.16.0.0/24"
            }
          },
          {
            "name": "clientvm-subnet",
            "properties": {
              "addressPrefix": "10.16.1.0/24"
            }
          },
          {
            "name": "AzureBastionSubnet",
            "properties": {
              "addressPrefix": "10.16.2.0/24"
            }
          }
        ],
        "addressSpace": {
          "addressPrefixes": [
            "10.16.0.0/16"
          ]
        }
      }
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2018-10-01",
      "name": "[concat(parameters('ServerVMName'), 'Nic')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[concat('Microsoft.Network/virtualNetworks/', parameters('VnetName'))]"
      ],
      "properties": {
        "ipConfigurations": [
          {
            "name": "[concat(parameters('ServerVMName'), 'NicIpConfig')]",
            "properties": {
              "privateIPAllocationMethod": "Static",
              "privateIPAddress": "[variables('DNSServerIpAddress')]",
              "subnet": {
                "id": "[variables('DefaultSubnetId')]"
              }
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2020-06-01",
      "name": "[parameters('ServerVMName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[concat('Microsoft.Network/networkInterfaces/', parameters('ServerVMName'), 'Nic')]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[parameters('vmSize')]"
        },
        "osProfile": {
          "AdminUsername": "[parameters('ServerVMUsername')]",
          "AdminPassword": "[parameters('ServerVMPassword')]",
          "computerName": "[parameters('ServerVMName')]"
        },
        "storageProfile": {
          "imageReference": "[parameters('ServerVmImage')]",
          "osDisk": {
            "createOption": "FromImage",
            "managedDisk": {
              "storageAccountType": "Standard_LRS"
            }
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[ResourceId('Microsoft.Network/networkInterfaces/', concat(parameters('ServerVMName'), 'Nic'))]"
            }
          ]
        }
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2021-04-01",
      "name": "[concat(parameters('ServerVMName'),'/', 'PromoteToDomainController')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/',parameters('ServerVMName'))]"
      ],
      "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.7",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "commandToExecute": "[concat('powershell.exe -Command \"Install-windowsfeature AD-domain-services; Import-Module ADDSDeployment;$Secure_String_Pwd = ConvertTo-SecureString ',parameters('SafeModeAdministratorPassword'),' -AsPlainText -Force; Install-ADDSForest -DomainName \"bastionkrb.test\" -SafeModeAdministratorPassword $Secure_String_Pwd -Force:$true')]"
          }
      }
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2018-10-01",
      "name": "[concat(parameters('ClientVMName'), 'Nic')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[concat('Microsoft.Network/virtualNetworks/', parameters('VnetName'))]",
        "[concat('Microsoft.Compute/virtualMachines/', parameters('ServerVMName'))]"
      ],
      "properties": {
        "ipConfigurations": [
          {
            "name": "[concat(parameters('ClientVMName'), 'NicIpConfig')]",
            "properties": {
              "privateIPAllocationMethod": "Static",
              "privateIPAddress": "[variables('ClientVMPrivateIpAddress')]",
              "subnet": {
                "id": "[variables('ClientVMSubnetId')]"
              }
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2020-06-01",
      "name": "[parameters('ClientVMName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[concat('Microsoft.Network/networkInterfaces/', parameters('ClientVMName'), 'Nic')]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[parameters('vmSize')]"
        },
        "osProfile": {
          "AdminUsername": "[parameters('ClientVMUsername')]",
          "AdminPassword": "[parameters('ClientVMPassword')]",
          "computerName": "[parameters('ClientVMName')]"
        },
        "storageProfile": {
          "imageReference": "[parameters('ClientVmImage')]",
          "osDisk": {
            "createOption": "FromImage",
            "managedDisk": {
              "storageAccountType": "Standard_LRS"
            }
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[ResourceId('Microsoft.Network/networkInterfaces/', concat(parameters('ClientVMName'), 'Nic'))]"
            }
          ]
        }
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2021-04-01",
      "name": "[concat(parameters('ClientVMName'),'/', 'DomainJoin')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/',parameters('ClientVMName'))]",
        "[concat('Microsoft.Compute/virtualMachines/', parameters('ServerVMName'),'/extensions/', 'PromoteToDomainController')]",
        "[concat('Microsoft.Network/bastionHosts/', parameters('BastionName'))]"
      ],
      "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.7",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "commandToExecute": "[concat('powershell.exe -Command Set-ItemProperty -Path HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0\\ -Name RestrictReceivingNTLMTraffic -Value 1; $Pass= ConvertTo-SecureString -String ',parameters('ServerVMPassword'),' -AsPlainText -Force; $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList \"AD\\serveruser\", $Pass; do { try { $joined = add-computer -computername Client-vm -domainname bastionkrb.test –credential $Credential -passthru -restart –force; } catch {}} while ($joined.HasSucceeded -ne $true)')]"
          }
      }
    },
    {
      "apiVersion": "2020-11-01",
      "type": "Microsoft.Network/publicIPAddresses",
      "name": "[parameters('BastionPublicIPName')]",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard"
      },
      "properties": {
        "publicIPAllocationMethod": "Static"
      },
      "tags": {}
    },
    {
        "type": "Microsoft.Network/bastionHosts",
        "apiVersion": "2020-11-01",
        "name": "[parameters('BastionName')]",
        "location": "[resourceGroup().location]",
        "dependsOn": [
            "[concat('Microsoft.Network/virtualNetworks/', parameters('VnetName'))]",
            "[concat('Microsoft.Network/publicIpAddresses/', parameters('BastionPublicIPName'))]"
        ],
        "sku": {
            "name": "Standard"
        },
        "properties": {
            "enableKerberos": "true",
            "ipConfigurations": [
                {
                    "name": "IpConf",
                    "properties": {
                        "privateIPAllocationMethod": "Dynamic",
                        "publicIPAddress": {
                            "id": "[resourceId('Microsoft.Network/publicIpAddresses', parameters('BastionPublicIPName'))]"
                        },
                        "subnet": {
                            "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', parameters('VnetName')), '/subnets/AzureBastionSubnet')]"
                        }
                    }
                }
            ]
        }
    }
  ]
}

A sablon a következő erőforrásokat definiálta:

  • A következő Azure-erőforrásokat helyezi üzembe:
    • Microsoft.Network/virtualNetworks: Hozzon létre egy Azure-beli virtuális hálózatot.
    • Microsoft.Network/bastionHosts: Hozzon létre egy standard termékváltozat-tárolót, amelyen engedélyezve van a nyilvános IP-cím és a Kerberos szolgáltatás.
    • Hozzon létre egy Windows 10 ClientVM-et és egy Windows Server 2019 ServerVM-et.
  • A VNet-pont DNS-kiszolgálóját a ServerVM (tartományvezérlő) magánhálózati IP-címére kell helyezni.
  • Egyéni szkriptbővítményt futtat a ServerVM-en, hogy előléptesse azt egy tartományvezérlőre a következő tartományvezérlőn: bastionkrb.test.
  • Egyéni szkriptbővítményt futtat a ClientVM-en a következőhöz:
    • NTLM korlátozása: Bejövő NTLM-forgalom = Az összes tartományi fiók megtagadása (ez a Kerberos hitelesítéshez való használatának biztosítása).
    • Tartomány csatlakoztatása a bastionkrb.test tartományhoz.

A sablon üzembe helyezése

A Kerberos beállításához telepítse az előző ARM-sablont a következő PowerShell-parancsmag futtatásával:

New-AzResourceGroupDeployment -ResourceGroupName <your-rg-name> -TemplateFile "<path-to-template>\KerberosDeployment.json"`

Üzembe helyezett erőforrások áttekintése

Most jelentkezzen be a ClientVM-be a Bastion használatával Kerberos-hitelesítéssel:

  • hitelesítő adatok: felhasználónév = serveruser@bastionkrb.test és jelszó = <password-entered-during-deployment>.

Következő lépések

További információ az Azure Bastionról: Mi az Az Azure Bastion?