Raspberry Pi headless setup

Meine heimliche Liebe zu Einplatinenrechner ist kein Geheimnis. Ist erst ein Ansatz zur Automatisierung gefunden, wird dieser direkt durch ein „Raspberry Projekt“ umgesetzt. Zugegeben, in den letzten Wochen schwärme ich auch für Arduino, welcher tolle Möglichkeiten eröffnet – Aber Raspberry dominiert dennoch unseren Haushalt durch Webcams, Ambilight, Speedmessungen am DSL Anschluss, 3D Drucker und vieles mehr. Aktuell arbeite ich gerade an einem Thermometer, welches von einem Arduino mit DHT22 über 433 MHz Messungen empfängt, statistisch am Pi aufwertet und dann an einem Webserver überträgt. Damit der Pi Zero auch ohne Monitor und Tastatur direkt gestartet werden kann, sind zunächst jedoch einige Änderungen notwendig.

Download des aktuellen Raspbian Image und Installation durch Etcher

Dieser Schritt sollte relativ selbstredend sein, daher werde ich auf die Installation nicht näher eingehen. Früher habe ich das Image aus der Console mit dd aufgespielt, heute mache ich dies über Etcher (hier kann man Etcher Downloaden)

Etcher

WiFi konfigurieren

Als nächstes muss vor dem ersten Start des Pi eine Datei erstellt werden. Diese muss auf der /boot Partition des Pi gespeichert werden.

Inhalt der Datei /boot/wpa_supplicant.conf

SSH aktivieren

Nachdem wir nun die WLAN Einstellungen am Raspberry gemacht haben, müssen wir noch eine leere Datei im /boot Verzeichnis erzeugen und nennen diese „ssh“. Dies bewirkt, das der SSH Dienst bei booten automatisch gestartet wird.

Fertig: Kennwort bitte ändern

Starten wir nun den PI, können wir uns mit Putty oder sonstigen SSH Client anmelden: ssh pi@raspberrypi Das Default Passwort für den Benutzer pi lautet „raspberry“ und sollte umgehend geändert werden. Eine solche Kombination ist ein sehr hohes Sicherheitsrisiko.

Raspberry Pi Zero Pin Belegung

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit. Beruflich bin ich erreichbar unter www.stefan-eggert.de

Defekte Plugins unter Shopware löschen

Gerade eben musste ich erneut ein Plugin unter Shopware löschen, welches jedoch scheinbar ein Problem mit der (Backend) deinstallation hatte. Abhilfe schaffte jedoch nur das manuelle löschen aus der Datenbank, nachdem diese Methode ebenfalls nicht funktionierte (WARNING! Method „Shopware_Plugins_Core_SwagLicense_Bootstrap::assertVersionGreaterThen“ not found failure in…).

Hierzu habe ich das Plugin mit Namen lokalisiert:

Anschließend habe ich das Plugin Verzeichnis unter /var/www/html/engine/Shopware/Plugins/ gesucht und gelöscht. Zur Bereinigung musste anschließend in der Datenbanktabelle s_core_plugins der entsprechende Eintrag ebenfalls gelöscht werden. Abschließend sollte das Theme natürlich noch kompiliert werden, damit die Änderungen übernommen sind. Andernfalls kommt es zu einem Fehler im Frontend.

Sicherlich ist dies nicht der beste Weg, um jedoch ein defektes Plugin zu löschen effizient. Backup nicht vergessen!

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit. Beruflich bin ich erreichbar unter www.stefan-eggert.de

WordPress und 2FA (Zwei-Faktor-Authentisierung)

Heute ist Samstag Abend und mir spinnt schon die ganze Tag das Thema 2FA durch den Kopf. Konkret muss ich den Google Authenticator bei einem Kunden auf dem Webserver installieren und könnte dies auch direkt bei meinem WordPress Blog durchführen.

Zunächst würde ich gerne das Thema 2FA etwas in Einklang bringen, Wikipedia beschreibt dies relativ einfach in ein paar kurzen Sätzen:

Die Zwei-Faktor-Authentisierung (2FA), häufig auch als Zwei-Faktor-Authentifizierung bezeichnet, bezeichnet den Identitätsnachweis eines Nutzers mittels der Kombination zweier unterschiedlicher und insbesondere unabhängiger Komponenten (Faktoren). Typische Beispiele sind Bankkarte plus PIN beim Geldautomaten, Fingerabdruck plus Zugangscode in Gebäuden, sowie Passphrase und TAN beim Online-Banking. Die Zwei-Faktor-Authentisierung ist ein Spezialfall der Multi-Faktor-Authentisierung.


Das Bundesamt für Sicherheit in der Informationstechnik empfiehlt für sicherheitskritische Anwendungsbereiche die Zwei-Faktor-Authentisierung in seinen IT-Grundschutz-Katalogen.

https://de.wikipedia.org/wiki/Zwei-Faktor-Authentisierung

Das Thema 2FA finden wir in unterschiedlichen Bereichen wieder. Mittlerweile unterstützen viele Anbieter das 2FA Verfahren (z.B. Paypal, AMAZON & Co), wobei die Auswahl des zweiten Faktors oft das Mobiltelefon (z.B. SMS) oder auch eine App sein kann. Bei der Auswahl der App empfehle ich Authy, welches viele nützliche Funktionen bietet. Neben Fingerprint Authentication sind auch Cloud Backups möglich.

2FA für WordPress

Um 2FA für WordPress zu aktivieren, ist zunächst ein Plugin notwendig. Um einen einzelnen Admin Account abzusichern, ist das Plugin Google Authenticator – WordPress Two Factor Authentication (2FA) von miniOrange eine gute Lösung. Das Plugin wird normal hinzugefügt und anschließend aktiviert.

Nach der Installation findet man links im Menü das Item miniOrange 2 Faktor, in welchem dann der Google Authenticator konfiguriert werden kann.

Die nächsten Schritte sind jetzt relativ einfach: Es wird ein QR Code erzeugt, der mit Authy gescannt wird (1) . Anschließend wird der erzeugte OTP rechts eingetragen, um das ganze zu verifizieren (2). Nun muss noch Enable 2FA prompt on the WP Login Page aktiviert werden. Es empfiehlt sich außerdem seinen Token zu testen, bevor man sich abmeldet und erneut anmeldet (Test Authentication Method).

Wenn alles funktioniert hat, kann man sich abmelden und erneut anmelden. Nun wird man nach einem Benutzernamen, Kennwort und dem OTP Token gefragt.
.

Fertig – Zwei-Faktor-Authentisierung

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit. Beruflich bin ich erreichbar unter www.stefan-eggert.de

E-Mail Benachrichtigung bei SSH Login

Wer gerne über einen SSH Login per E-Mail informiert werden möchte, kann dies über ein recht einfaches Script erledigen. Hierzu muss zunächst unter Centos mailx installiert werden, damit der mail command funktioniert. Ob der Mail command vorhanden ist, lässt sich einfach mit

ausfindig machen. Alternativ kann man sich auch einfach eine Testmail senden lassen:

Zur Installation unter Centos verwenden wir yum:

Anschließend muss die Datei /etc/bashrc so verändert werden, das der folgende Code direkt am Anfang ausgeführt wird:

Nach einem erfolgreichem SSH Login bekommt der Benutzer dann eine E-Mail: Login on web29.stefan-eggert.de Sa 20. Apr 10:13:31 CEST 2019 root pts/0 2019-04-20 10:13 (xxx)

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit. Beruflich bin ich erreichbar unter www.stefan-eggert.de

WPS und AVM Fritzbox Gäste WLAN

Am Wochenende habe ich eine sehr amüsante Geschichte erlebt. Eigentlich war diese schon so trivial, das ich diesen Artikel gar nicht schreiben wollte, aber vielleicht gibt es ja doch den ein oder anderen Leser der hier nutzen finden kann.

Mir wurde ein Fritzbox Gästewlan zur Verfügung gestellt. Leider stellte sich jedoch heraus, das im Gästenetz nur Port 80 und Port 443 erlaubt wurden. Aus dem Nutzungsvertrag des Betreibers konnte ich entnehmen, das man anscheinend P2P Dienste ausschliessen wollte. Mein Problem: Ich musste Port 440 erreichen, da mein Kunde SSL VPN auf genau diesen Port laufen hatte. Im übrigen ein guter Grund, VPN auf Port TCP 443 laufen zu lassen um dies dann auch aus z.B. Hotels oder anderen Hotspots erreichen zu können.

Zugriff auf WPS Taste

Wi-Fi Protected Setup (WPS) ist ein von der Wi-Fi Alliance entwickelter Standard zum einfachen Aufbau eines drahtlosen lokalen Netzwerkes mit Verschlüsselung, welcher seit 2007 zur Verfügung steht. Das Ziel von WPS ist es, das Hinzufügen von Geräten in ein bestehendes Netzwerk zu vereinfachen.

https://de.wikipedia.org/wiki/Wi-Fi_Protected_Setup

Falsch umgesetzt bringt WPS natürlich einige Gefahren mit sich, hierzu werde ich nochmal separat etwas zu schreiben. Im konkreten Fall hatte der Betreiber nämlich die „Push Button Configuration“ in seiner Fritzbox aktiviert. Durch physikalischen Zugriff auf die Box konnte ich mit der WPS Taste das Hauptnetz erreichen, was Datenverkehr ungefiltert zugelassen hat. Natürlich hätte ich mir auch einfach einen LAN Port abgreifen können, aber leider hatte ich meinen USB LAN Adapter nicht dabei. Auch der Irrglaube, das Kennwort der FritzBox nicht ändern zu müssen (die Weboberfläche lässt sich aus dem GästeWlan nämlich nicht erreichen) war fatal: Nachdem ich per WPS mit dem normalen WLAN verbunden wurde, konnte ich natürlich auch die Weboberfläche erreichen und das aufgedruckte Kennwort der FritzBox verwenden.


Zusammengefasst

WPS gehört deaktiviert und das aufgedruckte Kennwort muss geändert werden. Außerdem sollte man hinterfragen, ob man die Geräte zugänglich machen muss. Moderne AccessPoints können sich gegen externe Brute-Force-Angriffe durch „wash“ und „reaver“ relativ gut schützen, jedoch handelte es sich bei meinem Beispiel einfach nur um einen einfachen Konfigurationsfehler, der am Ende schwere Folgen hätte haben können da ich physikalischen Zugriff auf das Gerät hatte (ohne erst meinen Koffer mit der WIFI PINEAPPLE auspacken zu müssen).

Das Vorgehen wurde natürlich mit dem Betreiber vorab abgestimmt.

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit. Beruflich bin ich erreichbar unter www.stefan-eggert.de

OrangeHRM unter Centos 7

Heute habe ich mich mit dem Thema OrangeHRM unter Centos 7 beschäftigt. Folgende Schritte sind für eine Installation unter Centos 7 notwendig:

Vorbereitung und Systemupdate

  • Minimal Installation Centos 7 installieren
  • Nach der Installation ist ein yum update erforderlich, um die aktuellsten Pakete zu installieren.

Apache Webserver installieren

Nachdem Centos nun ein Update aller Pakete erhalten hat, kann der Apache Webserver installiert werden. Hierzu wird wieder der Paketmanager yum verwendet:

Nachdem der Webserver installiert wurde, kann dieser mittels

gestartet werden.

Mit einem einfachen netstat -tulpen kann man nun kontrollieren, ob der Webserver auf auf dem Interface läuft:

Datenbank installieren und einrichten

Als nächstes muss MariaDB für die Datenbanken installiert werden. Dies erfolgt mit

Um mariaDB zu starten (auch beim Booten) wird nun folgendes ausgeführt:

Um die SQL Installation nun abzusichern, wird mysql_secure_installation angewendet. Die zu beantwortenden Fragen müssen alle mit Y beantwortet und ein neues Kennwort vergeben werden.

Als nächstes müssen diverse queries für die OrangeHRM Installation durchgeführt werden. Hierzu melden wir uns wie folgt am SQL Server an:

Anschließend erstellen wir die Datenbank „orangehrm“, indem wir am SQL Server folgende Befehle eingeben:

Danach erstellen wir einen neuen User (orangehrm_user) und vergeben ein gutes Kennwort (StrongPassword). Besonders das Kennwort sollte natürlich nicht per Copy Paste übernommen sondern geändert werden 😉 . Im Anschluss werden noch die Privilegien gesetzt und MariaDB wird mit \q verlassen.

PHP installieren

Als nächstes benötigt unser Webserver noch PHP. Um dieses mit allen möglichen Extensions zu installieren, fügen wir erst ein neues Repository hinzu:

Anschließend installieren wir php mit php-opcache und starten unseren Webserver neu:

OrangeHRM installieren

Jetzt müssen wir OrangeHRM installieren. Hierzu gehen wir in in das root Verzeichnis vom Webserver und laden die aktuelle Version von OrangeHRM mit wget. Sollte wget und und unzip noch nicht auf dem System sein, so kann dies mittels

installiert werden. Anschließend erfolgt der Download und das entpacken:

Jetzt müssen noch die Berechtigungen angepasst werden:

In der Datei /etc/my.cnf muss nun nach [mysqld] noch eine Zeile mit event_scheduler = ON  hinzugefügt werden. Dies machen wir mit vi /etc/my.cnf

Anschließend wird MariaDB neu gestartet:

Nun müssen wir wieder mit vi in der Datei /etc/httpd/conf/httpd.conf die Zeile  „AllowOverride None“ suchen und diese in „AllowOverride All“ ändern. Anschließend starten wir den Webserver neu. Hierdurch wird die .htaccess Datei aktiviert und verwendet.

Anschließend aktivieren wir noch die Firewall und deaktivieren selinux:

OpenHRM über das Webinterce installieren

Die Einrichtung des Servers ist abgeschlossen. Als nächsten muss OpenHRM installiert werden. Hierzu rufen wir im Browser die IP Adresse des Servers auf:

OrangeHRM installer

Die bestehende Datenbank wird mit dem Datenbanknamen, unseren Username und dem Password konfiguriert:

Datenbank konfigurieren

Als letztes legen wir noch einen Admin User an und stellen die Sprache / Zeitzone ein. Anschließend bestätigen wir die Einstellungen unter „Confirmation“ und installieren die Anwendung:

Nachdem die Installation erfolgreich gewesen ist, können wir als URL wieder die IP Adresse des Servers eingeben und sehen sofort den Startbildschirm.

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit. Beruflich bin ich erreichbar unter www.stefan-eggert.de

OctoPi über das Internet betreiben

OctoPi bzw. OctoPrint ist eine wirklich tolle Ergänzung im 3D-Druck! Fast jeder, der einen OctoPrint  Server im lokalen Netz betreibt, wird auf kurz oder lang den Wunsch haben, diesen auch aus dem Internet erreichbar zu machen.

Wer also einfach die entsprechenden Ports von seinem Router bzw. Firewall zum Printserver durchreicht, wird feststellen, das es derzeit mit OctoPi nicht möglich ist, das Webinterface vor neugierigen blicken zu schützen. Konkret kann also jeder aus dem Internet zumindest das Webinterface lesend erreichen und hat somit Zugriff auf Kameras und natürlich auch auf aktuelle Druckeinstellungen und Leistungsdaten.

OctoPi ohne Anmeldung

OctoPi ohne Anmeldung

 

Die derzeit beste Lösung ist es demnach, mit einem Reverse Proxy zu arbeiten. OctoPi selbst bringt bereits HAProxy mit, dieser steht somit aktiv zwischen Internet und dem Octoprint Backend.

HAProxy ist eine kostenlose Open-Source-Software, die einen Load-Balancer und Proxy-Server mit hoher Verfügbarkeit für TCP- und HTTP-basierte Anwendungen bereitstellt.

 

Das Config File /etc/haproxy/haproxy.cfg kann einfach mit vi auf dem PI geöffnet werden:

 

Anschließend muss der Bereich „backend octoprint“ um die beiden letzten Zeilen ergänzt werden:

 

Ebenso wird ein neuer Abschnitt „userlist UL1“ eingefügt:

Wichtig hierbei: USERNAME und PASSWORD sollten geändert werden 😉

 

Ergebnis: Beim Aufruf der OctoPi URL wird jetzt nach einem Benutzernamen und Password gefragt.

Authentifizierung durch HAProxy

Authentifizierung durch HAProxy

 

 

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit.

Beruflich bin ich erreichbar unter www.stefan-eggert.de

MAC OS: Springende Symbole im Dock deaktivieren

Wer kennt das Problem nicht: Die hüpfenden Symbole im Dock. Um das hüpfen und springen abzuschalten, kann man in der Konsole folgenden Befehl eingeben:

defaults write com.apple.dock no-bouncing -bool TRUE

Mit dem Befehl

killall Dock

wird der Dock dann neu gestartet. Um das hüpfen wieder zu aktivieren, einfach statt TRUE -> FALSE eingeben.

 

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit.

Beruflich bin ich erreichbar unter www.stefan-eggert.de

Shopware: Farbige Taps für den Mobile Chrome Browser

Browser

 

Seit einiger Zeit ist es möglich, seine Browserleiste im Browser Chrome zu färben. Dazu sind unter Shopware nur ein paar kleinere Schritte im Template erforderlich, welche ich gerne kurz erklären möchte. In meinem Beispiel wurde die mobile Browserleiste Pink gefärbt.

 

 

 

 

 

Bildschirmfoto 2016-09-05 um 21.42.11

 

Zunächst muss der META Tag im Backend unter Einstellungen > Textbausteine > frontend > index > header gesetzt werden. Dazu wird ein neuer Textbaustein mit folgenden Inhalt angelegt. Der Wert entspricht der Farbe im HEX Format. Ein paar Beispiele findet man bei html-color-codes.info

 

 

Anschließend muss die header.tpl aus dem Bare Template um folgenden Inhalt angepasst werden:

Unter der Zeile

muss der Eintrag

hinzugefügt werden. Anschließend muss das Theme kompiliert werden, damit die Änderungen übernommen werden.

 

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit.

Beruflich bin ich erreichbar unter www.stefan-eggert.de

Shopware: Plugins ohne Backend deinstallieren

Gerade eben habe ich mir das Backend zerschossen, als ich ein defektes Plugin installieren wollte. Das Problem hierbei: Das Backend (und Frontend) können über den Browser nicht aufgerufen werden. Es erscheint folgende Fehlermeldung:

Hintergrund war die Installation des Updates „Login und Bezahlen mit Amazon 2.0 (Amazon Payments)“ für Shopware 5.2.3.

Ein Plugin kann auch direkt von der Console deinstalliert werden. Hierzu geht man per SSH auf das Serversystem und wechselt in das Shopware Verzeichnis (bei mir /var/www/html). Dort ist der Unterordner „bin“, welcher die Console enthält.

Mit dem Befehl    erhält man eine Auflistung der Plugins.

Das gewünsche Plugin kann dann mit   vollständig gelöscht werden.

 Eine Lösung zur Installation des Plugins habe ich noch nicht, werde diese aber dann hier berichten.

Update: Wenn die oben genannte Methode nicht funktioniert, kann man das Plugin auch manuell aus der Datenbank löschen. Mehr davon in diesem Artikel

Über den Autor

Mein Name ist Stefan Eggert, als Freiberufler berate ich seit über 10 Jahren im Bereich IT-Sicherheit und forsche mit meinem Team zusätzlich rund um das Thema Schwachstellen. Spezialisiert habe ich mich auf DDoS, Schwachstellenmanagement und Kennwortsicherheit.

Beruflich bin ich erreichbar unter www.stefan-eggert.de