Freigeben über


Konfiguracja środowiska PowerShell - cz. I. Inicjalizacja.

Powoli Startujemy

PS powoli staje sie podstawa calego zarzadzania serwerami Microsoft. Wszystkie wieksze produkty dostarczaja juz commandlety, a wiekszosc w ogóle jest pisana na bazie PS – okienka zarzadzania to zwykle formatki uruchamiajace skrypty. To oznacza, iz bez znajomosci PS bedzie ciezko – duzo ciezej niz kiedys, bez znajomosci CMD. Zgodnie z powiedzeniem “jak sobie
poscielisz - tak sie wyspisz” [bardziej wole te druga wersje - “to mnie zawolaj”, ale tutaj nie pasuje (; ] – jak sobie skonfigurujesz srodowisko PS, tak Ci sie bedzie pracowalo. ‘Z pudelka’ niestety[?] nie powala na kolana – standardowe kolory i klopoty z fontami utrudniaja prace, skryptów nie da sie uruchamiac, nie da sie równiez nigdzie polaczyc zdalnie. Jak juz sie doda mozliwosc zdalnego polaczenia, to jest sie zsandboxowanym do lokalnego srodowiska.

Pomijajac filozoficzne rozterki dotyczace decyzji takich a nie innych ustawien standardowych [wiekszosc tlumaczona jest bezpieczenstwem], pozostaje je zmienic po swojemu. Uczynic srodowisko przyjaznym. Oto podstawowe kroki, które postaram sie opisac w tej czesci:

  • wlaczenie skryptów
  • uruchomienie zdalnych polaczen

Tylko dwa punkty – te najwazniejsze, bez których srodowisko jest praktycznie nie-do-uzytku dla administratora.

Zeby nie przepisywac Internetu, wszystkie informacje sa w bardzo podstawowej formie – zakladam, ze chodzi o automatyzacje i globalna konfiguracje, a nie pojedynczy serwer. Dla tych, którzy potrzebuja wiecej szczególów, na koncu znajduja sie linki do dalszej lektury.

Powlaczaj Skrypty

Aby obronic system przed administratorem, zaklada sie, ze jest on ... niemadry. Biorac pod uwage statystyki, to wcale nie jest zle zalozenie (; Aby zatem
przekonac system, ze wiesz, co robisz, musisz zmienic polityke uruchamiania skryptów, która standardowo nie pozwala na ich uruchamianie. Opcje mozna
wlaczyc dla wszystkich serwerów via GPO:

  • Computer Configuration ( lub User Configuration) | Administrative Templates | Windows Components | Windows PowerShell | Turn On Script Execution

Troche smutne, ze to jest jedyna opcja dla PS, jaka mozna skonfigurowac bezposrednio w GPO ): Mam nadzieje, ze za jakis czas w tej czesci pojawia sie dodatki, ulatwiajace zycie administratorom. Do wyboru sa 3 poziomy bezpieczenstwa:

  • Allow only signed: to niewatpliwie najbezpieczniejsze ustawienie i jak to z bezpiecznymi rozwiazaniami bywa, tak i tutaj, nie jest przyjazne w codziennej pracy. Aby korzystac ze skryptów, nalezy wygenerowac certyfikat z uzyciem ‘code signing’ i kazdy skrypt podpisac. Aby przy kazdej drobnej zmianie nie musiec w kólko podpisywac skryptu – co zwlaszcza w procesie tworzenia jest co najmniej uciazliwe – prawidlowo, powinno sie skonfigurowac ‘serwer roboczy’. Na takim serwerze skrypty mozna tworzyc i testowac, na koniec
    podpisac i umiescic w repozytorium. Na pozostalych serwerach korzystac z owego repozytorium. Piekne, ale bardzo wymagajace.
  • Allow local scripts and remote signed scripts: skrypty napisane lokalnie uruchamiaja sie, natomiast te sciagniete z Internetu tylko, jesli sa podpisane zaufanym certyfikatem. To IMHO najbardziej ‘ludzkie’ podejscie [jesli ufa sie samemu sobie (; ] i wygodne. Trzeba oczywiscie wziac pod uwage równiez zaufanie do wspólpracowników. Jesli skrypty maja wymóg podpisywania, mozemy zdefiniowac, kto je tworzy, wydajac lub nie odpowiedni certyfikat. Natomiast przy tej opcji nie mamy juz kontroli nad zródlem skryptu.
  • Allow all scripts: niezalecane nawet przy poluzowanej polityce bezpieczenstwa. Kazdy zassany skrypt, zawsze warto najpierw przejrzec.

#Pomocne Skróty

  • aby dowiedziec sie wiecej o podpisywaniu: get-help About_Signing
  • konfiguracja podpisywania certyfikatem: scripting guy

Polaczenia Sdalne

Mozliwosc korzystania z PS tak, jak z SSH, wymaga troche wiecej wysilku. Do zdalnej sesji wykorzystywany jest winRM. Aby móc zestawic zdalna sesje PS trzeba wlaczyc tzw. listener dla uslugi - czyli usluga musi w ogóle oczekiwac na polaczenia. Operacja jest tak samo prosta jak w przypadku polityki podpisywania, z ta jednak róznica, ze w tym przypadku warto [wrecz trzeba!] zainwestowac chwile w konfiguracje certyfikatów tak, aby sesje byly szyfrowane. Windows Remote Shell (winRS) wykorzystuje polaczenie HTTP:5985 lub HTTPS:5986. W celu zestawienia kanalu szyfrowanego niezbedny jest certyfikat SSL oraz konfiguracja przy pomocy skryptów - to opisze w przyszlosci. Nalezy:

  • wlaczyc listenera:
    • Computer Configuration | Administrative Templates | Windows Components | Windows Remote Management (WinRM) | WinRM Service | Allow automatic configuration of listeners
    • Computer Configuration | Administrative Templates | Windows Components | Windows Remote Management (WinRM) | WinRM Service | Turn On Compatibility HTTP Listener - DISABLED
  • zrobic wyjatek dla Firewall w
    • Computer Configuration | Windows Settings | Security Setting | Windows Firewall with Advanced Security
    • jest predefiniowana regula dla winRM podczas konfiguracji polisy Firewall, wiec nie trzeba recznie wpisywac portów.

Kolejnym krokiem jest konfiguracja wymiany uwierzytelnien credSSP. CredSSP to provider uwierzytelniajacy, wprowadzony wraz z Vista, który zastapil stara GINA. Standardowo delegacja uprawnien jest wylaczona i po zdalnym zalogowaniu nie da sie np, skopiowac czegos na zdalny serwer. Jest sie uwiezionym lokalnie na zdalnym serwerze. To mocno utrudnia prace,  warto zatem ulatwic sobie zycie i wlaczyc delegacje. Opcje trzeba wlaczyc dla obu konców - klient musi ich uzywac, a serwer musi je akceptowac:

  • Computer Configuration | Administrative Templates | Windows Components | Windows Remote Management (WinRM) | WinRM Client | Allow CredSSP authentication
  • Computer Configuration | Administrative Templates | Windows Components | Windows Remote Management (WinRM) | WinRM Service | Allow CredSSP authentication

Post Scriptum

Tyle na poczatek. W kolejnej czesci chcialbym przekazac kilka wskazówek jak skonfigurowac samo srodowisko – czyli kolory, aliasy itd. Oczywiscie centralnie – tak, zeby czas
poswiecic raz i pracowac wygodnie w calym srodowisku.

#Pomocne Skróty

eN.

autor: nExoR