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.