Skip to content

MariaDB - Wireguard

MariaDB
  • Ich hatte ja die Idee, das lokale Netz der Hetzner Cloud zu entfernen. Das kann man hier nachlesen. Dort hatte ich das mit der Redis Replication schon gemacht.

    Auf die Wireguard Installation gehe ich hier nicht nochmal ein, das sollte klar sein bzw. kann man im oben verlinkten Artikel nachlesen.

    Bedingungen

    10.10.1.1 Datenbank Server
    10.10.1.3 PHP Server
    10.0.0.3 Alte lokale Adressen
    

    MariaDB IP-Adresse

    In der Datei

    /etc/mysql/mariadb.conf/50-server.cnf
    

    müssen wir die IP-Adresse einstellen, auf welcher MariaDB lauscht.

    # Instead of skip-networking the default is now to listen only on
    # localhost which is more compatible and is not less secure.
    #bind-address            = 127.0.0.1
    bind-address            = 10.10.1.1
    

    Die bind-address muss der Wireguard Adresse des Datenbank Servers entsprechen. Vorher sollte der Wireguard Tunnel natürlich funktionieren.

    Neustart

    service mysqld restart
    

    Jetzt greifen die Anwendungen ja auf die Datenbank zu, dazu muss man in der jeweiligen Konfiguration die entsprechende Adresse einstellen.

    Beispiel Joomla Webseite

    nano configuration.php
    

    Dort findet man folgende Zeile

           public $host = '10.10.1.1';
    

    Die muss an die Wireguard Adresse des Datenbank Servers angepasst werden. Danach hatte ich immer noch Probleme die Datenbank zu erreichen. 🤔

    MariaDB Datenbank anpassen

    Schauen wir uns die User an.

    MariaDB [(none)]> SELECT User,Host FROM mysql.user;
    +-----------------+-----------+
    | User            | Host      |
    +-----------------+-----------+
    | joomla    | 10.0.0.3 |
    | root            | localhost |
    +-----------------+-----------+
    2 rows in set (0.001 sec)
    

    Ok, der User joomla hat nur Zugriff von 10.0.0.3, das war die alte lokale Adresse. Die Wireguard Adresse ist ja die 10.10.1.3 Somit bekommt der User auch keinen Zugriff auf die Datenbank. Also ändern.

    DROP USER 'joomla'@'10.0.0.3';
    CREATE USER 'joomla'@'10.10.1.3' IDENTIFIED BY 'PASSWORD';
    FLUSH PRIVILEGES;
    

    Dann sieht das so aus

    MariaDB [(none)]> SELECT User,Host FROM mysql.user;
    +-----------------+-----------+
    | User            | Host      |
    +-----------------+-----------+
    | joomla    | 10.10.1.3 |
    | root            | localhost |
    +-----------------+-----------+
    2 rows in set (0.001 sec)
    

    Gut, ich habe aber immer noch keinen Zugriff zur Datenbank. 🤔 🤔

    Es gibt ja noch folgenden Befehl in MariaDB

    grant all privileges on joomla.* to 'joomla'@'10.10.1.3' identified by 'PASSWORD';
    

    Damit gewährt man dem User joomla ja den Zugriff zur Datenbank und zwar genau von der IP-Adresse die man da rein schreibt. Die steht ja noch auf der alten IP-Adresse. Also den Befehl eingeben.

    grant all privileges on joomla.* to 'joomla'@'10.10.1.3' identified by 'PASSWORD';
    FLUSH PRIVILEGES;
    

    Danach funktioniert der Datenbank Zugriff.🤓

    Das muss man jetzt für alle User und Datenbanken machen. Wenn man sehr viele PHP-Seiten hat, kann das sehr aufwendig werden. Somit sollte man sich beim Konzept der Server schon vorher Gedanken drüber machen.

    iptables

    Sollte klar sein, das man die entsprechenden Regeln ergänzt, bzw. ändern muss.