Cloudflare und Piwik: Anzeige Origin IP

Will man Piwik auf einem Server nutzen, der sich hinter Cloudflare befindet, müssen folgende zwei Dinge beachtet werden:

Apache: Installation von mod_cloudflare

Das Modul mod_cloudflare erlaubt es, die echte IP Adresse des Besuchers in Logs und co. anzuzeigen.

Heruntergeladen werden kann das Modul bei Cloudflare.

Ubuntu:

wget https://www.cloudflare.com/static/misc/mod_cloudflare/ubuntu/mod_cloudflare-xenial-amd64.latest.deb

dpkg -i mod_cloudflare-xenial-amd64.latest.deb

service apache2 restart

Rocket Loader deaktivieren

In den Cloudflare Einstellungen muss unter den Performance Einstellungen der Rocket Loader auf manuell oder aus geschaltet werden.

WordPress und Cloudflare: ERR_SSL_PROTOCOL_ERROR

Nach der Umstellung auf Cloudflare und der Aktiv Schaltung des Dienstes, ist die Seite nicht mehr erreichbar.

ssl_error

Das liegt daran, dass das Zertifikat auf Seiten Cloudflares noch nicht erzeugt und registriert ist. Der Status im Crypto Reiter sollte “Authorizing Certificate” anzeigen.

ssl-authorisierung

Während dieser Zeit werden Fehlermeldungen ausgegeben, wenn man versucht die Seite via https:// aufzurufen.

registrierung

Nach der Registrierung sollte alles einwandfrei laufen und ein SSL Zertifikat von Cloudflare ausgeliefert werden. Im “Free-Modus” kann hier kein anderes Zertifikat wie eins von Let’s Encrypt durchgereicht und angewendet werden!

cert

WordPress und Cloudflare: Let's Encrypt Zertifikat nutzen

By Default nutzt der Let’s Encrypt client für die ACME Authentifizierung die DVSNI Methode. Das wird nicht funktionieren, wenn eine Domain Cloudflare aktiv hat, da alle SSL (TLS) Verbindungen an den Cloudflare Servern getrennt werden und der ACME Server niemals das Zertifikat sehen wird, dass der Ursprungsserver ausgestellt hat. Die alternativen Methoden zur Validierung wie DNS oder HTTP werden aber unterstützt.

Das heißt, dass man Cloudflare nicht abschalten muss, um Let’s Encrypt nutzen zu können.

Man muss folgendes Kommando absetzen, um dem Client mitzuteilen, dass er die Verifizierung via HTTP durchführen soll:

/opt/letsencrypt/letsencrypt-auto certonly --webroot --webroot-path /var/www/ --renew-by-default --email xxx@xxx.de --text --agree-tos -d tj-braun.de -d www.tj-braun.de -d cloud.tj-braun.de -d mail.tj-braun.de -d imap.tj-braun.de -d smtp.tj-braun.de

Die erfolgreiche Erstellung sieht ähnlich dem folgenden Output aus:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for tj-braun.de
http-01 challenge for www.tj-braun.de
http-01 challenge for cloud.tj-braun.de
http-01 challenge for mail.tj-braun.de
http-01 challenge for imap.tj-braun.de
http-01 challenge for smtp.tj-braun.de
Using the webroot path /var/www for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0007_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0007_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.tj-braun.de/fullchain.pem. Your cert will
   expire on 2017-01-16. To obtain a new or tweaked version of this
   certificate in the future, simply run letsencrypt-auto again. To
   non-interactively renew *all* of your certificates, run
   "letsencrypt-auto renew"

WordPress und Cloudflare: Einrichtung

Cloudflare ist ein dezentral aufgestelltes Content Delivery Network (CDN) mit anhängigem DNS. Es fungiert als Reverse Proxy und wird vor die eigentlichen Webserver geschaltet. Dadurch kann es als Cache dienen, der die Inhalte schneller bereit stellen kann und die Webseite somit schneller machen kann. CDNs können aber auch bei DDoS Attacken helfen und die Last vom eigentlichen Server fern halten und bei kurzfristigen Downtimes helfen. Ein weiterer Vorteil ist, dass Cloudflare seit einiger Zeit die gecachten Webseiten im neuen HTTP/2-Protokoll ausliefert. Das bringt ebenfalls Geschwindigkeitsvorteile und Google scheint das neue Protokoll pushen zu wollen.

Einrichtung von Cloudflare

Zunächst muss man https://www.cloudflare.com aufrufen, sich dort registrieren und die URL der Webseite eingeben, die man verbinden möchte.

cloudflare-webseite-hinzufuegen

Anschließend werden die aktiven DNS Server der Domain gescannt. Das kann etwas dauern. Als Ergebnis erhält man eine Übersicht über die DNS-Zonen. Eine orange Wolke bedeutet, dass hier ein Caching über Cloudflare eingestellt ist und der Traffic über Cloudflare selbst läuft. Eine graue Wolke bedeutet, dass für diesen Host das Caching deaktiviert ist und Cloudflare lediglich den DNS Dienst übernimmt. Der Traffic wird also weiter über den eigenen Webserver laufen.

Hier wird beispielsweise nur der Traffic zu WordPress gecached. Der Rest nicht.

dns-cloudflare

[fusion_alert type=”general” accent_color=”” background_color=”” border_size=”1px” icon=”” box_shadow=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=””]

Bei den DNS Einträgen ist es wichtig, dass auch wirklich alle Inhalte des bisherigen Providers auf den Cloudflare DNS übernommen werden. TXT Einträge wurden bei mir nicht von Beginn an übernommen und mussten händisch hinterlegt werden.

[/fusion_alert]

Anschließend wird der Plan ausgewählt. “Free” sollte für den Anfang ausreichen. Ein Upgrade ist während des Betriebs unterbrechungsfrei möglich.

DNS/Nameserver einrichten

Nach der Einrichtung muss man die eigene Domain auf Cloudflare umleiten.

Dieser Punkt ist ein Muss. Wer seine DNS-Einstellungen nicht verändern kann, der hat keine Chance, Cloudflare zu nutzen. Insbesondere User, die Webseite und Hosting beim gleichen Anbieter haben, können hier Probleme bekommen.

change-nameserver

Änderung anhand INWX

Da ich als Domainregistrar INWX nutze, wird die Umstellung hier an dem Beispiel erläutert.

Ein einfaches Abändern der DNS Server bzw. NS Records der Domain ist nicht möglich, da der SOA Eintrag fix auf den ersten DNS Server zeigt und es so zu Loops kommen kann und die Namensauflösung nicht mehr sauber funktioniert. Aus diesem Grund muss die komplette Domain auf einen externen DNS Server ausgelagert werden. Das ist in dem Fall Cloudflare.

Dazu ruft man die Domainliste auf, wählt die betroffene Domain und klickt in der Übersicht auf externe Nameserver. Dort werden dann die von Cloudflare vorgegebenen DNS Server hinterlegt.

externe-nameserver-inwx

Nachdem die Cloudflare-Nameserver eingetragen wurden, kann es bis zu 24 Stunden dauern, bis alles reibungslos funktioniert.

Die korrekten Einstellungen kann man auf Seiten wie mxtoolbox.com testen.

mxtoolbox-dns-check

Bis die DNS Einstellungen übernommen wurden wird auf der Cloudflare Seite der Pending Status ausgerufen.

cloudflare-web-performance-security

Status nach erfolgreicher Inbetriebnahme:

cloudflare-overview

Kontrolle der Auslieferung via Cloudflare

Trotz des “Active” Status kann es sein, dass die Webseite immer noch über den eigentlichen Webserver ausgeliefert wird. Das passiert immer dann, wenn der Cache-Header “no-store, no-chache” ausliefert. Dadurch erhält Cloudflare die Anweisung, dass die Webseite nicht im Cache abgelegt werden darf und muss jeden Aufruf wieder auf den Webserver weiterleiten. Dadurch kann keine Geschwindigkeitsoptimierung erfolgen.

Kontrolliert werden kann der Cache-Header z.B. durch den Befehl curl -I https://www.tj-braun.de

curl

Hat man diese Header Definition (WordPress setzt sie bspw.) gibt es dennoch eine Lösung: Cloudflare Page Rules. Das sind Regeln (von denen man in der Free-Version 3 definieren kann), die dafür sorgen, dass die Webseiten dennoch gespeichert und ausgeliefert werden.

Dafür unter dem Tab “Page Rules” zuerst das Pattern für die Webseite eintragen http://www.domain.tld/* und dann folgende Regel erstellen:

Custom Caching: Cache everything

Sometimes cache headers are set on the server-side or by a CMS solution like WordPress. If you choose to Cache Everything, CloudFlare will respect these headers unless you choose to overwrite them.

Edge cache expire TTL

To overwrite any default headers, choose a time from the drop-down menu. This is the refetch time for when CloudFlare checks the origin server for a new resource.

 

cache

Damit der Admin Bereich nicht gecached wird, wird eine zweite Regel erstellt.

Pattern: http://www.domain.tld/wp-*
Custom caching: Bypass cache

[fusion_alert type=”general” accent_color=”” background_color=”” border_size=”1px” icon=”” box_shadow=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=””]

Die Einstellung des Admin Bereichs muss VOR der allgemeinen Definition stehen, damit der Admin Bereich auch wirklich nicht gecached wird.

[/fusion_alert]

Windows 10: OneDrive entfernen bzw. deinstallieren

Zuerst stoppt man alle Prozesse und schließt die Applikation in der Taskleiste.
Anschließend wird eine Kommandozeile als Administrator gestartet und folgendes ausgeführt:
64 bit: %SystemRoot%SysWOW64OneDriveSetup.exe /uninstall
32 bit: %SystemRoot%System32OneDriveSetup.exe /uninstall
onedrive-uninstall
Es gibt keinerlei Benachrichtigungen über die Deinstallation, allerdings findet man anschließend das Programm nicht mehr im Startmenü.
Am Ende muss man noch das Symbol im Explorer ausblenden.
Dazu in die Registry gehen:

HKEY_CLASSES_ROOTCLSID{018D5C66-4533-4307-9B53-224DE2ED1FE6}

Dort den Schlüssel System.IsPinnedToNameSpaceTree abändern und den Wert “0” vergeben.

0x80070bcb: Windows 10 Drucker nicht installiert (GPO)

Die unter Windows 7 funktionsfähigen GPOs für Drucker funktionieren unter Windows 8 oder Windows 10 nicht mehr. Die Drucker, die normal automatisch über die Drucker-Richtlinien verteilt wurden, werden nicht mehr eingerichtet.

Die Eventlog Fehlermeldung deutet auf ein Download Problem der Druckertreiber hin:

Benutzer
Canon iR-ADV C3325i F3
[Drucker] iR3325 F3 {ACD440CB-AF71-406D-A426-463A4354F7F9}
0x80070bcb Der angegebene Druckertreiber wurde nicht im System gefunden und muss heruntergeladen werden.

In den früheren Windows Versionen wurde für dieses Problem die Point and Print Richtlinie definiert, die das Herunterladen ohne die UAC und Admin Rechte ermöglicht.

point-and-print

Das Händische Hinzufügen des Drucker kam mit der besagten UAC Meldung hoch und bestätigt die Probleme der Treiber Installation.

druckertreiber

Folgende Anpassung bringt die GPO aber wieder zum Laufen:

Lösung

Öffnen der Registry auf dem Printserver. Mit einer kleinen Anpassung des Schlüssels PrinterDriverAttributes  gaukelt man Windows vor, dass die verwendeten Treiber “package aware” sind. Ändern des Schlüssels und ein Neustart des Servers lässt die Drucker wieder via GPO installieren.

HKLM:SystemCurrentControlSetControlPrintEnviromentsWindowsx64Drivers…DRUCKERTREIBER

Die Hex Nummer muss ungerade sein. Um die Originaleinstellungen beizubehalten und nur besagte Package Awareness zu ändern, muss “1” hinzugefügt werden. Hier beim Canon ist der originale Wert “4” und der neue dementsprechend “5”.

Laut Microsoft steht der Flag bei PrinterDriverAttributes für PRINTER_DRIVER_PACKAGE_AWARE. Das veranlasst dazu den Treiber als Paket anzusehen. D.h. ein .cab Paket wird erstellt, welches die .inf und den Katalog beinhaltet.

Kein Problem von MS sondern der Hersteller.
https://msdn.microsoft.com/windows/hardware/drivers/print/package-aware-print-drivers?f=255&MSPPError=-2147217396

drucker

svchost.exe_wuauserv: Windows 10 WSUS Update Crash

Startet man unter Windows 10 den Update Service, wenn der PC über einen WSUS Server mit Updates versorgt wird, stürzen diverse Dienste ab. Das Problem entstand erst durch das neuste Anniversary Update 1607.

Dies tritt sowohl bei sich schon länger im WSUS befindlichen Clients auf, als auch bei komplett neu installierten Systemen.

anniversary update crash

Scheinbar bringt das Öffnen der Update Seite den Dienst zum Absturz, was einige andere Dienste ebenfalls beeinflusst.

Fehlermeldung svchost.exe_wuauserv

Name der fehlerhaften Anwendung: svchost.exe_wuauserv, Version: 10.0.14393.0, Zeitstempel: 0x57899b1c
Name des fehlerhaften Moduls: ntdll.dll, Version: 10.0.14393.82, Zeitstempel: 0x57a55744
Ausnahmecode: 0xc0000409
Fehleroffset: 0x00000000000e3051
ID des fehlerhaften Prozesses: 0x61c
Startzeit der fehlerhaften Anwendung: 0x01d21fc1d04b1fc2
Pfad der fehlerhaften Anwendung: C:Windowssystem32svchost.exe
Pfad des fehlerhaften Moduls: C:WindowsSYSTEM32ntdll.dll
Berichtskennung: be8b85aa-38a4-4b49-8db8-cd410ad76747

Betroffene Dienste

Die folgenden Dienste stürzen anschließend ebenfalls ab (Eventlog, ID 7034 & 7031):

  • Application Information Service
  • Computer Browser
  • Certificate Propogation
  • Group Policy Client
  • IKE and AuthIP Keying Modules
  • IP Helper Service
  • Server Service
  • Geolocation Service
  • User Profile Service
  • System event notification
  • Remote desktop configuration
  • Shell hardware detection
  • Themes
  • User manager
  • Update Orchestrator for Windows Update
  • Windows management instrumentation

Lösung

Zur Lösung des Problems müssen folgende Updates manuell heruntergeladen und installiert werden:

  • KB3176934
  • KB3176938
  • KB3193494
  • KB3176936

http://catalog.update.microsoft.com/v7/site/home.aspx

2016-10-06-13_33_44-mobrech32-remotedesktopverbindung

Upgrade von Windows 7 auf Windows 10 hängt bei 99%

Beim Upgrade von Windows 7 auf Windows 10 kann es dazu kommen, dass der Upgradevorgang bei 99% hängt und die Installation nicht abgeschlossen wird.

windows-10-upgrade-stuck-at-99

Meistens liegt die Ursache in nicht installierten Updates.

Mögliche Problemlösungen

  • die Windows Updates manuell aufrufen und suchen lassen
  • bei einem Domänen PC kann eine Online Suche helfen, anstelle über den WSUS zu gehen
  • ein Fix It von Microsoft ausführen, welches Update Probleme finden und beheben soll

Bei der letzten Möglichkeit kann man das Tool während der Installation ausführen und darauf hoffen, dass das Upgrade Programm danach auf 100% springt und einen Neustart verlangt.