Práce pro Logicworks

Hromadná správa Apple zařízení

MDM

Dnešní správa Apple zařízení se točí kolem MDM řešení a Apple Bussiness Manager portálu. Pro zákazníky řešíme především produkty VMware Workspace ONE, SimpleMDM a Jamf Pro zejména kvůli jejich použití pro macOS. Potkal jsem i méně progresivní řešení jako Microsoft Intune, Mobile iron, Hexnode. Nelze zapomenou na spíš nechvalně známý Profile Manager od Applu.

Pro jednoho z klientů jsem zpracoval podrobnou srovnávací studii, kdy jsem proti s sobe postavil VMware Workspace ONE, Jamf Pro a Microsoft Intune.

VMware Workspace ONE UEM sice obsahuje nástroj Munki, ale pro některé zákazníky je praktičtější provozovat Muni samostatně. Pro zákazníky jsem napsal synchronizační nástroj wso-munki-manifest-sync, který pomocí API z WSO zjistí vazby mezi počítači, skupinami a uživateli a promítne je do struktury manifest souborů v Munki repozitáři.

Automated Device Enrollment

Automated Device Enrollment (dříve spíše známe pod akronymem DEP – Device Enrollment Program) je zlatým grálem deploymentu Apple zařízení poslední doby. Uživatelé vybalí nový Mac, iPad nebo iPhone z krabice a ten se sám automaticky zapojí do firemní správy, která zajistí vše potřebné. Kombinace ADE a MDM je v celku přímočará záležitost. Ne však nutně v případě macOS.

Jelikož Macy lze hromadně spravovat i jinými nástroji než MDM a celkově nabízejí vyšší flexibilitu přizpůsobení na míru situaci, může být v jistých případech potřeba, aby během ADE procesu došlo k instalaci dalších nástrojů. Konceptu se občas říká custom DEP a celý je podstaven na digitálně podepsaném balíčku poslaného z MDM na klienta. jeho obsahem může být cokoliv, co na Macu spustíte.

Velmi populární nástroj installapplications zajistí se strany serveru jednoznačně definovaný sekvenční pořadí kroků, které se na klientu vykonají. Komunikaci s uživatelem lze řešit pomocí oken nebo notifikací nastavených skrz DEPNotify. Součástí procesu může být také například onboarding průvodce Octory.

Open source nástroje

Pro efektivní správu macOS schopnosti MDM ne vždy stačí nebo nemusí být nejlepším řešením pro všechny úkony.

V Logicworks provozuji Munki infrastrukturu pro naše zákazníky. Soubory jsou poskytována pomocí webserveru z více uzlů, vzájemně synchronizovaných nástrojem unison. Klienti vybírají uzel pomocí DNS load balancingu. Spojení je vždy zabezpečené pomocí TLS 1.2/1.3. Munki repozitář sdílený mezi více zákazníky vyžaduje oddělení některých souborů na úrovni webserveru, což zajišťuje autentizací. Stahování souborů může být podstatně urychleno použitím cache webserverů v lokálních sítích zákazníků a HTTP přesměrování. Úpravy repozitáře probíhají po síti z virtualizovaného macOS, který k datům přistupuje skrz šifrovaný protokol SMB3 (Samba).

O automatické stahování nejnovějších verzí instalačních balíčků software se stará AutoPkg. Ten běží jednou za den a změny hlásí emailem i do firemního Slack kanálu. Velkou část receptů v mém autopkg repozitáři MichalMMac-recipes jsem vytvořil pro použití v Logicworks.

Instalační balíčky pro macOS vytváříme převážně nástrojem munki-pkg. Naši technici používají instalační balíčky pro zapojení Maců do Munki u klientů, kteří nemají MDM. Aby dostali digitálně podepsaný a hlavně notarizovaný balíček, rozšířil jsem munki-pkg o schopnost notarizace. Kvůli požadavkům na notarizaci došlo i na podepisování Pythonu 3, který je přibalen k Munki, naším vývojářským certifikátem.

Macy monitorujeme webovou aplikací MunkiReport, kterou v našich produktech najdete pod označením Sensei MacReport. Po kolegovi jsem převzal a zásadně předělal skript munkireport-parser, který skrz API aplikace zjišťuje problémové zařízení, jejichž seznam je zasílán technikům.

V případě potřeby využívat v macOS funce Active Directory doporučujeme volnou integraci. Té docílíme buď nástrojem NoMAD nebo v novější macOS SSO doplňkem přímo v systému. Obě možnosti mají své přednosti.

Další Apple služby

Pro Logicworks jsem nasadil službu Content Caching poskytující často stahovaný obsah z Apple CDN lokálně z Macu, na kterém běží. Na první pohled se může zdát, že na tom přece nic nyní, když stačí zapnout jeden přepínač. Ve složitější síti však Content Caching vyžaduje o něco více péče.

Dokud nepřišla pandemie, provozovala firma vcelku úspěšně půjčovnu iPadů. Pro jejich snadnou přípravu jsem připravil iMac s Apple Configurator 2, s nímž se iPady mazaly, aktualizovaly a zapojovaly do MDM skrz Automated Device Management.

Linuxová infrastruktura

Na začátku jsem zdědil starou infrastrukturu hostující weby a maily využívající OS X Server. Tu bylo nutné nahradit něčím novějším. Část funkcionality převzaly služby v cloudu (mail), ale některé jsme si ponechali (webhosting). Navázal jsem na předchozí spolupráci s Vojtou Myslivcem, který se zásadní mírou podílel na zprovoznění webhostingu a mailserveru.

Config Management

Naprostá většina věcí, které v naší infrastruktuře děláme, je vykonána pomocí Ansible config management systému. Jsem zastánci filosofie infrastructure as code a počet ad-hoc úkonů se snažíme udržet na minimu. Kód je verzován v gitem a diskutován v interním GitLabu.

VPN

eden z našich posledních projektů spočívá ve vytvoření vlastní IKEv2 IPSec infrastruktury postavené na nástroji Strongswan. Využíváme IPsec tunely k propojení firemních sítí se sítěmi některých zákazníků. Servery navazují šifrovaná spojení dynamicky podle potřeby. Rovněž je implementovaný automatický failover na záložní server v případě výpadku nebo údržby primárního.

Konečně můžeme nahradit zastaralé OpenVPN řešení za podstatně lepší IKEv2 IPSec. VPN je navržena pro split-tunnel a split-dns režim. Na zařízeních VPN konfigurujeme za pomoci MDM, což nám dává další možnosti jako například automatické navazování spojení (on-demand).

Monitoring

Pro potřeby rozvíjející se infrastruktury jsem nasadil monitorovací systém Icinga 2. Nejprve v režimu jednoho uzlu, který se připojuje na dozorované systémy pomocí SSH. Později byl systém předělán na distribuovaný model, kdy na každém uzlu běží Icinga 2 služba a probíhá komunikace v tříúrovňovém modelu master <-> satellite <-> client.

Stavy sledovaných uzlů a služeb je možné administrovat ve webovém rozhraní Icinga Web 2. Výkonostní data jsou ukládány do databáze influxDB, odkud je do dashboardů načítá Grafana.

Systém monitorování byl později nasazen v druhé instanci i do síti našich klientů. Server v roli satellite kontroluje zejména pomocí SNMPv3 stav všemožných síťových prvků a serverů. Pro potřeby monitoringu udržuji vlastní sadu skriptů monitoring-scripts-logicworks.

DNS

V lokálních sítích používáme DNS server BIND 9 ve funkcích autoritativního serveru poskytující místní zóny a resolveru pro klienty. Zóny se automaticky replikují na záložní server a v některých případech je pro ně použit ACL.

Aplikace

Pro praktické použití máme nasazeno vícero webových aplikací. Některé jsou zmíněny v jiných sekcích, protože úzce souvisí s nějakým systém. Mezi ty samostatnější patří:

  • NetBox – dokumentace sítí z pohledu propojení prvků a adresace. Pro aplikaci jsme nasadili databáze PostreSQL a Redis. Dokumentujeme interní a zákaznické sítě.
  • Snipe-IT – inventarizace firemních zařízení. Rovněž nabízíme jako službu pro zákazníky pod názvem Sensei Inventory.
  • GitLab – spolupráce nad neveřejnými git repozitáři.
  • Wiki.js -wiki pro dokumentaci. Nyní ve fázi testování. Pro použitelnější vyhledávací schopnosti jsem nasadil Elasticsearch.

Identita

Centralizovanou správu účtů a jejich autentizaci zajišťuje OpenLDAP v HA režimu. Pro snažší obsluhu LDAP databáze používáme webovou aplikacei FusionDirectory.

S LDAP máme propojeny všechny interní aplikace a i některé cloudové. V plánu je nasadit SAML endpoint pro poskytnutí přihlašovací brány cloudovým aplikacím a zredukovat počet firemních uživatelských účtu na minimum.

Backup

Data musí být zálohována. Začal jsem se staršími serverem, externím diskovým polem a nástrojem rsnapshot. Jenže s potřebou zálohovat data zákazníků se ukázalo, že diskové pole nedostačuje.

Pro druhou verzi backup serveru jsme zvolili Linuxový RAID6, souborový systém btrfs a jeho snapshoty. O implementaci se postaral Vojta Myslivec, který následně řešil i jeden nepěkný bug.

Webhosting

Našim zákazníkům nabízíme hosting webů v režimu sdílený hosting a spravovaný virtuál (VPS). Vše začíná u klasického Apache webserveru, avšak dbáme na podporu moderních technologií jako HTTP/2 a TLS 1.3. Automatizované nasazení Let’s Encrypt certifikátů je samozřejmost, kterou provozujeme již několik let.

PHP provozujeme pod PHP-FPM, což nám umožňuje oddělit běžící procesy pod jednotlivé uživatele a zároveň škálovat vytížení dle potřeby. Podporujeme verze 5.6 až 8.0, ale 5.6 již brzy pošleme do křemíkového nebo.

File systém sdíleného webhostingu je omezen kvótami pro uživatele. Přístupová práva se opírají o pokročilejší ACL a PHP kód rozhodně nemůže upravovat libovolné soubory. Odesílání emailu je omezeno rate limitem a v případě nepotřebnosti lze zcela zakázat. Vzdálený přístup k souborům poskytujeme pouze zabezpečenými protokoly SFTP a FTPS. Samozřejmostí je přístup k databázi přes spravovaný Adminer a na vyžádání také phpMyAdmin.

Mailserver

Několik let jsem pomáhal řešit provoz OS X Server s klasickou sadou mailových komponent: postfix, dovecot, amavis, SpamAssassin, ClamAV a Roundcube.

V původním plánu bylo postavit podobnou kombinaci na Linuxu, ale ukázalo se, že věčný boj se spamem a doručitelností je něco, co rádi přenecháme jiným. Na nové infrastruktuře provozujme mail servery zejména pro interní potřeby.

Virtualizace

Naším oblíbeným Linuxem je Debian 10 Buster. Většinou běží pod Linuxovou virtualizací KVM. V menší míře používáme i LXC kontejnery.

Pro efektivnější využití hardwarových prostředků využíváme VMware ESXi běžící na Apple hardware. Díky tomu můžeme virtualizovat macOS.

Servery

Provozujme vícero fyzických serverů. Prakticky v každém najdete rychlá SSD minimálně nejen pro běh systému. RAID preferujeme softwarový v různých variantách MD raidu dle potřeby storage.

Ostatní projekty

Nová síť

Pro nové prostory kanceláře jsem navrhl a implementoval lokální síť. Ethernet je zabezpečen 802.1X stejně jako Wi-Fi WPA-2 Enterprise. Uživatelé se autentizují proti místnímu RADIUS serveru a následně je switch či AP zařadí do odpovídající VLANy. Síťovou konfiguraci samozřejmě klientům dodá MDM.

Aplikace pro Freshdesk

Nastala potřeba exportovat servisní listy v PDF z ticketů v našem Freshdesk ticketingu. V JavaScriptu jsem naprogramoval Freshdesk aplikace, která pomocí Freshdesk API zjistila potřebné údaje ticketu a následně vygeneroval PDF za použití knihovny jsPDF.

NetBoot server

Boot přes síť na moderním Macu již bohužel nenajdete. V Roce 2016 to však stále by aktuální technologie. Pro naše techniky jsem připravit NetBoot server, díky kterému mohli nastartovat Macy přes sít a:

  • Nainstalovat všechny podporované verze macOS pro daný počítač (NetInstall)
  • V prostředí plného systému spouštět aplikace (NetBoot)
  • Spustit jeden z mnoha diagnostických Apple systémů pro daný počítač (ASD, MRI).
  • Provést obnovení obrazu disku v síťovém prostředí DeployStudio.