- Wie kann der Fernzugriff auf MySQL/MariaDB sicher aktiviert werden?
- Allgemeine Schritte und Sicherheitsprinzipien
- Warum sollte MySQL nicht direkt mit dem Internet verbunden sein?
- Schritt für Schritt: MySQL für den Fernzugriff konfigurieren (Praktische Anleitung)
- Mehr Schutz – Fortschrittliche und empfohlene Lösungen (2025)
- Praktische Tipps zur Auswahl des Rechenzentrumsstandorts und der Konfiguration basierend auf der Anwendung
- Vorschläge für die my.cnf-Konfiguration für verschiedene Anwendungsfälle
- Abschließende Sicherheitscheckliste vor der Aktivierung des Fernzugriffs
- Schlussfolgerung und abschließende Empfehlung
- Häufig gestellte Fragen
Wie kann der Fernzugriff auf MySQL/MariaDB sicher aktiviert werden?
In diesem aktualisierten Leitfaden (2025) stellen wir Ihnen praktische und sichere Methoden für den Fernzugriff auf MySQL- und MariaDB-Server vor. Ziel ist es, Website-Administratoren, DevOps-Teams, Datenbankteams und Entwicklern eine praktische Checkliste an die Hand zu geben, um den Zugriff auf autorisierte Benutzer und Anwendungen zu beschränken, ohne Kompromisse bei der Sicherheit einzugehen.
Allgemeine Schritte und Sicherheitsprinzipien
Zusammenfassung der Schritte:
- Architektonisches Design: Niemals Die Datenbank sollte nur dann direkt im öffentlichen Internet veröffentlicht werden, wenn dies unbedingt erforderlich ist.
- Nutzen Sie ein privates Netzwerk (VPC/VLAN), VPN oder SSH-Tunneling.
- Zugriff basierend auf IP-Adressen einschränken und Benutzer mit Mindestpunktzahl.
- TLS/SSL-Verschlüsselung für den Datenbankverkehr und Verwendung starker Authentifizierung (*caching_sha2_password* / *X.509*).
- Aktivieren Sie Protokollierung und Ratenbegrenzungen, verwenden Sie Firewalls und Intrusion-Detection-Systeme (IDS/IPS).
- Überprüfen Sie Leistung und Latenz und wählen Sie den geeigneten Rechenzentrumsstandort basierend auf der Anwendung aus.
Warum sollte MySQL nicht direkt mit dem Internet verbunden sein?
Datenbanken sind aufgrund ihrer sensiblen Daten und Zugangsdaten ein attraktives Ziel für Hacker. Das Öffnen von Port 3306 für das Internet ohne Einschränkungen oder Verschlüsselung erhöht das Risiko von Datenlecks, Brute-Force-Angriffen und DDoS-Attacken.
Schritt für Schritt: MySQL für den Fernzugriff konfigurieren (Praktische Anleitung)
1) Bearbeiten Sie die Konfigurationsdatei
Gemeinsame Konfigurationsdateien:
- MySQL (Debian/Ubuntu):
/etc/mysql/mysql.conf.d/mysqld.cnf - MariaDB:
/etc/mysql/mariadb.conf.d/50-server.cnf
Standardmäßig kann die Zeile Bindungsadresse Zu 127.0.0.1 ist festgelegt. Um Verbindungen von einer bestimmten IP-Adresse oder von allen Adressen zu akzeptieren:
Empfohlen: Bestimmte IP-Adresse zulassen:
bind-address = 192.0.2.10Nicht empfehlenswert, außer in einem privaten Netzwerk:
bind-address = 0.0.0.0Nach der Änderung:
systemctl restart mysql
2) Erstellen eines sicheren Benutzers mit Einschränkungen
Niemals vom Benutzer Wurzel Nicht für Remote-Verbindungen verwenden. Beispielbefehle:
mysql -u root -p
CREATE USER 'appuser'@'203.0.113.45' IDENTIFIED WITH caching_sha2_password BY 'StrongP@ssw0rd!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'appuser'@'203.0.113.45';
FLUSH PRIVILEGES;Wichtige Punkte:
- Es ist wesentlich sicherer, eine bestimmte IP-Adresse ('203.0.113.45') anstelle von '%' zu verwenden.
- Bestimmung Mindestberechtigungen (Prinzip der geringsten Berechtigung).
- Verwenden Sie private Adressen für Verbindungen innerhalb des privaten Netzwerks (z. B. 10.xxx).
3) SSL/TLS für MySQL aktivieren
Kurzes Beispiel für die Erstellung von Zertifizierungsstellen und Zertifikaten mit OpenSSL:
openssl genrsa 4096 -out ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem -subj "/CN=MyDB-CA"
openssl genrsa 4096 -out server-key.pem
openssl req -new -key server-key.pem -out server-req.csr -subj "/CN=db.example.com"
openssl x509 -req -in server-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 3650
openssl genrsa 4096 -out client-key.pem
openssl req -new -key client-key.pem -out client-req.csr -subj "/CN=dbclient"
openssl x509 -req -in client-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 3650Einlegen von Zertifikaten my.cnf:
[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pemNach dem Neustart besteht die Möglichkeit, von Benutzern die Verwendung von Zertifikaten zu verlangen:
ALTER USER 'appuser'@'203.0.113.45' REQUIRE X509;
-- یا فقط TLS بدون client cert:
ALTER USER 'appuser'@'203.0.113.45' REQUIRE SSL;Sichere Verbindung vom Client:
mysql -u appuser -p -h db.example.com --ssl-mode=REQUIRED --ssl-ca=ca.pem
4) Verwendung eines SSH-Tunnels
Geeignet für Administratoren und eingeschränkten Zugriff, wenn TLS nicht verfügbar ist. Auf dem Client-Rechner:
ssh -fN -L 3306:127.0.0.1:3306 [email protected]Diese Methode stellt eine Verbindung zum lokalen Port 3306 her, der zum Remote-Server getunnelt wird.
5) Firewall-Einstellungen
Beispiel mit ufw (nur bestimmte IP-Adressen zulassen):
ufw allow from 203.0.113.45 to any port 3306 proto tcpMit firewalld:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port protocol="tcp" port="3306" accept'
firewall-cmd --reloadPortprüfung:
ss -tlnp | grep 3306
telnet db.example.com 3306
Mehr Schutz – Fortschrittliche und empfohlene Lösungen (2025)
Nutzung eines privaten Netzwerks, einer VPC und eines VPNs
Anstatt den Datenbankport für das Internet zu öffnen, verwenden Sie ein privates Netzwerk zwischen Anwendung und Datenbank. Wenn Sie unseren Service nutzen, können Sie ein privates Netzwerk und BGP/VRF für eine sichere Verbindung verwenden.
Für verteilte Benutzer wird VPN oder IPsec empfohlen, damit der Datenbankverkehr ausschließlich über verschlüsselte Kanäle läuft.
Bastion-Host und Zero Trust
Die Bereitstellung eines Bastion-Hosts mit Zwei-Faktor-Authentifizierung (MFA) und vollständiger Sitzungsprotokollierung ist sicherer als das direkte Öffnen von Ports. Das Zero-Trust-Modell sieht vor, dass jede Verbindung authentifiziert werden muss und nur bestimmte Ressourcen zugelassen werden.
Authentifizierung und Algorithmen
- MySQL 8: Verwendung von
caching_sha2_passwordAnstattmysql_native_passwordEs ist sicherer. - In heiklen Fällen verwenden X.509-Clientzertifikate Empfohlen.
- Die Verwaltung von Passwörtern mit einem Secret Manager oder Vault (wie HashiCorp Vault, AWS Secrets Manager) ist besser als das Speichern von Passwörtern in Dateien oder im Code.
Schutz vor Angriffen und Einschränkungen
- Halten Sie max_connect_errors niedrig und
Namensauflösung überspringenAktivieren Sie diese Option, um DNS-bedingte Verzögerungen zu vermeiden. - Verwendung von fail2ban mit einem speziellen mysql-auth-Filter zum Blockieren schädlicher IPs.
- Gesamte Verbindungsratenbegrenzung und geeignete Einstellung für connection_timeout.
Überwachung und Protokollierung
Die Aktivierung von Audit-Logs, allgemeinen Logs und Slow-Query-Logs sowie die Verwendung von Tools wie Prometheus + Grafana oder Percona Monitoring sind unerlässlich, um schädliche Muster und Leistungsprobleme zu erkennen.
Praktische Tipps zur Auswahl des Rechenzentrumsstandorts und der Konfiguration basierend auf der Anwendung
Hinweise je nach Antragsart:
- Handel (Forex/Krypto): Eine möglichst geringe Round-Trip-Time (RTT) zum Börsen-/Händlerserver ist wichtig; daher empfiehlt sich ein Standort in Börsennähe. Unser Service bietet dies an über 85 Standorten.
- Gaming: Gaming-Datenbanken erfordern niedrige Ping-Zeiten; optimiertes BGP-Routing und ein Netzwerk mit geringer Latenz sind wichtig. Gaming-VPS-Server und Anti-DDoS-Server sind hilfreich.
- KI/Rendering: Bei hohen E/A- und Rechenlasten reduziert die Kombination von GPU- und Datenbankservern in derselben privaten Netzwerkzone die Latenz.
- Websites und Anwendungen: Die Verwendung eines CDN und eines Anwendungsschicht-Caches (Redis/Memcached) zusammen mit einer Datenbank in einem privaten Netzwerk bietet das beste Verhältnis von Geschwindigkeit und Kosten.
Vorschläge für die my.cnf-Konfiguration für verschiedene Anwendungsfälle
Konfiguration für einen Server mit mittlerer Auslastung (Web/Anwendung):
[mysqld]
bind-address = 10.0.1.5
max_connections = 200
innodb_buffer_pool_size = 2G
skip-name-resolve = 1
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pemFür hochlastfähige, dedizierte KI-/Rendering-Server:
innodb_buffer_pool_size = 16G
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000Die Einstellungen sollten stets an die Anforderungen von RAM, E/A und Anwendung angepasst werden.
Abschließende Sicherheitscheckliste vor der Aktivierung des Fernzugriffs
- Verwendung eines privaten Netzwerks oder VPN für den Datenbankverkehr
- Beschränkung der zulässigen IP-Adressen in der Firewall
- Erstellen Sie Benutzer mit minimalen Berechtigungen und verwenden Sie sichere Hash-Algorithmen.
- Aktivieren Sie TLS/SSL und gegebenenfalls Clientzertifikate.
- Für Remote-Verbindungen wird kein Root-Zugriff verwendet.
- Protokollierung aktivieren; Protokolle an externes System senden
- Verbindungslimits festlegen und fail2ban verwenden
- Überwachung und Alarmierung bei ungewöhnlichen Verkehrsspitzen oder Fehlern
- Regelmäßige Datensicherungen und Wiederherstellungstests
Schlussfolgerung und abschließende Empfehlung
Der Fernzugriff auf MySQL sollte im Jahr 2025 schnell und sicher sein. Empfohlene Vorgehensweise: Zunächst ein privates Netzwerk oder VPN in Betracht ziehen, anschließend TLS und IP-Beschränkungen hinzufügen und den Zugriff auf das absolute Minimum beschränken.
Die Nutzung von Bastion Host, MFA und erweiterter Protokollierung erhöht Ihre Sicherheit. Benötigen Sie einen hochstabilen Server, ein Netzwerk mit geringer Latenz und umfassende Sicherheitsfunktionen? Unsere Services umfassen über 85 Standorte weltweit, GPU-Server, Compute-Server, Anti-DDoS-Server, Trading- und Gaming-VPS, CDN und BGP-Netzwerk – mit vorkonfigurierten und individuell anpassbaren Lösungen.









