PowerShell Remoting Jerzy Mikołajczak Poznań, 19.07.2011 MIC Summer School 1
Agenda PowerShell(słowem wstępu) Czym zatem jest Remoting? Wymagania Konfiguracja Remoting sposoby wykorzystania Demo! Bezpieczeństwo Demo! 2
PowerShell(słowem wstępu) PowerShell jest Rozbudowaną konsolą tekstową zawierającą cmdletów. Np.: ConvertTo-{Csv, Html, Xml}, Format-{List, Table}, Get-{Content, Process, Unique} Restart-{Computer, Service}, Start-{Job, Service, Sleep}, Set-{Service, Date, Alias, Acl}, New-{Item, Event, Module}, etc. Dwa moje ulubione: Get-Help cmdlet(alias man) Out-Null 3
PowerShell(słowem wstępu) Językiem skryptowym 4
PowerShell(słowem wstępu) Zbudowany na podstawie Możliwość wykorzystania platformy.net bezpośrednio w kodzie PowerShell 5
PowerShell(słowem wstępu) Narzędzie administracji i automatyzacji Automatyzacja ważniejszych zdarzeń w codziennej pracy IT Wielokrotne czynności (+XX powtórzeń) Deployment Migracje 6
PowerShell(słowem wstępu) Nieodłączna część serwerowych produktów Microsoft Active Directory SharePoint 2010 Exchange 2007/2010 SQL 2005/2008/2008R2/2011(codename codename: Denali) System Center (DPM, SCVMM ) Lync 2010 Wsparcie od firm zewnętrznych Citrix XenApp 6 VMware ESXi, vcenter, vsphere(apis APIs) NetAppData ONTAP PowerShell Toolkit 7
PowerShell(słowem wstępu) Zarządzanie Chmurą Outlook Live (Exchange Labs) Office365 BPOS (Business Productivity Online Suite) Azure Cloud 8
Czym zatem jest Remoting? Konsola Język WinRM 2.0.NET WinRM 2.0 Platforma Microsoft do zarządzania serwerami pod kątem oprogramowania i sprzętu 9
Czym zatem jest Remoting? Klient Serwer PowerShell 2.0 PowerShell 2.0 WinRM 2.0 OS WinRM 2.0 OS 10
Wymagania Oprogramowanie: Windows PowerShell 2.0.NET framework 2.0 SP1 lub późniejszy Windows Remote Management (WinRM WinRM) 2.0 System operacyjny: Windows indowsserver 2008 R2 Windows Server 2008 zservice Pack 2 Windows Server 2003 zservice Pack 2 Windows 7 Windows Vista z Service Pack 1, 2 Windows XP zservice Pack 3 Windows Embedded POSReady 2009 Windows Embedded for Point of Service 1.1 11
Konfiguracja serwera Konfiguracja serwera jest prosta Enable-PSRemoting Ten cmdlet: Uruchamia Set-WSManQuickConfig WSManQuickConfig, który: Startuje usługę WinRM Ustawia jej tryb startowy na Automatyczny Tworzy Listener(odbiornik ) nasłuchujący na wszystkichinterfejsach interfejsach sieciowych Dodaje regułę otwierającą Firewall dla protokołu WS-Management Pozwala (nadaje uprawnienia) na odbieranie poleceń z zdalnej maszyny we wszystkich zarejestrowanych konfiguracjach sesji PSR Restartuje usługę WinRM Windows XP/2003 wymaga dodatkowej uwagi : Set-ItemProperty Path HKLM:\System\CurrentControlSet\Control\Lsa Name ForceGuest Value 0 12
Konfiguracja klienta W przypadku systemów Windows XP/Vista/7 Start-Service WinRM Set-Service WinRM -StartupType Automatic W przypadku środowiska Workgroupdodatkowo (KB951016: UAC Remote Restrictions): Oraz: Set-ItemProperty Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System Name LocalAccountTokenFilterPolicy Value 1 Type Dword Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.mic.local Set-Item WSMan:\localhost\Client\TrustedHosts -Value hvm-1 Set-Item WSMan:\localhost\Client\TrustedHosts -Value * 13
Remoting-sposoby wykorzystania (1/4) cmdletyz parametrem ComputerName ComputerName (35) Get-Command -CommandType cmdlet where { $_.parameters.keys -contains "ComputerName"} Clear-EventLog, Enter-PSSession, Get-Counter, Get-EventLog, Get- HotFix, Get-Process, Get-PSSession, Get-Service, Get-WinEvent, Invoke-Command, Invoke-WmiMethod, Invoke-WSManAction, Limit-EventLog, New-EventLog, New-PSSession, New-WSManInstance, Receive-Job, Register-WmiEvent, Remove-EventLog, Remove-PSSession, Restart- Computer, Set-Service, Set-WmiInstance, Set-WSManInstance, Show- EventLog, Stop-Computer, Test-Connection, Test-WSMan, Write-EventLog.. oraz te z dodatkowym parametrem Credential Credential (20) Get-Command -CommandType cmdlet where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -contains "Credential"} 14
Remoting-sposoby wykorzystania (2/4) Korzystając z cmdletu Invoke-Command Command(alias: icm) icm comp1,comp2 {Get-HotFix} Invoke-Command $session ScriptBlock {get-something; do-something} icm comp1,comp2 FilePath C:\psnc\script.ps1 icm (Get-Content c:\psnc\servers.txt) -FilePath C:\psnc\script.ps1 15
Remoting-sposoby wykorzystania (3/4) Interactive Remoting Enter-PSSession ComputerName comp1 [comp1]: PS C:\ Enter-PSSession ComputerName comp2 Credential $cred [comp2]: PS C:\ Enter-PSSession ComputerName comp3 Credential (Get-Credential) [comp3]: PS C:\ 16
Remoting-sposoby wykorzystania (4/4) Implicit Remoting $session = New-PSSession ComputerName dc.test.local Import-PSSession $session Module ActiveDirectory,MyModule 17
Demo PS C:\ 18
Bezpieczeństwo Uwierzytelnianie i szyfrowanie: Cały ruch via WinRM jest szyfrowany (można to wyłączyć) SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism)zwany także Negotiate-> Kerberos/NTLM Możliwość wykorzystania SSL (-UseSSL UseSSL) Wymaga konfiguracji WinRM pod kątem certyfikatu: winrm create winrm/config/listener?address=*+transport=https @{Hostname="";CertificateThumbprint=""} W przypadku certyfikatów Self-Signed Signedmusimy dodać SkipCACheck SkipCACheckprzy przy tworzeniu sesji (da się to ustawić globalnie) Standardowe porty: 5985 5986 (SSL) 19
Bezpieczeństwo konfiguracja sesji Zdalne sesje: out-of of-the the-box box tylko dla administratorów możliwość stworzenia konfiguracji sesji dla zwykłego użytkownika Użytkownik nie może otworzyć zdalnej sesji w konfiguracji innej niż mu przypisana przez Administratora Lista dostępnych cmdletów Lista zabronionych cmdletów Blokada aplikacji oraz skryptów cmdletydo do zarządzania konfiguracjami sesji Get-Command *-PSSessionConfiguration Select Name Name ---- Disable-PSSessionConfiguration Enable-PSSessionConfiguration Get-PSSessionConfiguration Register-PSSessionConfiguration Set-PSSessionConfiguration Unregister-PSSessionConfiguration 20
Bezpieczeństwo konfiguracja sesji PS C:\psnc> Get-PSSessionConfiguration -Name Denied fl Name : Denied Filename : %windir%\system32\pwrshplugin.dll SDKVersion : 1 XmlRenderingType : text lang : en-us PSVersion : 2.0 startupscript : C:\psnc\Denied.ps1 ResourceUri : http://schemas.microsoft.com/powershell/denied SupportsOptions : true Capability : {Shell} xmlns : http://schemas.microsoft.com/wbem/wsman/1/config/pluginconfiguration Uri : http://schemas.microsoft.com/powershell/denied ExactMatch : false SecurityDescriptorSddl : O:NSG:BAD:P(A;;GA;;;BA)(A;;GX;;;S-1-5-21-3249181613-3502092175) Permission : BUILTIN\Administrators AccessAllowed, TEST\jerzym AccessAllowed 21
Demo PS C:\ 22
PS C:\Write-Host Dziękuję za uwagę! PS C:\Read-Host Pytania? Kontakt: jerzym@man.poznan.pl 23