Cybercrime Schutz – Vorbereitung


[expand title=“mehr lesen…“]

Cybercrime Schutz – Vorbereitung

In diesem Artikel werden alle notwendigen oder empfohlenen Vorbereitungsschritte genannt um unseren Cybercrime Schutz optimal zu nutzen.

DNS

Im Optimal-Fall kann über die geschützte Domain nicht auf den „echten“ Server zurückgeführt werden.
Es gilt zu vermeiden, dass ein Angreifer z. B. einen DDOS Angriff über eine Subdomain starten kann, die direkt auf den Server zeigt oder aufgrund der Subdomain auf die Server IP Adresse.

Für E-Mail, SSH und FTP Verbindung kann z. B. die Server-Domain genutzt werden:

Whitelisten von IP-Adressen

Abgleiche von z. B. der WaWi erzeugen so viele Aufrufe, dass diese schnell als Angriff gewertet werden können.
Um dort Probleme vorzubeugen, lohnt es sich die IP Adressen uns zu nennen, damit wir diese Whitelisten können.

Shopware — trusted Proxies

Gemäß Dokumentation muss hier der Shopware Shop konfiguriert werden, IPs:

  1. 37.228.156.92
  2. 178.250.14.5

Download als PDF


[/expand]




Wie sichere ich das Shopware backend via .htaccess ab?


[expand title=“mehr lesen…“]

Wie sichere ich das Shopware backend via .htaccess ab?

Es empfiehlt sich das Shopware Backend vor dem eigentlichen Login bereits mit Zugriffsberechtigungen zu versehen. Dies kann über die .htaccess geregelt werden. Im besten Fall wird dieser direkt auf einzelne IPs beschränkt. Da hier jedoch nicht jeder mit einer festen IP Adresse arbeitet, kann der Zugriff über mod_geoip auf bestimmte Länder begrenzt werden.

Folgend dazu ein Code-Beispiel für die .htaccess, dass den Zugriff auf das Frontend nur für DE, AT und CH erlaubt und den Backend Zugriff nur über DE erlaubt:

# Nur DE, CH und AT erlauben
<IfModule mod_geoip.c>
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE AT AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE CH AllowCountry
# allow US for GoogleBot, Paypal etc.
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry

Require env AllowCountry
</IfModule>

# Backend Zugriff absichern
<FilesMatch „backend“>
<IfModule mod_geoip.c>
SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountryBackend

Require env AllowCountryBackend
</IfModule>
</FilesMatch>

Sollte der Zugriff auf das Backend direkt über die IPs abgesichert werden können, so kann folgender Code verwendet werden:

# Backend Zugriff absichern
<FilesMatch „backend“>
<IfModule mod_authz_core.c>
# Apache 2.4
# List of ip adresses that can access the backend
Require ip 1.2.3.4
Require ip 5.6.7.8

</IfModule>
</FilesMatch>


[/expand]




Wie erstelle ich ein Wrapper-Skript für einen Shopware Cronjob?


[expand title=“mehr lesen…“]

Wie erstelle ich ein Wrapper-Skript für einen Shopware Cronjob?

Wenn Sie Ihre Shopware Cronjobs mit Hilfe der Shopware Console ausführen möchten, benötigen Sie ein Wrapper-Skript.

Zunächst konfigurieren Sie bitte die gewünschten Cronjobs in Ihrem Shopware Backend. Wie Sie dabei vorgehen, erfahren Sie in der Shopware Community unter folgendem Link: Cronjobs — Konfiguration in Shopware

Beispiel für ein Wrapper-Skript

Um skriptgesteuert die Cronjobs über die Shopware Console auszuführen, erstellen Sie ein Skript mit folgendem Inhalt und der Dateiendung *.sh und legen es auf Ihrem Speicherplatz ab:

Wrapper Skript für Shopware Cron am Beispiel von PHP 7.0

#!/bin/sh

/usr/local/php7.0/bin/php ~/Shopware-Verzeichnis/bin/console sw:cron:run

Bitte passen Sie im oberen Beispiel den Pfad zu Ihrem Shopware-Verzeichnis und ggf. die PHP Version an und geben dem Skript die Rechte 700 (-rwx——). Wie Sie die Rechte anpassen können, erfahren sie unter folgendem Link: CHMOD — Welche Rechte sollte ich vergeben? Wie geht dies? Hinweis

Die Tilde (~) innerhalb der Pfadangabe löst automatisch Ihr Heimatverzeichnis auf.

Sie können den Pfad im Skript also wie folgt angeben: „~/shopwareverzeichnis/bin/console“

Die Alternative ohne Tilde sähe so aus: „/home/IhrUsername/shopwareverzeichnis/bin/console“ Hinweis

Dieses Wrapper-Skript kann natürlich angepasst werden, so dass andere Shopware Consolen Tasks durchgeführt werden. Wenn Sie beispielsweise automatisiert den Cache über die Shopware Console löschen möchten, ändern Sie im Skript das „sw:cron:run“ zu „sw:cache:clear“ . Eine Befehlsübersicht der Shopware Console finden Sie unter folgendem Link: Shopware CLI: Nützliche Befehle & Tricks

Einrichtung des ServerCon Cronjobs

Anschließend müssen Sie das Skript triggern, indem Sie einen Cronjob in ServerCon erstellen und den Pfad zu dem soeben erstellen Skript angeben . Den passenden Artikel dazu finden Sie hier: Wie richte ich einen Cronjob ein?

Der Cronjob ist nun eingerichtet und wird im gewünschten Turnus durchgeführt.


[/expand]




Shopware 6 kostenfrei testen!


[expand title=“mehr lesen…“]

Shopware 6 kostenfrei testen!

Es ist endlich soweit: Shopware hat die sechste Version Ihres Shopsystems veröffentlicht und umfangreiche technologische Verbesserungen vorgenommen. Ab sofort haben Sie die Möglichkeit Shopware 6 für 30 Tage völlig kostenfrei und unverbindlich zu testen. In diesem Artikel erklären wir Ihnen, wie Sie einen Shopware Demoshop bestellen und diesen vor Ende der Testphase in ein reguläres Hosting überführen können.

Shopware 6 Demoshop bestellen

Den Demoshop können Sie unter folgender URL beauftragen:
https://www.shopware.com/de/produkte/shopware-6/#demo

Für die Einrichtung benötigen wir lediglich Ihre E-Mail-Adresse und die zukünftige Shop-Domain. Sobald Sie das Online-Formular ausgefüllt und verschickt haben, erhalten Sie an die angegebene E-Mail Adresse folgende Informationen zum Demoshop zugeschickt:

— URL zum Shopware Demoshop und zum Backend
— Zugangsdaten zum Shopware Backend
— FTP-Zugangsdaten Hinweis

Hinweis: Sollten Sie nach 5 Minuten keine Mail erhalten, prüfen Sie bitte Ihren Spam-Ordner und wenden Sie sich ggf. an unseren Support.

Überführung des Shop in ein reguläres Hosting

Während der Testphase können Sie uns damit beauftragen den Demoshop in ein reguläres Hosting zu überführen. Je nach dem wie umfangreich Ihr Shop aufgebaut wird, entscheidet sich welches Hostingprodukt am besten zu Ihrem Vorhaben passt.

Für kleine bis mittelgroße Shops mit bis zu 30.000 Besuchern pro Monat empfehlen wir unseren Managed Shophosting Tarif. Den Link zum Bestellablauf finden Sie unter folgendem Link:
https://www.profihost.com/shop-hosting

Für umfangreichere Shops empfehlen wir unsere Managed FlexServer. Eine Vergleichsübersicht und die Bestellunterlagen finden Sie hier: https://www.profihost.com/managed-server

Wenn Sie Ihren Shopware Shop komplett neu aufbauen, oder wenn Sie mit weniger als 30.000 Besuchern / Monat rechnen, eignet sich unser Managed Shophosting Tarif. Geben Sie während der Bestellung im ersten Schritt Ihre Wunschdomain an, als Paket „Shopware“ und unter „Paketpreis & Zahlung“ Ihre Zahlungsweise. Anschließend öffnen sich einige „Extra Features„, unter anderem sehen Sie hier den Auswahlpunkt „Shopware CE Demoshop umziehen für 0,00 € / Monat„.

Sobald Sie auf „Weiter zur Dateneingabe“ geklickt haben, geben Sie bitte unter „Bemerkungen“ Ihre vorläufige Demoshop-URL an, damit wir Ihren Demoshop 1 zu 1 migrieren können.

Häufige Fragen

Kann ich eine Domain angeben, die bereits in Verwendung ist?

  • Ja, Sie können auch eine bereits registrierte Domain angeben, die Sie bereits verwenden. Dies hat keine Auswirkungen auf Ihre Produktivumgebung. Für die Testphase generieren wir eine vorläufige Domain für Sie, die sich aus der Wunschdomain und der Serveradresse zusammensetzt.

Werden alle meine Daten bei der Übernahme des Testshops übernommen?

  • Nach der Migration auf einen regulären Hostingserver können Sie genau da weitermachen, wo Sie aufgehört haben. Der Datenbestand bleibt 1 zu 1 bestehen. Es ändern sich lediglich folgende Daten:
    • FTP-Zugangsdaten
    • Zugangsdaten zur Datenbank
    • Serveradresse und IP-Adresse
    • Shop-URL (Sie erhalten nach der Migration eine weitere vorläufige Domain)

Ändern sich meine Zugangsdaten?

  • Die Zugangsdaten zum Shopware Backend bleiben bestehen. Es ändern sich lediglich die FTP-Zugangsdaten und die Zugangsdaten zu Ihrer Datenbank.

Was passiert, wenn die 30 tägige Testphase ausläuft?

  • Sobald die Testphase nach 30 Tagen beendet wird, wird Ihr Demoshop deaktiviert und nach weiteren 10 Tagen gelöscht. Sollte Ihr Demoshop bereits deaktiviert sein, können Sie unseren Support kontaktieren, damit der Shop reaktiviert wird und in eine Live-Umgebung überführt werden kann.


[/expand]




Shopware Fehler nach Update der PHP Version


[expand title=“mehr lesen…“]

Shopware Fehler nach Update der PHP Version

PHP Version aktualisieren

Im Zuge des des Shopware Updates auf die Version 5.6 muss die PHP Version auf 7.2 oder höher aktualisiert werden. Wie Sie die Umstellung der PHP-Version vornehmen, erfahren Sie in folgendem Wissensdatenbankartikel (hier beispielhaft für PHP 7.2): PHP 7.2 aktivieren

Ursache des Fehlers identifizieren

Wenn Sie anschließend einen Fehler in Ihrem Shop feststellen, kann dies an Shopware Plugins liegen, die mit der höheren PHP-Version aus unterschiedlichen Gründen nicht kompatibel sind. Zur Überprüfung, welche Plugins das sind, können Sie in Ihrer neuen php.ini Datei in Ihrem Home-Verzeichnis das PHP Error-Reporting aktivieren. Wie Sie dies tun, erfahren Sie in folgendem Wissensdatenbankartikel: PHP Error Reporting aktivieren

In der nun erstellten Datei „phperror.log“ steht, welches Plugin nicht kompatibel mit PHP 7.1 oder höher ist. Hier ist eine beispielhafte Fehlermeldung, wie sie im Log zu finden sein kann: Fehlermeldung

[16-Aug-2019 11:39:25 Europe/Berlin]PHP Fatal error:  The file /home/USER/www.DOMAIN.TLD/engine/Shopware/Plugins/Community/Core/SwagLicense/Bootstrap.php was encoded by the ionCube Encoder for PHP 5.6 and cannot run under PHP 7.1 or later.

Deaktivierung von nicht kompatiblen Plugins

Hier ist zu sehen, dass das Plugin ,,SwagLicense“ nicht kompatibel mit PHP 7.1 oder höher ist, da das Plugin unter PHP 5.6 mit dem IonCube Loader veschlüsselt wurde. Hierbei wird von uns empfohlen, das fehlerhafte Plugin zunächst zu deaktivieren, um Ihre Website auch unter PHP 7.2 lauffähig zu machen. Zum deaktivieren von Plugins gehen Sie in Ihr Shopware Backend und wechseln in den Plugin Manager. Hier haben Sie unter dem Punkt ,,Installiert“ die Möglichkeit, Ihre Plugins zu verwalten. Durch einen Klick auf den Stift bei dem entsprechenden Plugin können Sie dieses deaktivieren. Hinweis

Der Einsatz des Shopware Lizenz-Managers (SwagLicense) ist unter Shopware 5.6 nicht möglich. Bitte löschen Sie das Plugin, wenn ein Update auf 5.6 bevorsteht.

Nun sollte der Shop wieder erreichbar sein. Sollte dies nicht der Fall sein, überprüfen Sie bitte erneut das PHP Error-Log, ob noch weitere Plugins nicht kompatibel mit PHP 7.1 oder höher sind. Sollte dies der Fall sein, deaktivieren Sie diese bitte ebenfalls.

Wir empfehlen das PHP Error Reporting nach erfolgreichem Update zu deaktivieren. Löschen Sie dazu einfach den entsprechenden Eintrag aus Ihrer php.ini.


[/expand]




elasticsearch mit Shopware auf einer VM


[expand title=“mehr lesen…“]

elasticsearch mit Shopware auf einer VM

Setzen Sie elasticsearch in Kombination mit Shopware auf einer VM ein, sollten passende Settings in  Shopware in der config.php Datei definiert sein:

’number_of_replicas‘ => 0,
’number_of_shards‘ => 0,
‚version‘ => ‚6.5.1‘,
‚dynamicMappingEnabled‘ => false,

Die elasticsearch Version wird laufend aktualisiert und muss auch bei Shopware angepasst werden.

Vollständige Konfiguration und Hintergrund: https://developers.shopware.com/sysadmins-guide/elasticsearch-setup/


[/expand]




Shopware Newsletter Anmeldung nicht möglich (Fehler 500) – Lösung


[expand title=“mehr lesen…“]

Shopware Newsletter Anmeldung nicht möglich (Fehler 500) – Lösung

Problem

Nach der Anmeldung zu einem Newsletter wird ein Fehler 500 oder folgende Fehlermeldung angezeigt:

PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sAdmin::subscribeNewsletter() must be of the type integer, string given

Haben Sie keine Fehlermeldung, sondern bekommen nur Fehler 500 angezeigt, so können Sie mit Hilfe des PHP Error Reportings die Ursache erörtern – im nachfolgendem Artikel wird die Vorgehensweise beschrieben:

PHP Error Reporting aktivieren

Ursache

Auf Grund einer Fehlkonfiguration im Shop wird eine Zeichenfolge (string) übergeben, obwohl die Funktion einen Zahlenwert (int) erwartet. Der falsche Übergabetyp sorgt dann für den Fehler.

Lösung

Im Shopware Backend muss unter Einstellungen → Grundeinstellungen → Storefront → Anmeldung/Registrierung in der Zeile „Standard-Empfangsgruppe (ID) für registrierte Kunden (System / Newsletter)“ eine ID (numerischer Wert) stehen. Wenn dieses Feld leer ist oder ein Wort enthält, resultiert das in dem o.g. Fehler – um dies zu beheben tragen Sie bitte eine Zahl in dieses Feld ein.

Anschließend ist die Newsletteranmeldung wieder möglich.


[/expand]




Shopware Fehler nach Update


[expand title=“mehr lesen…“]

Shopware Fehler nach Update

Sollte Ihr Shopware-Shop nach einem Update nicht mehr erreichbar sein und Sie erhalten einen Error 500, dann führen Sie bitte folgende Schritte durch:

  1. Aktivieren Sie das PHP Error Reporting. Wie das geht, erfahren Sie in nachfolgendem Artikel:
    PHP Error Reporting aktivieren
  2. Hier finden Sie folgende Fehlermeldung:
    Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‚element_id‘ cannot be null in /home/USER/www.DOMAIN.TLD/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php
  3. Führen Sie in MySQL folgende Befehle aus:
    INSERT INTO s_core_config_elements (form_id, name, value, label, description, type, required, position, scope) VALUES (‚0‘, ‚trackingUniqueId‘, ‚ s:0:““;‘, ‚Unique identifier‘, ‚ ‚, ‚text‘, ‚0‘, ‚0‘, ‚1‘) und anschließend
    SELECT id FROM s_core_config_elements WHERE name = ‚update-unique-id‘
    Wenn die SELECT-Abfrage genau ein Ergebnis ausgibt, dann merken Sie sich bitte die  entsprechende ID und fügen diese in das folgende SQL-Statement ein:
    UPDATE s_core_config_elements SET name=“trackingUniqueId“ WHERE id=ID
  4. Anschließend wird Ihre Website wieder erfolgreich angezeigt.


[/expand]




Shopware 6: Worker im Hintergrund laufen lassen


[expand title=“mehr lesen…“]

Shopware 6: Worker im Hintergrund laufen lassen

Hintergrund
In der Standardkonfiguration führt Shopware 6 Browser Prozesse aus, um alle Hintergrundaufgaben zu erledigen. Dadurch werden andere Web-PHP-Prozesse blockiert. Sofern nun mehrere Benutzer gleichzeitig im Backend arbeiten, verlangsamt dies entsprechend die Seitengeschwindigkeit.

Um dieses Performance Einbußen zu minimieren, können die Prozesse auf dem Server direkt ausgeführt werden.

Deaktiveren der Browser Prozesse
Zum deaktivieren der Browser Prozesse muss folgendes in Shopware hinzugefügt werden: /home/$USER/$domain.de/config/packages/shopware.yaml

shopware:
    admin_worker:
        enable_admin_worker: false

Damit die Einstellung greift, muss der Cache geleert werden:

php bin/console cache:clear

Cronjobs einrichten
Um die Cronjobs zu erstellen, müssen folgende Skripte hochgeladen werden: sw_consumer.sh

#!/bin/bash
php /home/$user/$domain.de/bin/console messenger:consume –time-limit=295 –memory-limit=512M
sw_scheduled_task.sh

#!/bin/bash
php /home/$user/$domain.de/bin/console scheduled-task:run –time-limit=295 –memory-limit=512M

Wie Cronjobs eingerichtet werden finden Sie hier:

Wie richte ich einen Cronjob ein?

https://wissen.webideen.at.profihost.com/wissen/artikel/wie-richte-ich-einen-cronjob-ein/embed/#?secret=Xq0CAiObVr

Folgende Werte sollten gesetzt werden:

* Ausführung alle 5 Minuten
* Laufzeit 300 Sekunden
* Memory 512MB


[/expand]




Shopware 6: Sessions über Redis steuern


[expand title=“mehr lesen…“]

Shopware 6: Sessions über Redis steuern

Standardmäßig speichert Symfony die Sessions auf Dateiebene. Im folgendem Artikel wird beschrieben, wie die Sessions über Redis gesteuert werden können.
Hinweis

Aktuell wird Redis von Shopware 6 nicht offiziell unterstützt. Der beschriebe Weg entspricht der Symfony Dokumentation.

Redis kann momentan ausschließlich auf einem eigenem FlexServer verwendet werden. Vorab müssen wir jedoch Redis installieren, kommen Sie dafür gerne auf uns zu.

In der genutzten php.ini wird die Redis Extension hinzugefügt werden:

extension=“redis.so“

Anschließend werden folgende Dateien hinzugefügt: config/services.yaml

services:
    Redis:
        class: Redis
        calls:
            - method: connect
              arguments:
                  - '%env(REDIS_SESSION_SOCKET)%'
    Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
        arguments:
            - '@Redis'

config/services.yaml

framework:
    session:
        handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler

In der .env Datei wird die entsprechende Variable zum Socket noch gesetzt:
.env

REDIS_SESSION_SOCKET=/home/tmp/redis.sock

Damit die Änderung greifen muss, muss der Cache geleert werden:

$ php bin/console cache:clear
$ php bin/console bin/console theme:compile


[/expand]