Firefox-Einstellungen im Unternehmen verteilen

Schon vor einiger Zeit wurde ich damit mal konfrontiert und hatte keine so richtig saubere Lösung parat. Geschweige denn eine genaue Ahnung von der Reihenfolge und über welche Settings-Dateien die zahlreichen Einstellungen des Firefox beim Start importiert und gelesen werden. Geschweige denn wie Einstellungen so mitgegeben werden können, dass sie für den Benutzer unveränderbar sind.

Zuletzt war ich auf der Suche nach der elegantesten Möglichkeit, das Stammzertifikat einer internen Zertifizierungsstelle auf die Firefox-Installationen im Unternehmen zu verteilen. Bei meinen Recherchen wurde ich hier auf ein recht neues Feature aufmerksam (ab FF 49), dass – einmal aktiviert – den Windows-Zertifikatsspeicher fragt, wenn eine SSL-verschlüsselte Seite besucht wird und falls das Root-Zertifikat nicht im Firefox-Speicher gefunden werden kann.
Auf dieser sehr netten KB-Seite der Mozzilarianer sind die einzelnen Settings-Files aufgeführt, wo sie zu finden sind und welche wann geladen werden. Wenn man nicht ganz bis ans Ende durchliest, endet man an der Stelle, dass eine user.js im Firefox-Profilverzeichnis des jeweiligen Users ein guter Ort wäre für diesen Parameter:

user_pref("security.enterprise_roots.enabled", true);

Über ein vor längerem gebautes VB-Script, das mir nun als Vorlage diente, hatte ich dann via Anmeldescript einer GPO flugs das besagte user.js auf alle Rechner  verteilt – funktionierte und alles war gut.

Allerdings sollte man (wie oben schon angedeutet) den Artikel ganz durchlesen und dann kommt man zur Stelle

Note: because of abuse of user.js preferences, support for user.js may be removed in a future version of Firefox.

Also keine wirklich gute, weil nicht unbedingt dauerhafte Idee.
Besser wäre eine Settings-Datei, die in

install_directory/browser/defaults/preferences/all-companyname.js

des Programmverzeichnisses gespeichert ist und beim Programmstart für alle User mitgelesen wird.
Das hat auch den Vorteil, dass das Firefox-Profilverzeichnis unterhalb des Windows-Benutzerprofils nicht erst umständlich aus der profiles.ini herausgeparst werden muss, damit die user.js dort hineingespeichert werden kann. Hier reicht dann sogar eine GPP (Group Policy Preference) auf Computerebene aus, um die Datei in die Programmverzeichnisse des Firefox zu verteilen.

Kleiner Fallstrick: Beim Systemstart gibt es noch keine Variable %LOGONSERVER%, daher wäre als Quellpfad \\domain.tld\netlogon\all-company.js sinnvoll. Als Zielpfad dann %ProgramFiles(x86)%\Mozilla Firefox\browser\defaults\preferences\.
Optimalerweise verteilt man das File nur auf Rechner, die auch einen Firefox installiert haben und fügt noch eine Zielgruppenadressierung auf dem Register „Gemeinsame Optionen“ der GPP hinzu:

„Wenn Datei existiert:
%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe“

Interessant sind neben änderbaren Firefox-Preferences auch die, die man fest vorgeben möchte: lockPref() anstatt user_pref() oder pref().

So long.

Die Crossfit-Sache oder: Anderthalb Jahre Nordlicht

Vor knapp anderthalb Jahren kam ich in die Crossfit-Box, weil ich vorhatte, statt der eintönigen und immer gleichen Übungsausführungen an den Geräten im Studio mal etwas Neues zu probieren.
Ich hatte immer Sport gemacht und suchte eigentlich nur einen Fitnessstudio-Ersatz, bei dem ich meine Ziele erreichen könnte – moderaten Muskelaufbau und damit verbundener Entlastung der geschundenen Kniegelenke und die Möglichkeit, mich auszupowern, denn ohne geht nicht.
Außerdem passte es mir ganz gut, eine Fitness-Location zu finden in der Gegend, in die ich dann ein paar Monate später umziehen würde. Neue Leute kennenlernen und so. Jörn als alten Schulfreund kannte ich ja schon mal. Da war der erste Schritt schnell getan.

Bei meiner ersten basic class überraschte mich die Offenheit der anderen Athleten. Ich wurde per Handschlag begrüßt und kam schnell ins Gespräch. Das ist vielleicht ein Unterschied zu manchen typischen Vereinsstrukturen. Später fiel mir noch etwas anderes besonders auf: Ich hatte von der ersten Minute an das Gefühl, respektiert zu werden. Scheinbar allein schon dafür, in die Box gekommen zu sein (und unfallfrei vor dem Whiteboard stehen zu können). Keine Überheblichkeit oder Geringschätzung von den erfahren Jungs und Mädels,  sondern anfeuern, motivieren, loben, helfen, Tipps geben. „Lass dein Ego vor der Tür“ ist ja auch eine der Regeln, die ich später auf einem Schild über der Toilette gelesen habe. Jeder hat mal klein angefangen. Alle wissen das. Jeder macht das, was er kann, seinem Leistungsstand entsprechend. Aber dennoch gemeinsam mit den anderen.

Kommen wir dazu, was ich von Crossfit habe. Liste gefällig? Bitteschön:

  • Ich stelle mich leichter neuen Herausforderungen. Es gibt kein „das kann ich nicht“ (na gut, vielleicht einen klitzekleinen Moment, hin und wieder mal). Höchstens ein „ich kann das jetzt noch nicht“.
  • Ich kann mich auspowern (oooh ja…!). Ich habe ein sehr umfassendes und abwechslungsreiches Fitnessprogramm in kurzer Zeit (keine Stunde nach meiner Ankunft in der Box bin ich bereits so im Eimer, dass ich mich frage, wie manche noch Zusatzworkouts machen können).
  • Neue Freunde und Kontakte. That’s true, no Fake News.
  • Ich ernähre mich bewusster: Crossfit muss ja nicht nur eine Fitnessmethode sein – wenn man will, ist es noch viel mehr.
  • Ich habe Spaß.
  • Ich habe einen Knall (sagen Freunde, die kein Crossfit machen und hören, was ich mir so an Workouts antue).

Jeder kann sich seine Ziele selber stecken. Ich für mich strebe keine große Crossfit-Karriere an. Ich möchte mich nur fit halten, langsam aber stetig besser werden und Spaß haben.

Ich kann noch keine double unders. Und handstand walk. Und muscle up.
Aber irgendwie schaut man viel zu selten auf das, was man schon geschafft hat: Neue Fähigkeiten, bessere Fitness, höhere Gewichte und die tolle Erfahrung, einen ganzen Haufen netter, neuer Leute kennenzulernen.

Windows 10 1607 und WSUS

Yay, noch beim 1511er anniversary update für Windows 10 war einer der kursierenden Tipps, Firmen-Rechner per GPO mit Aktivierung der Einstellung „Feature-Updates zurückstellen“ oder „defer upgrades“ in den Current branch for business zu bringen.

Diese Policy wurde allerdings mit den neuen Policy-Templates für das 1607er-Update durch eine andere Einstellung ersetzt. Wenn man eine dieser beiden Einstellungen aktiviert hat und gleichzeitig „Keine Verbindung mit Windows Update-Internetadressen herstellen“ verwendet, erhält man beim Versuch nach Updates zu suchen, den Fehler 0x8024500c. Das liegt daran, dass Windows parallel zum WSUS-Server auch direkt die Windows Update-Server fragen möchten, es aber durch die letztere Einstellung nicht darf.

Hier werden also beide Technologien (Windows Update for Business und WSUS) verwendet, was nicht sonderlich sinnvoll ist, wenn man Updates und Hotfixe immer noch zentral an einer Stelle (dem WSUS) kontrolliert freigeben möchten. Denn als Ergebnis der Verwendung von WUB (z.B. durch Aktivierung einer der beiden Schalter zum Zurückstellen von Feature-Upgrades) und WSUS bekommen die PCs auch Updates angeboten, die nicht vom WSUS stammen, sondern direkt von den Windows Update-Servern.

Ähnliche Erkenntnisse sind auch hier zu finden und im Kommentar habe ich das auch nochmal versucht, zusammenzufassen.

Das Wiki: http://www.borncity.com/blog/wikis/windows-10-v-1607-wikifaq/

Windows 10 und Family Safety

Ganz nach dem Motto Schema unfertiger Komponenten läuft Family Safety, wenn man es unter Windows 8 für seine Kinder konfiguriert hatte, nicht mehr unter Windows 10 weiter, da die Benutzerkonten der Kids nun als Microsoft-Konten konfiguriert werden müssen…

Das allerdings hat bei mir anfangs überhaupt nicht gut funktioniert, denn nach dem Anlegen der Konten kamen die invitation-Mails nicht an und ich musste mehrere Male das komplette Prozedere wiederholen. Auf der Family Safety-Seite von Microsoft kann man dann allerdings auch nur bedingt sinnvolle Einschränkungen – z.B. beim Zeitfenster – vornehmen. Da fehlt noch einiges, würde ich sagen…

Ich kann mir nicht vorstellen, dass sich damit jemand Ungeübtes auseinandersetzen soll.

Sicheres W-LAN mit IEEE 802.1X und NPS-RADIUS mit Windows Server 2012

Guter Leitfaden, auch bei einem notwendigem Umzug, bei mir gerade Umzug von IAS 2003 nach NPS 2012.

Update: Sicheres W-LAN mit IEEE 802.1X und RADIUS mit Windows Server 2012 » Bents Blog » Von Bent Schrader.

Hinzuzufügen wäre nur folgendes:
Aufgrund der EAP (PEAP)-Implementierung kann man nur gegen ein Zertifikat zur Zeit validieren. D.h. entweder gegen Computerkonten ODER Benutzerkonten der Domäne, nicht beides in der Bedingungssteuerung der WLAN-Netzwerkrichtlinie des NPS. Um z.B. BYOD-Geräte zu verhindern, deren Nutzer sich mit ihrem gültigen Domänenbenutzer an diesen Geräten erfolgreich authentifizieren können, wäre wohl die Filterung auf Computer geeigneter.
Zu beachten war bei mir aber, dass in der GPO, die die Drahtlosnetzwerkrichtlinie konfiguriert, an einer Stelle angepasst werden muss, damit die NPS-Bedingung auch zuverlässig mit dem übereinstimmt, was dort ankommt.
Im Dropdown der Drahtlosnetzwerkrichtlinie, dort wo festgelegt wird, ob die Authentifizierung gegen Benutzer, Computer oder wahlweise eines von beiden erfolgen soll, sollte NUR Computer ausgewählt werden. Ansonsten versuchte sich der Client immer zunächst mit den Benutzer-Credentials anzumelden, obwohl in der NPS-Richtlinie eine Computergruppe als Bedingung angegeben war. Das klappte dann nicht.

Cyanogenmod 11 – läuft!

Zugegeben – meine Schmerzgrenze ist relativ hoch. Und so kam es, dass ich monatelang dem immer langsamer werdenden Reaktionen meines Galaxy S3 zuschaute, bisweilen mit leicht grimmigen Gesichtsausdruck und wachsender Ungeduld.

Ich bin in manchen Dingen auch ein Konservativling. So finde ich zum Beispiel, dass die Telefoniefunktion immer noch die Wichtigste ist und wenn ich mal jemanden anrufen will, dann muss es schnell gehen. Wenn aber diese Funktion auch nur eine App von vielen ist und es im Schnitt jeweils 2 Sekunden dauert, bis das Adressbuch geöffnet, der Kontakt und die richtige Telefonnummer ausgewählt ist und erneute 2-3 Sekunden verstreichen, bis dann endlich die Rufnummer gewählt wird, war mir das einfach zu viel.

Tja und dann ging mir die Bloatware auf den Senkel. Angefangen über Samsung-Kram hin zu Google-Apps. Außerdem konnte ich mit einem ungerooteten Gerät kein richtiges Backup durchführen – also als Nandroid-Image oder eben mit Tools wie z.B. Titanium-Backup.

Drum liebäugelte ich mit einem CustomRom wie Cyanogenmod. Dran gehindert hat mich die letzten Monate eigentlich nur die Tatsache, dass es eine komplette Neuinstallation des Betriebssystems ist und ich mich anfangs nicht damit beschäftigen wollte, wie ich wohl die Daten wie Bilder, Apps, Settings, Kontakte und Anrufhistorien sichern und dann wiederherstellen könnte. Naja, ich dachte, es wäre sicher zeitaufwendig. Außerdem war das Gerät ja noch nicht so alt.

Aber – es war gar nicht so schlimm! 🙂
Am Anfang rooten des Geräts (aber vorher lesen und verstehen), dann Daten sichern (Kontakte, Kalender dabei in der Cloud gespeichert – macht’s einfacher), Cyanogenmod installieren, gesicherte Apps (möglichst keine Systemapps!) wieder zurückspielen, einrichten – fertig. Gut, waren im Endeffekt 4-8 Stunden, die man mal investieren muss. Zuzüglich nochmal 1-2 Tage Kleinkram-Konfigurationen. Aber es lohnt sich, wie ich finde.
Als zusätzlichen AppStore habe ich F-Droid genommen, OpenSource ist schon cool. Ach – das Theme „Great Freedom“ sieht nicht nur gut aus, sondern passt auch vom Motto her ganz gut zum Endergebnis. 😉

Alles in Allem – richtig gut!

Exchange 2010 – aktuelle Anmeldungen herausfinden

Manoman…nicht alles wird einfacher mit neueren Versionen. Möchte man gern sehen, welche Benutzer sich innerhalb der letzten Stunde am Exchange-Server angemeldet haben, hilft folgendes, übersichtliches CmdLet:

Get-Mailbox -Resultsize Unlimited | Get-MailboxStatistics | where-object {$_.LastLogonTime -gt (get-date).AddHours(-1)} | select Displayname, LastLogonTime | Sort LastLogonTime

Oder folgendes:

Get-LogonStatistics -Server „SERVERNAME“ | Sort-Object -property UserName -unique | where-object {$_.LastAccessTime -gt (get-date).AddMinutes(-30)}

Aber Achtung – OWA-Zugriffe werden hier nicht angezeigt.

MS Exchange 2010 – Backup mit der Windows Server-Sicherung und Powershell

Soll ein Exchange-Server gesichert werden, passiert das in der Regel z.B. so, dass man ihn mit einem Backup-Agent der zentralen Backuplösung versorgt, den Backupjob anlegt und ein paar Konfigurationen vornimmt.
Hat man diese zentrale Backuplösung nicht, kann man die integrierte Windows Server-Sicherung ab Server 2008 nutzen. Zumindest ab Exchange 2007 SP2, denn erst hier kam das VSS-Plugin (Volume Shadow Copy Service / Schattenkopien) für die Windows Server-Sicherung mit hinzu.
Wie man dann einen zeitgesteuerten Backupjob zusammenklickt, so dass Datenbanken und Logs gesichert werden, findet man schnell im Netz. Das Ergebnis ist dann aber ein Haufen von Dateien und mehreren Verzeichnissen – nicht mehr, so wie vormals, einzelne, .bkf-Dateien.
Wir müssen also noch komprimieren, packen und auf einen Backupserver kopieren. Im Fehlerfall möchten wir natürlich eine Benachrichtigung per E-Mail und ein Logfile. Außerdem soll das Backup der letzten 7 Tage in ein jeweiliges Wochentagsverzeichnis gespeichert werden. Zunächst lokal und dann in eine Freigabe eines Backupservers mit gleicher Ordnerstruktur.
Und da es noch ein paar andere Dinge gibt, die es zu beachten gilt, habe ich mir ein Powershell-Script für das Ganze geschrieben. Damit hat man ein tägliches .zip-File, das das Backup in ein jeweiliges Wochentagsverzeichnis kopiert. Im Fehlerfall (und wenn man möchte, auch im Erfolgsfall), wird man per Mail incl. Logfile benachrichtigt.

Um ZIPpen zu könnnen, habe ich mich für 7-Zip entschieden, was vorher installiert sein muss. Das packen ist Out-Of-The-Box bei der Powershell nur mit einer etwas längeren Codepassage möglich – und das Script ist so schon lang genug ;-). Ansonsten müssten nur die Pfade und ein paar Konstanten angepasst werden, dann sollte es laufen. Achtung wegen Zeilenumbrüchen. Ach ja – es wurde bei mir getestet mit Server 2008 R2 und Exchange-Server 2010 SP3 RU1.

Hier der direkte Download als ZIP: Exchange-daily-backup-official_v13

Update:
Im ZIP-File befindet sich auch eine Textdatei „diskshadow_script.txt“, in der der Laufwerksbuchstabe angepasst werden muss, auf der die Schattenkopien nach erfolgtem Backup aufgeräumt werden sollen. Das entspricht normalerweise der Backuplocation im Kopf des Backupscriptes.
Die Datei muss im selben Verzeichnis liegen, wie das Backup-Script.