Wieloskładnikowe uwierzytelnianie w Powershell

20 stycznia 2017 at 10:08

Czasami/Często albo nawet i częściej niż często zachodzi konieczność przekazania komuś kompetencji w zakresie danej technologii. Gdy tylko jest to możliwe odbywa się to poprzez delegację uprawnień na poziomie aplikacji. Niestety nie zawsze jest to możliwe i zdarzają się sytuacje, w których nie można/nie da się (lub nie jest to wygodne) wydelegować uprawnień. Wtedy zazwyczaj pojawia się konieczność wydelegowania uprawnień w ramach jakiegoś konta ‚X’ i przekazania poświadczeń tego konta do grupy użytkowników celem wykonania swoich zadań. Właśnie w tym miejscu pojawia się problem jak zrobić to dobrze aby uniknąć hardcodowania haseł w treści skryptów:

Nie tędy droga – nie idźmy nigdy tą drogą błagam Hasło czystym tekstem w skrypcie to nie jest dobry pomysł. NIGDY! Natomiast próby jego „ukrywania” czy „zaciemniania” są zawsze tylko półśrodkami. Zabieg zapisania hasła w formie:

Może i utrudnia odczytanie takiego hasła wprost, ale umówmy się że nie stanowi najmniejszego problemu aby zrobić „reverse-engeneering” i wyciągnąć hasełko Kolejnym sposobem jest wykorzystanie Secure-String. Pomysł lepszy, ale nadal to szyfrowanie jest słabe i stosunkowo prosto odczytywalne:

Wystarczy wykonać:

I już znamy hasło w postaci czystego tekstu. A dodatkowo w przypadku chęci skorzystania z zapisanych poświadczeń na innej stacji odbijemy się od komunikatów o […]

Brakujące Template’y Certyfikatów

27 sierpnia 2015 at 14:21

Po reinstalacji/wykonaniu upgrade’u/ zastąpieniu urzędu certyfikatów CA wszystkie usługi są świadczone poprawnie, ale większość szablonów certyfikatów jest niewidoczna z poziomu konsolek do zarządzania usługami. Nie pomagają restarty usług, serwerów itp. Należy wykonać polecenie:

Podając jako parametr „templatename” nazwę „zaginionego” template’u. Należy powtórzyć kolejno dla wszystkich szablonów. Po wykonaniu powyższych komend wszystkie szablony są dostępne i widoczne

Standalone CA – Pseudo-Enrolment z Powershell’a

27 marca 2015 at 11:51

W pewnym środowisku domenowym – powstała konieczność generowania certyfikatów personalnych dla użytkowników w oparciu o CA – Standalone, bez użycia AutoEnrolmentu. Po co? Dlaczego? – Biznes – tego nie zrozumiesz… 😉 Gdzie jest haczyk? Dla jednej, czy dwóch osób przeklinanie się przez dedykowany serwis IIS’owy do składania zadań certyfikatów nie stanowi problemu, natomiast przy wolumenie kilkuset/kilku tysięcy użytkowników ręczne wykonywanie ciągu akcji jest po prostu stratą czasu i mocy przerobowych. Zacznijmy może od tego jak wygląda proces wykonywany w całości ręcznie: 1. Zebranie danych o użytkowniku (Imie, nazwisko, identyfikator(samaccountname), DN….) 2. Wprowadzenie zebranych wcześniej informacji przez dedykowany serwis IIS „certsrv” 3. Wysłanie wniosku do podpisania certyfikatu 4. Podpisanie żądania 5. Pobranie podpisanego żądania z serwisu IIS 6. „Poskładanie” pfx’a złozonego z klucza publicznego i prywatnego Razy kilkaset/kilka tysięcy = masakra   Co robić? Jak ułatwić sobie zadanie? Oczywiście wykorzystując Powershell’a. W pierwszym kroku należy przygotować sobie szablon, który będzie służyć do składania wniosków. Nazwijmy go „Wzorzec.inf” :

Jeżeli nie mamy utworzonego szablonu „PseudoEnrolment” – konieczne będzie potwierdzanie informacji o jego braku przy generowaniu certów. Można tez za-komentować tą linijkę. Parametry dotyczące certyfikatu zalezą oczywiście od potrzeb OK. Co dalej z naszym plikiem wzorcowym? Przygotowujemy sobie listę identyfikatorów użytkowników (samaccountname)  […]

© Marcin Krzanowicz