Rss

  • youtube
  • google

Freenas 11 – Fix „Boot failed efi misc device“

In einer frisch angelegten Ubuntu 16.04.4 VM unter der bhyve Virtualisierungsplattform in Freenas hatte ich das Problem, dass die VM nicht korrekt unter UEFI bootete.
Bei jedem Neustart hing die Maschine im EFI und zeigte: „boot failed efi misc device“ an. Wie sich im Freenas Forum herausstellte, ist man nicht der einzige mit dem Problem.

Im Efi selbst kann man dann zwar via „exit“ in in den „Boot Maintenance Manager“ gelangen und unter „Boot File“ auch die grubx64.efi zum Starten auswählen. Allerdings ist das Prozedere beim nächsten Neustart wieder notwendig.

Was ist die Ursache?
Warum auch immer wird der Bootloader unter folgendem Pfad vermutet:

 root@ubuntu:/boot/efi# ls /boot/efi/EFI/BOOT/bootx64.efi
/boot/efi/EFI/BOOT/bootx64.efi

Dies war bei mir nicht der Fall, also musste ich den BOOT Ordner anlegen und kopierte die grubx64.efi als bootx64.efi in das Verzeichnis, sodass es wie folgt aussieht:

mkdir /boot/efi/EFI/BOOT
cp /boot/efi/ubuntu/grubx64.efi /boot/efi/EFI/BOOT/bootx64.efi

root@ubuntu:/boot/efi# tree -L 3 .
.
└── EFI
├── BOOT
│   └── bootx64.efi
└── ubuntu
├── grub.cfg
├── grubx64.efi
├── mmx64.efi
└── shimx64.efi

3 directories, 5 files

Anschließend die VM neustarten um zu prüfen ob alles korrekt funktioniert hat.

HAProxy vor Squid Proxy – Client IP-Adressen weiterleiten

Verwendet man einen Loadbalancer wie z.B. HAProxy um Webzugriffe von Clients auf mehrere Squid Proxy Server zu verteilen, sieht es im access.log des Squid Proxy so aus, als kämen die Zugriffe alle vom HAProxy nicht vom eigentlichen Client. Da das HTTP Forwarding des HAProxy auf Applikationsebene basiert, ist dieses Verhalten korrekt. Wenn man TCP Offloading machen würde, wäre dies wahrscheinlich nicht der Fall.

Um beim HTTP Forwarding dennoch die originale Client-IP im Squid access.log zu sehen, kann man diese über den HTTP Header X-Forwarded-For (Beschreibung) weiterleiten.

In Squid kommen die Requests alle von der IP-Adresse des HAProxy:

In HAProxy müssen die folgenden beiden Optionen gesetzt werden. Diese setzen den Header „X-Forwarded-For“ auf die Client IP-Adresse. Dadurch wird die eigentliche Client IP im Header mitgegeben:

Der Squid Proxy registriert den veränderten Header, verwirft ihn aber aus Sicherheitsgründen standardmäßig – sofern nicht anderweitig konfiguriert. Also muss in der Konfiguration des Squid der QuellIP des HAProxy vertraut werden. Dies wird dementsprechend über eine acl in der squid.conf angepasst:

Abschließend den Squid neustarten und den Webzugriff über ein Client testen. Wie man nun im access.log sieht, ist die Client-IP jetzt korrekt weitergeleitet.

Exchange 2016 – Enable & Troubleshoot Certificate Based Authentication for OWA/Active Sync

Um die zertifikatsbasierte Authentifizierung des Exchange 2016 zu aktivieren empfehle ich, sich an folgenden Technet-Artikel zu halten. Dieser beschreibt die Konfiguration schritt für schritt.

Der anschließende Test war jedoch wenig erfolgreich und brachte auf den Client Geräten immer den Fehler „Anmeldung fehlgeschlagen“. Die Analyse des IIS Logfiles bestätigte in dem Fall die Fehlermeldung:

Da der Microsoft Exchange Health Manager (+ Recovery) durchgängig Testaufrufe machen, wird das IIS Logfile schnell unübersichtlich gefüllt. Daher hatte ich einfach eine neue Site im IIS Manager erstellt und dort unter einem anderem Port Binding die Authentifizierung via Client Zertifikate getestet. (Unterer Logeintrag) Man kann aber auch den Health Manager Dienst temporär deaktivieren, dass funktioniert auch.

Zurück zur Fehlermeldung, welche im Detail wie folgt aussieht:

  • 403 = HTTP Statuscode (Authentication Failed)
  • 16 = Subfehler (Client certificate is untrusted or invalid.)
  • 2148204809 = Detaillierter Fehlercode (0x800b0109 CERT_E_UNTRUSTEDROOT)

Sucht man nach der Fehlermeldung findet man folgenden Technet-Artikel, der eigentlich auf den IIS 8 bezogen ist. Windows Server verwendet IIS 10 – aber der Artikel trifft auch darauf zu.
Hintergrund: Seit Windows Server 2012 wurden strengere Überprüfungen für die zertifikatsbasierte Authentifizierung eingeführt. Einer dieser Checks prüft ob sich im Zertifikatsspeicher (Trusted Root Certification Authorities) auch wirklich nur sogenannte Root-Zertifikate befinden. Ein Root Zertifikat muss logischerweise immer selbst-signiert sein. Wenn sich dort ein Zertifikat befindet, was von einer anderen Zertifikatstelle ausgestellt wurde, ist dies eigentlich ein „Zwischenzertifikat / Intermediate“ und gehört an einen anderen Zertifikatsspeicherort.

In meinem Fall befand sich das „StartCom Class 3 OV Server CA“ in den Root-CA’s welches den Fehler produzierte. Um den Fehler zu beheben, müssen alle nicht selbst-signierten Zertifikate aus dem Root-CA entfernt bzw. zu den Zwischenzerifikaten verschoben werden.

Um bei der Vielzahl von Zertifikaten nicht alle händisch zu überprüfen kann man dies per Powershell identifizieren:

Um die Zertifikate anschließend in den Speicher für „Intermediate Certification Authorities“ zu verschieben kann man folgenden Befehl nutzen:

Anschließend den kompletten Server neustarten. Eventuell reicht auch nur ein Neustart des IIS (W3SVC). Hatte in meinem Fall jedoch nicht ausgereicht.

Winbuilder (Win10PE) hinter Proxy benutzen

Wer sich selbst ein Windows PE erstellen will, kommt um den WindowsBuilder nicht herum. Ein Tool aus der Sammlung, nämlich GetWaikTools (GWT.exe) lädt die Windows Imaging Features (ADK, Dism etc.) herunter und benötigt daher Internetzugriff. Wer hinter einem Proxy sitzt, bekommt hier eine Fehlermeldung und muss den Proxy von Hand konfigurieren.

Das Tool verwendet Curl als Downloader, für den über die Umgebungsvariablen ein Proxy eingerichtet werden kann:

Anschließend funktioniert die Verbindung über den Proxyserver 😉

Windows 10 – Standarddrucker verwalten

Ihr wundert euch warum euer Standard Drucker immer wechselt? Ein neues „Feature“ in Windows 10 setzt den aktuellen Standarddrucker immer auf den zuletzt benutzten Drucker.
Hierbei wird auch berücksichtigt, an welchem Standort sich das Gerät im Moment befindet. Sprich zuhause wird der Heimdrucker automatisch als Standard ausgewählt und im Büro ein anderer.
Das kann ganz praktisch sein, stört aber vielleicht auch. Daher beschreibe ich hier kurz wie ihr die Funktion „Windows verwaltet Standarddrucker“ entweder per Hand oder via Gruppenrichtlinie / Registry deaktivieren könnt.

Von Hand

  1. Öffnet die Einstellungen von Windows 10 (z.B. Windows Taste + i)
  2. Navigiere zu Geräte und anschließend Drucker & Scanner
  3. Entferne den Haken bei „Windows verwaltet Standarddrucker“

Per Registry

  1. Navigiere zu folgendem Pfad:
  2. Ändere den Wert „LegacyDefaultPrinterMode“ (DWORD) auf 1 ab.

 

Per Gruppenrichtlinie

Per GPO findet ihr die Option „Turn off Windows default printer management“ unter:

Redis Memcache für Owncloud / Nextcloud unter Ubuntu einrichten

Um die Geschwindigkeit der eigenen Owncloud bzw. Nextcloud Installation mithilfe eines Cache aufzubessern gibt es mehrere Techniken die eingesetzt werden können. Hier beschreibe ich kurz wie man Redis einsetzt. Als Betriebssystem wurde ein Ubuntu 17.04 sowie Nextcloud 12.0.3 eingesetzt.

  1. Redis und Modul für PHP installieren
  2. Redis Konfigurieren
    Redis kann entweder über auf einem eigenem Server installiert werden und per IP/Port (6379) angesprochen werden oder aber direkt auf dem gleichen System wie eure Owncloud. In dem Fall bietet sich an die Kommunikation über ein unix Socket einzustellen. Hier folgenden Bereich auskommentieren und die Berechtigungen 770 setzen.

  3. Apache Benutzer der Redis Gruppe hinzufügen
    Damit nun das PHP-Modul auch auf das unix Socket zugreifen kann, müssen wir den Benutzer des Webservers in die Gruppe „redis“ aufnehmen.

    Unter Ubuntu ist dies für apache2 der Benutzer: www-data.
  4. Owncloud/Nextcloud config.php anpassen
    In der Config fügen wir nun folgende Zeilen ein, damit auch Redis als Caching Software verwendet wird.

  5. Dienste neustarten
    Schlussendlich nochmal den Redis-Server sowie Apache2 neustarten, damit auch alle Änderungen aktiv werden.

Mögliche Fehler:

Am Anfang hatte ich noch folgenden Fehler, welcher aber auf die fehlende Gruppenzugehörigkeit zurückzuführen war:

Schaut man genau ins error.log sieht man, dass es ein Berechtigungsfehler ist und hier bei Punkt 2 und 3 nochmal angesetzt werden sollte.

Freenas 11 – Virtuelle Maschine stoppen (cli)

Die aktuelle Version von Freenas 11.0 (Stable) setzt auf die Virtualisierungsumgebung byvhe, welche zumindest was die Web-Oberfläche angeht, noch nicht wirklich ausgereift ist.

Derzeit existiert noch das Problem, dass in manchen Fällen die Virtuelle Maschine nicht über die GUI gestoppt werden kann.

Sollte dass der Fall sein, kann man den Prozess zumindest über die Konsole beenden.

Schritt 1: Prozessliste ausgeben

Sucht hier nach dem Namen eurer VM und notiert euch die PID. In meinem Fall heißt die Maschine schlicht „Windows“ und die PID ist „15133“.

Schritt 2: Prozess beenden

Anschließend ist die VM hart beendet worden und ihr könnt diese auch wieder starten.

GPO – Fix: Encountered an error while parsing

Mit dem Update der aktuellen Windows 10 ADMX Tempaltes für das Creators Update (1703) bin ich bei uns im Group Policy Editor auf folgende Fehlermeldungen bei älteren GPO’s gestoßen:

Die gleiche Fehlermeldung kam ebenfalls nochmal für WinStoreUI:

Problem:
Eine kurze Recherche ergab, dass Microsoft die Templates „WinStoreUI.admx“ in „WinStoreUI.admx“ bzw. „LocationProviderAdm.admx“ in „microsoft-windows-geolocation-wlpadm.admx“ umbenannt hat.
In der Regel werden die ADMX Dateien automatisch bei einem Update überschrieben. In diesem Fall kommt jedoch das neuere File dazu.
Aus diesem Grund gibt 2 admx Dateien mit den gleichen Namespaces, weswegen die Fehlermeldung erscheint.

Lösung:
Die alten ADMX Dateien (WinStoreUI.admx und LocationProviderAdm.admx) können samt der Language Files gelöscht werden. Die neuen ADMX Templates sind mit allen Einstellungen Abwärtskompatibel.

Windows 2008/2012/2016 – DFS Replikation wiederherstellen

Wird der Domaincontroller z.B. durch einen Stromausfall unsauber heruntergefahren, kann es passieren dass die DFS-Replikation anschließend nicht mehr korrekt funktioniert. In dem Fall tauchen im Eventlog Fehlermeldungen mit den ID’s: 6012, 1204, 2203 oder 4012 auf, die das bestätigen.

Wenn die Replikation nicht mehr funktioniert, wird das SYSVOL Verzeichnis nicht mit anderen Domain Controllern synchronisiert. Es werden also keine Gruppenrichtlinen oder Startskripte synchronisiert/aktualisiert.

Die Fehlermeldungen im Detail:

Als erstes kann man folgende Schritte unternehmen um die Replikation zu überprüfen. In meinem Fall handelt es sich um mehrere Domaincontroller, es geht also um das SYSVOL Verzeichnis. (Quelle: Technet)

Anschließend kann man sich den Status der DFS Replikation ausgeben lassen:

Die Statuscodes haben folgende Bedeutung:

Vorher eine Sicherung des geteilten Ordners machen! Also in meinem Fall: C:\Windows\SYSVOL. Bei der Wiederherstellung kann es vorkommen, dass die Inhalte der Freigabe verloren gehen.

Nun geht es an die Wiederherstellung der Replikation. Bei mehreren DC’s oder bei neu hinzugefügten DC’s kann es sein, dass das SYSVOL Verzeichnis noch nie synchronisiert wurde und daher leer ist bzw. gar nicht existiert. Daher die folgenden Schritte auf dem „primären“ DC ausführen, von dem aus der Sync erfolgen soll.

Schritt 1: Replikation fortsetzen

Aus der 2. Fehlermeldung von oben ergibt sich, dass die Replikation gestoppt ist. Diese müssen wir wieder fortsetzen. Der passende Befehl dazu findet sich zum Glück direkt im Eventlog.

Im Eventlog finden sich jetzt weitere Einträge, dass die Replikation zwar fortgesetzt wird – jedoch nicht funktioniert, da der Partner immer noch zulange offline war.

Schritt 2: MaxOfflineTimeInDays hochsetzen

Die Lifetime also den Wert „MaxOfflineTimeinDays“ können wir mit folgenden Befehl für alle DC’s überprüfen:

Dieser wird jetzt auf eine Anzahl Tage gesetzt die höher ist, als die im Eventlog vermerkte Anzahl. In meinem Fall wäre das dann 220. Der Befehl muss auf allen DC’s mit dem Fehler ausgeführt werden.

Damit die Änderung des Wertes greift muss jeweils noch der Dienst „DFS Replication“ (DFSR) neugestartet werden.

Ab jetzt sollte die Replikation wieder korrekt durchlaufen. Dies kann man über das Eventlog weiter verfolgen.

Schritt 3: MaxOfflineTimeInDays  – back to default

Wenn die Replikation abgeschlossen wurde sollte der Wert „MaxOfflineTimeInDays“ – wie in Schritt 2 – wieder auf den Standard von 60 Tagen zurückgesetzt werden.