Kategorie: MySql

SSH Tunnel User

Auf Server A läuft ein MySQL oder MariaDB Server. Die Ports des Servers A sind nach aussen nicht geöffnet bzw erreichbar. Server B muss aber eine Verbindung aufbauen und auf die Datenbanken zugriff haben. Es besteht natürlich die Möglichkeit die IP von Server B in der Firewall von Server A zu whitelisten. Ist Server B aber zum Beispiel ein Gerät mit dynamischer IP (also zuhause) wird dies schon schwieriger.

Lösung

Wir tunneln die MySQL Verbindung von Server A zu Server B und erlauben dem User ausschließlich einen Tunnel aufzubauen und den MySQL Port zu benutzen.

Vorbereitung

Wir installieren autossh und legen den Benutzer an. Autossh kümmert sich später darum, den Tunnel aufrecht zu erhalten.

[auf Server B]: apt install autossh
[auf Server A]: adduser sshtunnel

AutoSSH Parameter (Server B)

autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -L 3307:127.0.0.1:3306 user@host -i ./ssh-key

/etc/sshd/sshd_config auf Server A

Match User sshtunnel
#AllowTcpForwarding yes
#X11Forwarding no
#PermitTunnel no
#GatewayPorts no
AllowAgentForwarding no
PermitOpen 127.0.0.1:3306
ForceCommand echo 'This account can only be used for [reason]'

AllowUsers sshtunnel

Wie stabil diese Lösung ist und ob es in produktiven Umgebungen eingesetzt werden kann, kann ich nicht beurteilen. In meinem Anwendungszweck funktioniert es zuverlässig.

Filed under: Debian, MySql, Security