Blog Bluescreengenerator.de - Feed 2020-06-27T13:20:59+02:00 Chris Kunkel https://bluescreengenerator.de/ MySQL auth_socket Plugin deaktivieren https://bluescreengenerator.de/blog/mysql-auth_socket-plugin-deaktivieren 2020-06-27T13:20:59+02:00 2020-06-27T13:20:59+02:00 auth_socket deaktivieren, damit wieder eine Anmeldung mit Passwort möglich ist:

mysql -u root
MariaDB [(none)]> update mysql.user set password=password('geheim') where user='root';
MariaDB [(none)]> update mysql.user set plugin='' where user='root';
MariaDB [(none)]> flush privileges;
]]>
[Arch Linux] WLAN Region setzen https://bluescreengenerator.de/blog/arch-linux-wlan-region-setzen 2019-11-03T11:38:00+01:00 2019-11-03T11:38:00+01:00 Bei langsamer WLAN Verbindung unter Arch Linux hat es bei mir geholfen, die WLAN Region zu setzen. Diese war vorher nicht definiert. dmesg hat folgenden Fehler ausgeworfen:

$ dmesg | grep firmware

[    3.087847] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2

Lösung: WLAN Region setzen

  • Paket crda installieren: pacman -S crda
  • reboot
  • Region setzen, für Deutschland: iw reg set DE
  • (optional) kontrollieren mit: iw reg get

Die WLAN Performance ist seitdem normal.

]]>
[Froxlor] Webserver Logs anonymisieren https://bluescreengenerator.de/blog/froxlor-webserver-logs-anonymisieren 2019-10-20T11:33:00+02:00 2019-10-20T11:33:00+02:00

Froxlor ist eine in PHP geschriebene und unter der GPL veröffentlichte Servermanagementanwendung, die das Betreiben von Hostingservern vereinfacht. Einmal eingerichtet lassen sich Hostings (vordergründig Webhosting und Mailhosting, Details s. auf der Homepage von Froxlor) bequem per Webinterface anlegen und verwalten.

Was die Wahl des Serverbetriebssystems angeht, hat man die Wahl zwischen diversen Linuxdistributionen. Am besten unterstützt werden Debian und seine Derivate. Aber auch Centos und Arch Linux stehen zur Auswahl. Außerdem hat man die Wahl, welche Serversoftware eingesetzt werden soll. Beim Webserver beispielsweise zwischen Apache, nginx und Lighttpd.

Logs anonymisieren

Wie man die Logs anonymisieren kann hängt von der eingesetzten Webserversoftware ab. Ich möchte hier die Möglichkeiten bei Einsatz des Apache und des nginx erklären.

Apache

Beim Apache ist es relativ simpel. Der Server unterstützt von Haus aus das Umleiten des Logfiles an ein Script. Diese Eigenschaft macht man sich zunutze, um die IP Adressen der Besucher zu anonymisieren. Entsprechende Scripte gibt es im Internet, ich bediene mich des Pythonscripts Anonip. Dieses Script speichert man z.B. unter /opt/anonip.py ab. Anschließend teilt man Froxlor mit, dass es die Logdateien an Anonip weiterleiten soll. Diese Einstellung findet man unter Einstellungen -> Webserver Einstellungen. Dort das Häkchen für die Umleitung setzen und im Feld darüber den Pfad zu Anonip und die Parameter mitgeben (s. Screenshot)

Bei den Parametern aus dem Beispiel werden bei IPv4 Adressen die letzten 8 Bits (=das vierte Oktett) und bei IPv6 die letzten 64 Bits maskiert. Der Output Parameter sorgt dafür, dass die Logs auch am in Froxlor definierten Ort gespeichert werden. Das führt zu folgenden beispielhaften Ergebnissen:

192.0.2.123 wird zu 192.0.2.0
2001:0db8:aaaa:bbbb::1234:5678 wird zu 2001:0db8:aaaa:bbbb::

nginx

nginx unterstützt das Umleiten der Logs an ein Script nicht, das Häkchen ist bei Auswahl von nginx nicht verfügbar. Allerdings bietet Froxlor die Möglichkeit, das Log-Format direkt anzugeben. Um nginx das Anonymisieren beizubringen, braucht man auch hier ein bisschen Programmierlogik. Folgendes Script muss unter /etc/nginx/conf.d/anonymize-log.conf abgelegt werden. Der Dateiname ist übrigens frei wählbar, muss aber mit .conf enden, da nginx standardmäßig alle .conf Dateien im Verzeichnis /etc/nginx/conf.d/ beim Starten einbindet.

map $remote_addr $ip_anonym1 {
    default 0.0.0;
    "~(?P<ip>(\d+)\.(\d+)\.(\d+))\.\d+" $ip;
    "~(?P<ip>[^:]+:[^:]+):" $ip;
}

map $remote_addr $ip_anonym2 {
    default .0;
    "~(?P<ip>(\d+)\.(\d+)\.(\d+))\.\d+" .0;
    "~(?P<ip>[^:]+:[^:]+):" ::;
}

map $ip_anonym1$ip_anonym2 $ip_anonymized {
    default 0.0.0.0;
    "~(?P<ip>.*)" $ip;
}

Dieses Skript stammt von blag.nullteilerfrei.de. Lediglich die letzten drei Zeilen wurden entfernt, da man das definieren des Logformats Froxlor überlässt.

Unter Einstellungen => Webserver Einstellungen ist das Access Log Format folgendermaßen anzugeben:

"$ip_anonymized - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\""

Dadurch wird das originale Logformat von nginx beibehalten, die IPs jedoch verschleiert. Wichtig ist, dass die doppelten Anführungszeichen mit einem Backslash escaped werden, da Froxlor das Format selbst in Anführungszeichen setzt. Ohne die Escapezeichen würde nginx meckern. Im Gegensatz zum Apache-Beispiel verschleiert diese Version bei IPv6 Adressen die letzten 96 Bits. Möchte man das ändern, muss die .conf-Datei nach den eigenen Wünschen angepasst werden.

Aus 2001:0db8:aaaa:bbbb::1234:5678 wird hier 2001:0db8:. IPv4 Adressen werden wie oben im letzten Oktett verschleiert.

]]>
Verschlüsselungen im Windows 10 IKEv2 Client anpassen https://bluescreengenerator.de/blog/verschluesselungen-im-windows-10-ikev2-client-anpassen 2019-06-08T11:30:00+02:00 2019-06-08T11:30:00+02:00 Der eingebaute IKEv2 VPN Client von Windows 10 unterstützt von Haus aus lediglich Verbindungen, die auf DH-Group 2 setzen. Das ist heutzutage nicht mehr zeitgemäß. Möchte man eine sicherere Verbindung einrichten (wie beispielsweise hier beschrieben), so kann man sich die Powershell zu Nutze machen.

Dabei ist es notwendig, dass die Verbindung nicht über die grafische Oberfläche eingerichtet wird, sondern direkt auf der Powershell. Wenn man einen VPN Server nach dem oben verlinkten Artikel aufgesetzt hat, lautet der notwendige Befehl für die Client-Verbindung:

Add-VpnConnection -Name "Mein VPN" -ServerAddress "meinvpn.server.de" -TunnelType IKEv2 -AuthenticationMethod EAP

Statt der Serveradresse kann auch eine IP Adresse eingetragen werden. Die Verschlüsselungsparameter können dann mit einem weiteren Befehl gesetzt werden:

Set-VpnConnectionIPsecConfiguration -ConnectionName "Mein VPN" -DHGroup ECP384 -CipherTransformConstants AES256 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup ECP384 -AuthenticationTransformConstants SHA256128

Der Befehl muss anschließend noch einmal in der Powershell bestätigt werden. Anschließend läuft die Verbindung mit der neuen Ciphersuite.

  • Verschlüsselung: AES256
  • Hash: SHA256
  • DH-Group 20
  • PFS-Group 20
]]>
Netzwerk zu NordVPN verbinden mit OPNsense https://bluescreengenerator.de/blog/netzwerk-zu-nordvpn-verbinden-mit-opnsense 2019-02-09T11:22:00+01:00 2019-02-09T11:22:00+01:00

Wer im Internet surft hinterlässt Spuren. Webserver loggen Zugriffe und speichern die IP Adressen des Clients, sowie u.a. Datum, Uhrzeit, Browser und angefragte URL. Internetprovider wiederum speichern mitunter die IP Adressen ihrer Kunden. So lässt sich theoretisch nachvollziehen, welcher Kunde wann wohin surft.

Wer seine Privatsphäre bewahren will kann daher die Dienste eines VPN Providers nutzen. Dadurch sieht beispielsweise der Webserver nicht mehr die IP Adresse des eigenen Anschlusses, sondern die des VPN Providers. Außerdem kann der ISP nicht verfolgen, wohin zugegriffen wurde, da dies ebenfalls über eine verschlüsselte Verbindung über den VPN Provider läuft. Letztlich muss man allerdings dem VPN Provider vertrauen. Viele werben damit, keine Logdateien zu speichern. So auch der Anbieter NordVPN, dessen Dienst für dieses Beispiel herangezogen wird. Grundsätzlich sollte die Anleitung auch auf andere VPN Provider anwendbar sein, sofern sie OpenVPN unterstützen.

Warum VPN über den Router?

Die Anbieter machen es ihren Kunden möglichst einfach und bieten für diverse Betriebssysteme, sei es für PC, Smartphone oder Tablet, passende Apps an, über die man sich in Nullkommanichts verbinden kann und “unsichtbar” wird. Allerdings gilt der Schutz dann ausschließlich für dieses eine Gerät. Teilweise gibt es sogar Browserplugins, der Schutz beschränkt sich dann sogar nur auf das Surfen mit dem verwendeten Browser, der das Plugin installiert hat. Möchte man sein Heim-/Firmennetzwerk komplett absichern, und damit auch Smarthome-, IoT- oder Mediengeräte einbeziehen, ist es am Sinnvollsten, die Verbindung auf einem zentralen Netzelement einzurichten, also dem Router.

Ich verwende OPNsense, eine Firewalldistribution, die auf FreeBSD basiert, in der Softwareversion 19.1 (“Inspiring Iguana”) vom 31. Januar 2019. Definitiv ebenfalls möglich ist die Benutzung von pfSense, die Konfiguration ist dort nahezu identisch. Andere Router-/Firewallsoftware, die OpenVPN unterstützt, sollte ebenfalls funktionieren.

Voraussetzungen

Zunächst einmal ist ein Abo bei NordVPN notwendig. Die Preise sind gestaffelt. Je länger die Laufzeit des Abos, desto geringer der monatliche Betrag.

Die Verbindung wird via OpenVPN hergestellt. NordVPN bietet für alle seine Server bereits fertige Konfigurationsdateien an, die über folgenden Link heruntergeladen werden können: https://nordvpn.com/de/ovpn/. Such’ dir dort einen passenden Server aus und öffne die Konfigurationsdatei mit einem Texteditor. Der Serverstandort wirkt sich logischerweise auf die Latenzen aus. Ein Server in Heimatnähe wird schneller reagieren als ein Server am anderen Ende der Welt. Aus Privacy-Sicht ist es aber egal, welcher Server gewählt wird. Interessant wird die Auswahl, wenn man beispielsweise Geoblocking umgehen will.

Konfiguration

Du wirst nacheinander zunächst den OpenVPN Tunnel konfigurieren. Nachdem dieser erfolgreich aufgebaut ist widmest du dich dem NAT und anschließend dem Policy-Based-Routing. Du kannst am Ende über Firewallregeln entscheiden, ob du sämtlichen Traffic über VPN jagen willst oder nur einzelne Clients. Auch die Beschränkung auf einzelne Ports ist möglich. Meine OPNsense Oberfläche ist auf Englisch eingestellt. Die Menüpunkte sind daher auch auf Englisch.

CA erstellen

NordVPN authentifiziert seine Kunden anhand von Benutzername und Kennwort. Außerdem muss die Vertrauenswürdigkeit des NordVPN-Zertifikats gegeben sein. Daher erstellest du zunächst eine CA unter dem Menüpunkt System => Trust => Authorities:

In das Feld “Certificate data” gehört das Zertifikat aus der OpenVPN Konfig von NordVPN rein....

]]>
Fortigate Sniffer benutzen https://bluescreengenerator.de/blog/fortigate-sniffer-benutzen 2018-03-27T11:19:00+02:00 2018-03-27T11:19:00+02:00 Sofern die Option Packet Capture im Menü der Fortigate nicht erscheint, kann man den Sniffer mit folgendem Link direkt aufrufen:

https://[ IP_der_Fortigate ]/ng/page/p/firewall/sniffer/

Alternativ lässt sich auch via CLI sniffen, allerdings bekommt man dann kein schönes .pcap File heraus. Der Befehl dazu lautet:

diagnose sniffer packet < interface > [ filter ]

: das Interface, auf dem man sniffen möchte, “any” für alle, [ filter ] : optionale Angabe von Filtern, um die Ausgabe übersichtlich zu halten

]]>
Synology WebStation Timeout Problem beheben https://bluescreengenerator.de/blog/synology-webstation-timeout-problem-beheben 2018-02-08T11:16:00+01:00 2018-02-08T11:16:00+01:00 Wer eine DiskStation von Synology besitzt kann über eine zusätzliche App (“Web Station”) Websites auf seinem NAS hosten. Das funktioniert soweit auch ganz gut. Allerdings gibt es bei einigen Anwendungen Probleme mit einem Timeout.

Beispiel

Ich hoste auf meinem NAS eine Nextcloud Instanz auf einem Apache 2.4 mit PHP 7.0. Sobald ich den integriertem Updater benutzen möchte, um die Version zu aktualisieren, bekomme ich spätestens dann eine Fehlermeldung, wenn während der Prozedur ein Backup erstellt wird. Dieser Vorgang dauert nämlich etwas und nach exakt einer Minute kommt es zum Timeout.

Die Ursache liegt darin, dass die Diskstation ihren eigenen Webserver (nginx) als Reverse Proxy für den Webserver der Web Station schaltet. Dieser nginx hat per Default einen Timeout von 60s gesetzt. Dauert nun ein Vorgang auf dem Apache länger (wie das o.g. Backup) und liefert dieser daher nicht innerhalb von einer Minute eine Antwort, läuft der nginx in einen Timeout.

Lösung

Mit Hilfe des Supports konnte ich das Problem lösen. Das Problem lag nicht darin, dass ich nicht wusste, wie es zu lösen ist. Es lag eher darin zu wissen, wo es zu lösen ist. Die Diskstation baut ihre Konfigurationen nämlich aus diversen Dateien bei jedem Diensteneustart neu zusammen. Für nginx muss folgende Datei (zumindest Stand jetzt, in der DSM DSM 6.1.5-15254) angepasst werden:

/var/packages/WebStation/target/misc/VirtualHost-nginx.mustache

Dort gibt es zwei Abschnitte, einen für Apache 2.4, einen für Apache 2.2. In beiden muss der Parameter proxy_read_timeout mit entsprechendem Wert (bei mir zehn Minuten) eingefügt werden:

{{#apache22}}
    include     proxy.conf;
    proxy_read_timeout 600s;
    location / {
        proxy_pass  http://{{listen}};
    }
{{/apache22}}
{{#apache24}}
    include     proxy.conf;
    proxy_read_timeout 600s;
    location / {
        proxy_pass  http://{{listen}};
    }
{{/apache24}}

Anschließend muss der Dienst noch mittels sudo synoservicectl --restart nginx neu gestartet werden.

Diese manuelle Änderung wird überschrieben, sobald die Web Station App aktualisiert wird. Man muss diese Prozedur also nach jedem Update wiederholen.

]]>
[Juniper] Datei per FTP/SCP kopieren https://bluescreengenerator.de/blog/juniper-datei-per-ftp-scp-kopieren 2017-09-19T11:15:00+02:00 2017-09-19T11:15:00+02:00 Datei vom Router zu einem entfernten FTP-Server senden:

file copy /var/tmp/logs.tgz ftp://username@***.**.***.**/logs.tgz
]]>
Plesk Backup auf Strato HiDrive https://bluescreengenerator.de/blog/plesk-backup-auf-strato-hidrive 2017-09-04T11:09:00+02:00 2017-09-04T11:09:00+02:00

Mit Hilfe des Backup-Managers lassen sich unter Plesk Sicherungen der Hostings anlegen. Diese können direkt auf dem Hostingserver abgelegt, oder per FTP(s) auf einen externen Server übertragen werden. Da das Backup auf dem Hostingserver selbst im Falle eines Crashs nutzlos ist, sollte die Variante mit dem externen Server bevorzugt werden. Wer Cloudspeicher von Strato (“HiDrive”) nutzen möchte, kann das Backup folgendermaßen einrichten:

  1. Im HiDrive selbst einen eigenen Ordner anlegen. Das ist nicht unbedingt notwendig, erhöht aber die Übersichtlichkeit. Ich speichere alle Plesk Backups im Ordner “Hosting”.
  2. Im Backup-Manager unter Plesk unter “Einstellungen zum FTP-Speicher” folgende Daten eingeben:

    Hostname: ftp.hidrive.strato.com
    Verzeichnis: /users/ < HiDrive-Username > /Hosting/
    FTP-Benutzername = HiDrive Username
    FTP-Passwort = HiDrive Passwort
    Passivmodus verwenden: ✓ FTPS verwenden: ✓ (nicht zwingend erforderlich, aber unbedingt empfehlenswert)
    Bei Bedarf lassen sich die Backups zusätzlich mit einem Passwort versehen.

Damit ist die Konfiguration bereits beendet. Nach einem Klick auf OK wird der Inhalt des FTP Speichers angezeigt, bei Ersteinrichtung ist hier natürlich noch nichts drin. Aufgelistet werden hier nur die tatsächlichen Plesk Backups. Sofern im Ordner auf dem HiDrive noch andere Daten abgelegt sind, werden sie im Plesk nicht angezeigt. Ab jetzt lassen sich sowohl händisch gestartete als auch geplante Backups im Strato HiDrive ablegen. Es muss darauf geachtet werden, dass als Speicher auch der externe FTP Speicher ausgewählt wird, ansonsten verwendet Plesk den lokalen Server als Ablage.

]]>
Mobile VPN mit pfSense und IKEv2 https://bluescreengenerator.de/blog/mobile-vpn-mit-pfsense-und-ikev2 2017-07-04T11:03:00+02:00 2017-07-04T11:03:00+02:00

Kurze Zusammenfassung der Einstellungen für pfSense und Android.

VPN Serverkonfiguration

VPN –> IPsec –> Mobile Clients

  • Mobile Client Support aktivieren
  • User Authentication: Local Database
  • Group Authentication: None
  • Virtual Address Pool: beliebigen, nicht verwendeten Pool benutzen
  • Virtual IPv6 Address Pool: ebenfalls beliebigen, nicht verwendeten Pool verwenden (bei Bedarf)

pfSense unterstützt derzeit nicht das Vermischen von IPv4 und IPv6 im VPN Tunnel. D.h., dass zu einer IPv4 Gegenstelle auch nur IPv4 Traffic getunnelt werden kann und analog bei einer IPv6 Gegenstelle nur IPv6 getunnelt werden kann.

Alle anderen Einstellungen nach Bedarf.

System –> Cert. Manager –> CAs

Hier zunächst eine CA erstellen, wenn nicht bereits erledigt. Unter dieser CA wird anschließend das Serverzertifikat erstellt.

System –> Cert. Manager –> Certificates

Hier ein eigenes, internes Zertifikat unter der eben erstellten CA erstellen, nennen wir es z.B. “IKEv2 Server”. Wichtig ist, dass als Common Name der FQDN eingetragen wird, der später auch im VPN Client des Smartphones benutzt wird. Sonst funktioniert später die Authentifizierung nicht.

VPN –> IPsec –> Phase 1

  • Key Exchange Version: IKEv2
  • Internet Protocol: IPv4 (IPv6 bei Bedarf, Hinweis s. oben)
  • Interface: (vermutlich) WAN
  • Authentication Method: EAP-MSChapv2
  • My Identifier: Distinguished Name – Hostname (FQDN) der Firewall eintragen
  • Peer Identifier: Any
  • My Certificate: für den VPN Server erzeugtes Zertifikat auswählen (“IKEv2 Server”)
  • Encryption Algorithm: AES 256 bits
  • Hash Algorithm: SHA256
  • DH Group: 2
  • Lifetime: 28800s

Alles weitere nach Bedarf, ich habe noch DPD aktiviert.

DH Group 2 ist Pflicht, sofern man neben Androidclients auch Windowsrechner mit Boardmitteln zum VPN verbinden möchte. Strongswan hat diese Group aber nach einem Update aus den Standardproposals entfernt. Man muss es daher zwingend von Hand wieder aktivieren, indem man unter den IKEv2-Algorithmen seine verwendeten Proposals definiert, in diesem Fall aes256-sha256-modp1024.

Die Verschlüsselungsparameter lassen sich unter Windows mit Hilfe der Powershell anpassen. s. hier: Verschlüsselungen im Windows 10 IKEv2 Client anpassen. Damit ist man nicht mehr auf die veraltete DH-Group 2 angewiesen.

VPN –> IPsec –> Phase 2

  • Mode: Tunnel IPv4
  • Local Network: Network 0.0.0.0/0 (um jeglichen Traffic ins VPN zu tunneln)
  • Protocol: ESP
  • Encryption Algorithm: AES Auto
  • Hash Algorithm: SHA1
  • PFS key group: off
  • Lifetime: 3600s

VPN –> IPsec –> Pre-Shared Keys

Pro User einen Identifier (=Username) und Pre-Shared Key (Typ: EAP) vergeben

Client Konfiguration

Android

Als VPN Client für Android eignet sich sehr gut die App “strongswan”. Das Zertifikat des Servers muss in den Client importiert werden. Einstellungen für strongswan:

  • Server: FQDN der pfSense (=gleich Common Name des erstellten Zertifikats)
  • VPN-Typ: IKEv2 EAP (Benutzername/Passwort)
  • Benutzername: Identifier aus den Pre-Shared Key Einstellungen
  • Passwort: der zum Identifier passende Pre Shared Key
  • CA-Zertifikat: das importierte Zertifikat der pfSense (oder automatisch wählen)
  • Profilname: Anzeigename innerhalb von strongswan, daher beliebig

Windows (ab Windows 7)

Seit Windows 7 unterstützt der Boardeigene VPN Client IPsec mit IKEv2 und Zertifikaten. Hierfür muss man sich zunächst das Zertifikat der CA von der pfSense exportieren und auf dem Windows-PC importieren. Es muss unter den “Vertrauenswürdigen Stammzertifizierungsstellen” gespeichert werden. Das lässt sich zum Beispiel mit der Managementkonsole (Start –> Ausführen –> mmc) erledigen. Anschließend kann die...

]]>