mborm.net

Ein Computerprogramm tut was Du schreibst, nicht was Du willst.

apache2 TLS-Config für Qualys Lab Bestnote mit Server Hardening

Ich werde hier aufführen, wie man einen apache2-Webserver so konfiguriert, dass deren TLS-Zertifikate die Bestnote des Qualys Lab SSL Checkers erreichen.

Zuerst wird SSL und SNI aktiviert. Mittels SNI (Server Name Indication) kann ein Server für mehrere Webseiten TLS-Zertifikate unter der gleichen IP-Adresse hosten. Der Hostname des Servers wird während des TLS-Handshakes in die Client-Hello-Message eingefügt. Das ist z.B. bei Shared Hosts notwendig, da viele Websiten darüber laufen. Dies sollte man also mit folgender Config-Zeilen aktivieren:

<IfModule mod ssl.c>
SSLEngine on
SSLStrictSNIVHostCheck on

Die hier aufgeführte Beispiel Config wurde bei der apache2.4.18 Version getestet. Diese Version unterstützt noch kein TLSv1.3, daher wird aktuell nur TLSv1.2 aktiviert. Die Unterstützung für TLSv1.0 und TLSv1.1 wird ab 2020 aus den Browsern entfernt, daher werden diese Versionen gar nicht erst aktiviert. Außerdem werden die Optionen StrictRequire und StdEnvVars aktiviert, damit die Satisfy Any Direktive keine Einstellungen überschreiben kann und für CGI-Dateien die Umgebungsvariablen zur Verfügung gestellt werden. Das machen folgende Config-Zeilen

SSLProtocol -ALL +TLSv1.2
SSLOptions +StrictRequire
<FilesMatch"\.(cgi|shtml|phtml|php|php5)$">
SSLOptions +StdEnvVars
</FilesMatch>

Als Verschlüsselungsverfahren werden vier als aktuell sehr sicher geltende Verfahren mit Ephemeral Diffie-Hellman Modifikation eingesetzt und so aktiviert:

SSLCipherSuite "ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-GCM-SHA256 !RC4 !eNULL !aNULL !MEDIUM !LOW !EXP"

Dann folgen weitere Konfigurationen. SSLSessionTickets werden abgeschaltet, damit Perfect Forward Secrecy möglich ist. SSLCompression wird deaktiviert, weil bei Aktivierung ein möglicher Angriffsvektor entsteht (ssl crime attack). Dann wird SSLHonorCipherOrder aktiviert, damit sich alle Clients an die vorgegebene Reihenfolge der Verschlüsselungsverfahren des Servers halten. Außerdem wird SSLOCSPEnable aktiviert, damit der client certificate chain von einem OCSP validiert werden darf. Zuletzt wird noch SSLUseStapling aktiviert, damit die OCSP Antwort für das Zertifikat in den TSL Handshake integriert wird. Dafür ist ein Cache nötig, der auch noch konfiguriert wird.

SSLSessionTickets off
SSLCompression off
SSLHonorCipherOrder on
SSLOCSPEnable on
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/ocsp(128000)

Zertifikat und Key müssen natürlich noch bekannt gegeben werden.

<VirtualHost *:433>
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/key.pem
</VirtualHost>

Dann sendet der Server noch einen Header um HSTS (HTTP Strict Transport Security) zu aktivieren. Dies teilt dem Browser mit, dass für eine vorbestimmte Zeit ausschließlich TLS Verbindungen zu diesem Server verwendet werden sollen.

<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
Header always set Strict-Transport-Security "max-age=31536000;
includeSubDomains"
</IfModule>

Ein paar weitere Hardening-Options sollte man noch vornehmen, auch wenn diese nicht alle zwingend mit TLS zu tun haben. Versionsnummern verbergen und permanent von unverschlüsselt auf verschlüsselt umleiten (Port 80 zu 443).

ServerSignature off
ServerTokens Prod
php_admin_flag expose_php off
<VirtualHost *:80>
Redirect permanent http://domain.tld/ https://domain.tld/
</VirtualHost>
</IfModule mod_ssl.c>

Der TLS Checker von Qualys zeigt außerdem an, dass der Server durch die oben genannten Konfigurationsparameter folgende Funktionen unterstützt:

  • Certificate Transparency
  • Secure Renegotation
  • Forward Secrecy (ROBUST) (wegen ECDHE-Ciphern)

Dadurch erhält man die Bestnote A+.

Veröffentlicht am 20. Januar 2021 von admin in IT-Sicherheit, Netzwerk, Server

TEDP – The Energy Data Project

Worum geht’s?

Zusammen mit Niklas Fandrich entwickle ich The Energy Data Project, auf der sich alles um das Thema Energieverbrauch von Elektrogeräten dreht. Auf der Seite sind unterschiedlichste Geräte aus verschiedenen Kategorien verzeichnet – die Einträge stammen aus der Community.

Wozu ist die Plattform nützlich?

Wir sind überrascht, wie hoch der Energieverbrauch mancher Geräte ist. Rekordhalter ist bisher eine 30 Jahre alte Geschirrspülmaschine und der hohe Verbrauch von Laserdruckern hat uns auch überrascht. Viele Geräte (vor allem Ladegeräte und Fernseher) verbrauchen auch ausgeschaltet verhältnismäßig viel Strom. Das kann sich über die Jahre zu stolzen Kosten summieren, daher sind diese Werte besonders interessant. Mit unserem Projekt The Energy Data Project, wollen wir genau diese Werte transparent machen.

Kann man bei euch mitmachen?

Mitmachen ist ausdrücklich erwünscht. Jeder, der ein geeignetes Messgerät besitzt, kann den Energieverbrauch seiner Elektrogeräte daheim messen. Anschließend können die Messwerte auf der Plattform anonym eingetragen werden. Unterstützung bieten wir in Form einer Anleitung an. Geeignete Messgeräte empfehlen wir auch.

Wird es Werbung oder Affiliate-Aktionen geben?

Nein, so etwas wird es nicht geben. TEDP ist ein gemeinnütziges Open-Source-Projekt, das kostenlos und uneingeschränkt genutzt werden kann.

https://tedp.nfandrich.net

 

Veröffentlicht am 26. November 2020 von admin in Allgemein, PHP, Programmierung

GPU Benchmark integriert

In die Windows und Linux Executeables mit 32bit und 64bit ist jetzt ein GPU-Benchmark auf Basis von OpenCL integriert.

Dort werden sogenannte Narzisstische Zahlen berechnet: https://de.wikipedia.org/wiki/Narzisstische_Zahl

Zu den Benchmark-Ergebnissen und den Downloads gehts hier: https://mborm.net/benchv2/data.php

Jedoch sollte man beachten, dass es noch eine Limitierung gibt, wenn man Windows zusammen mit Nvidia-Grafikkarten nutzt. Da kann der TdrDelay dazwischen grätschen und den Benchmark zum Absturz bringen. Wenn das passiert muss ein Registry Key verändert werden, das geht mit folgender Datei: https://mborm.net/benchv2/dl/timeout-windows32.reg

Einfach anklicken, bestätigen, PC neustarten und es sollte laufen.

Weitere Infos dazu: https://www.pugetsystems.com/labs/hpc/Working-around-TDR-in-Windows-for-a-better-GPU-computing-experience-777/  und https://docs.microsoft.com/en-us/windows-hardware/drivers/display/tdr-registry-keys

 

Veröffentlicht am 26. Oktober 2019 von admin in Allgemein

Neue Benchmark Version

Beim Benchmark hat sich einiges getan.

Hier gehts zur Ergebnistabelle und den Downloads: https://mborm.net/benchv2/data.php

Der Multi Core Benchmark berechnet die 5. perfekte Zahl. Die Berechnung erfolgt auf allen Kernen (auch logischen) und lastet hauptsächlich die FPU aus. Bei RISC (z.B. ARM) noch etwas mehr, da keine sqrt Funktion verfügbar ist.

Der Single Core Benchmark berechnet 1 Mio. Iterationen der Lychrel Zahlen auf der CPU selbst (32 oder 64 bit) und auf den SIMD Einheiten: AVX2 (256 Bit), AVX, SSE4, SSSE3, SSE2 (jeweils 128 Bit) und falls vorhanden auf XOP und NEON (auch jeweils 128 Bit).

Beim SIMD Single Core wird der jeweils beste Wert gespeichert.

Die schlechten Ergebnisse der Intel CPUs im Single Core liegen zum Teil auch an den Sicherheitspatches.

Die vom Compiler generierten Executeables laden jeweils dynamisch den optimierten Opcode für ihre Architektur nach. Beim FX-6100 wäre das z.B. bdver1 oder beim ARM: W55FA93 wäre es arm926ej-s.

Aktuell ist ein GPU-Bench auf Basis von OpenCL in Arbeit.

Veröffentlicht am 18. September 2019 von admin in Allgemein

Eigene API für die luftdaten.info Wetterstation

Es ist soweit, meine eigene API ist aus der Beta raus.

Hier der Link: https://mborm.net/tools/sensor/sensor.php

Eine App gibts dazu auch: https://mborm.net/share/Lehndorfwetter.apk
Diese ist allerdings noch in der Beta und kann abstürzen.

Folgende Funktionen sind implementiert:

  • Anzeige der aktuellen Sensor-Daten
  • Anzeige der monatlichen Minimal-, Maximal- und Durchschnitts-Werte
  • Historie der Daten für jeden einzelnen Tag, jeden Monat oder das Jahr (sofern Daten vorhanden) – gezählt ab Anfang 2019
  • Tagesgraph der letzten 24h
  • Monatsgraphen
  • In der App hat man zusätzlich noch die Möglichkeit Fehler zu melden
  • Anzeige „Voraussichtliches Wetter“ anhand des Luftdrucks

Wenn man ein Update installieren möchte muss zuerst die alte App Version deinstalliert werden, bevor man die neue Version installiert.

Letztes Update (30.03.2020)

Veröffentlicht am 27. März 2019 von admin in Allgemein, Programmierung

Update luftdaten.info Feinstaubsensor

Wobei „Feinstaubsensor“-Station jetzt nicht mehr ganz stimmt. Durch den Einbau eines BME280 Sensors (7,49 € bei Amazon) kann die Station jetzt auch die Temperatur, die relative Luftfeuchte und den Luftdruck messen. Insgesamt habe ich jetzt also eine Selbstbau-Wetterstation für ~ 30 €.

Das Anschließen des Sensors war sehr einfach. In der FAQ auf luftdaten.info stand alles beschrieben was man braucht.

Damit es etwas stabiler wird, habe ich die 4 Pins des BME280 Sensors allerdings angelötet. Im Anhang ein paar weitere Bilder und ein Screenshot der Sensordaten.

Jetzt werde ich noch eine eigene Sensor-API schreiben welche Graphen (und vielleicht auch eine kleine Wettervorhersage) liefert.

Veröffentlicht am 24. Juli 2018 von admin in Allgemein, Hardware

luftdaten.info Feinstaubsensor

Über einen Fernsehbeitrag bin ich auf das Projekt von luftdaten.info gestoßen. Was wirklich Glück war, denn ich schaue eigentlich nie Fernsehen.

Aber das Projekt fand ich sofort interessant. Ein Netzwerk voller Sensoren welche die Luftqualität von Städten misst. Also schaute ich mir kurz die Karte an und sah, dass in meinem Wohngebiet noch kein Sensor war.

Da der Preis der Teile wirklich niedrig war – ich habe für den Feinstaubsensor 17 € bei Aliexpress bezahlt, für das Arduino Wifi-Modul 5 € auf ebay und den Rest der Teile hatte ich hier noch rumfliegen – dachte ich mir, dass ich hier mal eine Station aufbaue.

Der „Zusammenbau“ war sehr einfach. Eigentlich musste man nur ein paar Kabel zusammenstecken.

Das flashen der Firmware war aber wider Erwarten komplizierter als gedacht. Nach etwas Fehlersuche und Hilfe durch einen Freund zeigte sich, dass das Programm esptool einen Bug unter Linux hat und (auch als root ausgeführt) einen Symlink nicht erzeugen konnte. Leider gab das Programm dafür keine vernünftige Fehlermeldung aus.

Nachdem aber der Softlink von ttyUSB0 nach /dev/cu.wchusbserial1410 manuell angelegt wurde lief das flashen ohne Probleme.

Jetzt steht die Station auf dem Balkon und sammelt schon fleißig Luftdaten, welche sich über eine Website abrufen lassen. In der Karte ist der Sensor noch nicht zu sehen, scheinbar muss dies manuell durch die Betreiber von luftdaten.info angelegt werden. Beim Absenden des Formulars stand auch, dass es bis zu 3 Tage dauern kann.

Auch ein WordPress-Plugin zur Anzeige der Daten existiert, was ich sehr praktisch finde. Allerdings scheint auch das erst zu funktionieren, wenn die Daten bestätigt sind und der Sensor in der luftdaten.info-Map erscheint.

Hier noch der Link zum Projekt: https://luftdaten.info/

Veröffentlicht am 22. Juli 2018 von admin in Allgemein, Hardware

mborm CPU-Benchmark

Wer Lust und ein wenig Zeit hat, kann ja gerne mal meinen Benchmark ausführen und so meine CPU-Benchmark-Datenbank ein wenig füllen.

Unter diesem Link sind sowohl die Ergebnisse als auch die Downloads zu finden: https://mborm.net/benchv2

Die alte Version des Benchmarks findet man hier: https://mborm.net/bench

Das Skript erfordert keine Installation – aber manche Antivirenprogramme blocken es fälschlicherweise. Demnächst werde ich wohl auch den Quellcode öffentlich machen.

Falls das Programm noch für ein spezielles System compiliert werden soll, einfach einen Kommentar schreiben.

Veröffentlicht am 8. Juni 2018 von admin in Allgemein, Programmierung

Problem 74 auf projecteuler.net

Nach längerer Zeit endlich mal wieder eine neue Lösung, dieses Mal für das Problem 74

Auf meinem alten Laptop mit einem i3-2350M braucht das Skript nur knapp über eine Sekunde:


gcc -O3 -march=native -mtune=native -std=c11 -ffast-math Problem74.c -lm -o Problem74 && time ./Problem74
Result: 402

real 0m1,196s
user 0m1,196s
sys 0m0,000s

Und der Code dazu:

Veröffentlicht am 19. August 2017 von admin in C, Programmierung, projecteuler

Problem 50 auf projecteuler.net

Hier meine Brute Force Lösung zu Problem 50.

Befehl zum Compilieren und Ausführen sowie die Ausgabe mit Zeitmessung:


gcc -O3 -march=native -mtune=native -std=c11 -ffast-math -fopenmp Prob50.c -lm -o Prob50 && time ./Prob50
Result: 997651 with 543 terms

real 0m2.809s
user 0m16.577s
sys 0m0.012s

Und der Code:

Veröffentlicht am 21. Mai 2016 von admin in C, Programmierung, projecteuler

Problem 35 auf projecteuler.net

Hier meine Lösung zu Problem 35. Für alle Primzahlen unter 1 Mio werden die jeweiligen Permutationen untersucht. Sind diese auch alles Primzahlen handelt es sich um eine kreisförmige Primzahl (Circular Prime Number).

Output mit Geschwindigkeit:


Result: 55

real 0m0.598s
user 0m0.717s
sys 0m0.020s

und dazu der Java-Code:

Veröffentlicht am 19. Mai 2016 von admin in Java, Programmierung, projecteuler

Problem 44 auf projecteuler.net

Hier meine Lösung zu Problem 44 auf projecteuler.net. Dank dieser Wiki-Seite konnte man schnell eine Funktion schreiben, die prüft ob eine Zahl eine Pentagonalzahl (oder Fünfeckszahl) ist. Die Lösung habe ich wieder in C geschrieben. Mit folgendem gcc-Befehl lässt sich der Code compilieren und ausführen:


gcc -Wall -O3 -march=native -mtune=native -ffast-math -std=c11 Prob44.c -lm -o Prob44 && time ./Prob44

Das Ergebnis mit der Rechendauer sieht dann so aus:


Result found: 5482660

real 0m0.021s
user 0m0.018s
sys 0m0.004s

Und der Code schaut so aus:

Veröffentlicht am 30. Dezember 2015 von admin in C, Programmierung, projecteuler

Problem 5 auf projecteuler.net

Hier meine C Lösung zu Problem 5 auf projecteuler.net. Weil ich faul war habe ich einfach auf Brute Force gesetzt und alle Zahlen durchprobiert. Trotz Brute Force braucht das Programm nur 1,8 Sekunden um die Lösung zu berechnen:


gcc -Wall -O3 -march=native -mtune=native -std=c11 Prob5.c -lm -o Prob5 && time ./Prob5
Result: 232792560

real 0m1.801s
user 0m1.800s
sys 0m0.000s

Und hier der Code:

Veröffentlicht am 19. Dezember 2015 von admin in C, Programmierung, projecteuler

Problem 3 auf projecteuler.net

Hier mal wieder eine weitere Project-Euler Lösung. Dieses Mal für das Problem 3 und wieder in der Programmiersprache C.


gcc -Wall -march=native -mtune=native -O3 -std=c11 -ffast-math prob3.c -lm -o prob3 && time ./prob3
Result: 6857

real 0m0.007s
user 0m0.007s
sys 0m0.000s

Hier der Code:

Veröffentlicht am 18. Dezember 2015 von admin in C, Programmierung, projecteuler

Problem 493 auf projecteuler.net

Hier die Lösung in der Programmiersprache C zu Problem 493 auf projecteuler.net

Compiliert und ausgeführt wurde mit folgendem Befehl:


gcc -Wall -O3 -march=native -mtune=native -std=c11 Prob493.c -lm -o Prob493 && time ./Prob493

Als Ergbnis kommt dann folgendes heraus:


Result: 6.818741802
real 0m0.001s
user 0m0.000s
sys 0m0.000s

Der Code sieht so aus:

Veröffentlicht am 25. Oktober 2015 von admin in C, Programmierung, projecteuler