23 stycznia 2022

Kolekcja skryptów Powershell

Przez wiele lat moje skrypty ułatwiające konfigurację czy też dokumentowanie organizacji serwerów Exchange wisiały w galerii Technet i mogę powiedzieć z dumą, że większość z nich było pobieranych ponad 1000 razy i doczekały się wielu pozytywnych opinii. Niestety, galeria została w zeszłym roku zamknięta, co nie oznacza jednak, że skrypty zniknęły z internetu. Przeniosłem je na swoje konto GitHub, a ostatnio nawet zacząłem je nieco odświeżać, tak żeby np. działały poprawnie z serwerami Exchange 2019.  Na tym samym koncie w trakcie pandemii pojawiły się również skrypty, pomagające zarządzać środowiskami Office 365 w edukacji, ale oczywiście można je również wykorzystać w tenantach komercyjnych.

Dla przypomnienia przedstawiam poniżej listę skryptów dla edukacji:

  1. addusersfromfile.ps1 - opisany w artykule na moim blogu
  2. bulkpasswordreset.ps1 - opisany w artykule na moim blogu
  3. zmianaDisplayName.ps1 - opisany w artykule na moim blogu
A tutaj lista skryptów dla Exchange:
  1. set-allvdirs.ps1 - skrypt ustawia wszystkie (lub tylko wybrane przez nas) wirtualne katalogi wszystkich serwerów Exchange lub tylko lokalnego oraz SCP usługi autodiscover.
  2. get-allvdirs.ps1 - sprawdza i zapisuje w pliku informacje o wszystkich wirtualnych katalogach na serwerach Exchange w organizacji.
  3. get-ExDocs.ps1 - zapisuje w plikach parametry konfiguracyjne wszystkich usług Exchange naszej organizacji.
  4. remove-oldaliases.ps1 - kasuje dla wszystkich odbiorców poczty wybrany alias
  5. reenableExServices.ps1 - W przypadku niepoprawnej instalacji poprawki Exchange, może nastąpić sytuacja, gdy usługi Exchange pozostają w stanie disabled. Skrypt naprawia taki problem.
  6. list-mobiledevsforallmailboxes.ps1 - prosty skrypt do wyświetlania listy urządzeń mobilnych, skonfigurowanych dla użytkowników Exchange.

06 stycznia 2022

Antimalware w Exchange raz jeszcze

Noworoczny problem z aktualizacją silnika Antimalware w serwerach Exchange wywołał sporo dyskusji, które pokazały mi, że nie wszyscy dobrze rozumieją tematy związane z powyższym zagadnieniem. Dodatkowe zamieszanie spowodowała wprowadzona w czerwcu 2021 integracja z AMSI systemu operacyjnego. Należy pamiętać o jednej podstawowej różnicy - starszy mechanizm poprzez agenta transportowego, skanuje pod kątem malware treść i załączniki przesyłanych maili w warstwie transportowej serwera. Integracja z AMSI pozwala poprzez moduł http proxy skanować zapisywane w skrzynce pocztowej wiadomości w trakcie zapisywania/odczytu z użyciem mechanizmów ochrony animalware działających w systemie operacyjnym i również korzystających z AMSI. Uzupełnienie szczególnie istotne dla firm, które nie mają zbyt dobrej ochrony na stacjach roboczych - dostęp do skrzynki zarówno z Outlooka jak i OWA jest dodatkowo weryfikowany.

Problemy z aktualizacjami Antimalware pojawiały się już wielokrotnie - pisałem o tym kilkukrotnie w kontekście Exchange 2013 jak i Exchange 2016. Ale powtórzę raz jeszcze kilka podstawowych kwestii.

Sam komponent od momentu dodania do systemu Exchange specjalnie się nie zmienił, jednak pomimo faktu, że jest dostępny już ponad 8 lat, to nadal część administratorów powtarza ten sam błąd. Po zainstalowaniu serwerów Exchange nie zwraca uwagi na komunikaty generowane przez usługę antimalware (systemowy log aplikacyjny serwera Windows, źródło zdarzeń - usługa FIPFS). Najczęstszym problemem, jaki spotykam, to brak aktualizacji - przeważnie spowodowany brakiem komunikacji z internetem. Warto pamiętać, że usługa Antimalware ma oddzielny moduł powershell do zarządzania i niezależną od systemu operacyjnego i Exchange definicję serwera proxy, który musimy włączyć oddzielnie:

Add-PsSnapin Microsoft.Forefront.Filtering.Management.Powershell

Set-ProxySettings -Enabled <$true | $false> -Server <Name or IP address of proxy server> -Port <TCP port of proxy server>

Więcej informacji można znaleźć w dokumentacji - Download antimalware engine and definition updates.

Jeżeli nie chcemy korzystać z aktualizacji poprzez proxy, możemy pobierać aktualizacje silnika i sygnatur antimalware skryptem update-engines.ps1, udostępnionym na stronach pomocy technicznej, a następnie wskazać usłudze inną niż domyślna ścieżkę aktualizacji. Mając pobrany skrypt oraz utworzony folder (przykładowa nazwa ScanEngineUpdates) na serwerze plikowym FileServer01, który ma służyć jako udział sieciowy do aktualizacji serwerów Exchange uruchamiamy skrypt:
Update-Engines.ps1 -EngineDirPath C:\ScanEngineUpdates\

A następnie na wszystkich serwerach Exchange korzystającym z ochrony antimalware, wywołujemy standardowy skrypt, dostarczony z systemem Exchange

& $env:ExchangeInstallPath\Scripts\Update-MalwareFilteringServer.ps1 -Identity mailbox01.pepug.org -EngineUpdatePath \\FileServer01\ScanEngineUpdates

W ten sposób również osiągniemy aktualizację silnika i sygnatur na naszych serwerach, nawet przy całkowitej blokadzie dostępu tych maszyn do internetu. Oczywiście, jeżeli chcemy, żeby przy kolejnej próbie aktualizacji serwer sięgnął do naszego udziału sieciowego, dobrze jest zmienić podstawową lokalizację aktualizacji komendą:
Set-MalwareFilteringServer mailbox01.pepug.org -PrimaryUpdatePath \\FileServer01\ScanEngineUpdates

Podsumowanie roku

 Zaczął się nowy rok, więc jak zwykle pora na małe podsumowanie.

Z jednej strony rok 2021 był dla mnie bardzo ciężki - sporo chorób w domu, wszechobecny Covid i moje własne problemy ze zdrowiem, z drugiej strony miał również sporo pozytywów - starsza córka była na Erazmusie we Włoszech (okazja do rodzinnej wycieczki) i obroniła licencjat, młodsza zdała maturę i rozpoczęła ciekawe studia.

Ja co prawda nie rozpocząłem studiów, ale realizowałem ciekawe projekty chmurowe i on-premises, nieco mniej ale jednak udało mi się napisać kilka artykułów na blogu i poprowadzić kilka warsztatów online. Zdałem 5 egzaminów (743, SC-300, SC-400, MS-500, PL-900) oraz odnowiłem dwie certyfikacje - Azure Administrator Associate i Messaging Administrator Associate). Odnowiłem również uprawnienia trenera MCT. Czyli coś się udało. I to prawie bezkosztowo (w większości przypadków wykorzystałem vouchery egzaminacyjne za udział w cloud skills challenge, organizowanych przy okazji różnych konferencji). Przeczytałem również sporo ciekawych książek, największe wrażenie wywarła na mnie chyba "Projekt Hail Mary" Andy Weira. Nie mówiąc o filmach i serialach, które również staram się śledzić. Chociaż zachwyty nad niektórymi tytułami trudno mi zrozumieć.

Nie odważę się prognozować tego co przyniesie rok 2022, jak na razie przyszłość nie wygląda różowo (kolejne fale Covid, inflacja, etc.). Ale nie chcę tu pisać o polityce. Jak śpiewał Młynarski - "Róbmy swoje".

02 stycznia 2022

Noworoczna niespodzianka dla serwerów Exchange

 Poprzedni rok dla grupy produktowej Exchange nie był dobry - słynna marcowa dziura i wiele serwerów zaatakowanych tą podatnością (pisałem o tym na blogu w marcu aż trzykrotnie - art. 1, art. 2, art. 3), później pojawiły się kolejne problemy bezpieczeństwa, choć nie tak spektakularne, konieczne do łatania prawie w każdym miesiącu. No i ciągle brak nawet słowa o kolejnej wersji systemu, mimo, że miał zostać wydany w 2021 roku.

Ten rok zaczął się od poważnego zgrzytu wkrótce po północy. Silnik animalware - pamiątka po produkcie Forcepoint Protection for Exchange, zaczął szwankować po przekręceniu się licznika na rok 2022. Na wielu serwerach Exchange 2016 i 2019 pojawił się w aplikacyjnym logu systemowym komunikat (Usługa FIPFS, EventID 1106) “The FIP-FS Scan Process failed initialization. Error: 0x80004005. Error Details: Unspecified error”, ewentualnie podobny w treści o numerze 5300, a w kolejkach transportowych zaczęły się gromadzić maile. 

Zespół produktowy zidentyfikował problem i opublikował na swoim blogu opis problemu oraz skrypt do jego rozwiązania - https://aka.ms/ResetScanEngineVersion, który tak naprawdę czyści folder z aktualną wersją silnika Antimalware. Można to zrobić również ręcznie, wykonując poniższe kroki:

  1. Zatrzymaj usługę Microsoft Filtering Management service.  Zostaniesz poproszony również o zatrzymanie Microsoft Exchange Transport service, potwierdź "Yes".
  2. Sprawdź w Task Managerze, czy updateservice.exe nie jest uruchomiony.
  3. Skasuj folder:
     %ProgramFiles%\Microsoft\Exchange Server\V15\FIP-FS\Data\Engines\amd64\Microsoft.
  4. Skasuj wszystkie pliki z folderu:
     %ProgramFiles%\Microsoft\Exchange Server\V15\FIP-FS\Data\Engines\metadata.

Teraz tylko ponowne uruchomienie usług, wymuszenie aktualizacji silnika poprzez uruchomienie skryptu z folderu standardowych skryptów Exchange Update-MalwareFilteringServer.ps1 <server FQDN> i powinno działać poprawnie. Kolejki transportowe Exchange zaczną przetwarzać się normalnie.

Ciekawe, ile firm  w poniedziałkowy poranek zauważy ze zgrozą, że ich kolejki transportowe stoją...