mysql Port ändern

stefkey

Member
Hi,

ich möchte den mysql Port ändern. Um die Dateien su finden wo überall der Standardport 3306 drin steht habe ich folgenden Befehl abgesetzt:

grep -r 3306 /etc/

Es spuckt mir folgende Ort aus. Macht es nun Sinn diese alle zu ändern? Ja, oder?
Code:
amavis/conf.d/50-user
mysql/mariadb.conf.d/50-server.cnf
odbc.ini
php/5.6/cli/php.ini:mysqli.default_port = 3306
php/5.6/fpm/php.ini:mysqli.default_port = 3306
php/7.1/apache2/php.ini:mysqli.default_port = 3306
php/7.1/cli/php.ini:mysqli.default_port = 3306
php/7.1/fpm/php.ini:mysqli.default_port = 3306
php/7.0/cli/php.ini:mysqli.default_port = 3306
php/7.0/fpm/php.ini.ucf-old:mysqli.default_port = 3306
php/7.0/fpm/php.ini.ucf-dist:mysqli.default_port = 3306
php/7.0/fpm/php.ini:mysqli.default_port = 3306
services:mysql		3306/tcp
services:mysql		3306/udp
 

marce

Well-Known Member
naja, kommt drauf an, ob in den restlichen Konfig-Dateien seiner z.B. Webandwendungen die DB-Verbindung "komplett" (also Host + Port) oder "nur Host" angegenen ist - im letzteren Fall würde es sich ggf. schon bemerkbar machen, ob der Standard-Port auf den neuen Wert geändert wurde oder nicht...

... ich frag mich gerade eher, warum man den Standard-Port der DB ändern will - der Nachfolgeaufwand rechtfertigt aus meiner Sicht keinen noch so geringen Nutzen daraus - außer man will 2 Instanzen der DB-Engine laufen lassen, das dürfte aber seltenst der gewünschte Anwendungsfall sein...
 

marce

Well-Known Member
na, dann sollte man die default-Ports in den Client-Configs nicht ändern - sonst war's das mit der Obscurity...

... wobei - wenn man über eine Web-Software rein kommt, welche die DB nutzt bringt das auch nichts mehr - da kennt die Software den Port ja auch.

Meist scheißt man sich mit solchen Dingen selbst in's Bein - die meisten Client-Tools (und da sind auch durchaus "professionelle" Tools wie Plesk, Webmin und Konsorten gerne mal betroffen) vergessen solche Anpassungen gerne mal bei Updates - oder ziehen sie nicht sauber durch alle Optionen durch.

Vielleicht sucht der TE ja auch nur eine weitere Möglichkeit, sein aktuell gerade mal wieder laufendes System wieder über den Jordan zu schicken :)
 

nexus

Well-Known Member
ich möchte den mysql Port ändern

Wenn du uns vielleicht deine Absichten erklären könntest, die dahinter stehen, dann könnte man dir möglicherweise zielgerichteter helfen (eventuell auch mit anderen Lösungsansätzen).

[OT]
Meist scheißt man sich mit solchen Dingen selbst in's Bein

Das will ich sehen, wie du das bewerkstelligst... :p:D
[/OT]
 
D

Deleted member 15972

Guest
na, dann sollte man die default-Ports in den Client-Configs nicht ändern - sonst war's das mit der Obscurity...

... wobei - wenn man über eine Web-Software rein kommt, welche die DB nutzt bringt das auch nichts mehr - da kennt die Software den Port ja auch.

Meist scheißt man sich mit solchen Dingen selbst in's Bein - die meisten Client-Tools (und da sind auch durchaus "professionelle" Tools wie Plesk, Webmin und Konsorten gerne mal betroffen) vergessen solche Anpassungen gerne mal bei Updates - oder ziehen sie nicht sauber durch alle Optionen durch.

Vielleicht sucht der TE ja auch nur eine weitere Möglichkeit, sein aktuell gerade mal wieder laufendes System wieder über den Jordan zu schicken :)

Ich kann Dir nur von Herzen zustimmen.
Meistens versteigt man sich bei Sicherheitsbetrachtungen auf die unwichtigsten Teile und vergisst, dass meistens die Applikationen selbst anfällig sind, bzw. Phishing und Social Engineering in der Praxis eine extrem hohe Relevanz haben.
 

Joe User

Zentrum der Macht
naja, kommt drauf an, ob in den restlichen Konfig-Dateien seiner z.B. Webandwendungen die DB-Verbindung "komplett" (also Host + Port) oder "nur Host" angegenen ist - im letzteren Fall würde es sich ggf. schon bemerkbar machen, ob der Standard-Port auf den neuen Wert geändert wurde oder nicht...
(Web)Apps verwenden den nicht-Standard-Port nur, wenn sie explizit darauf konfiguriert werden, also Host+Port, andernfalls fallen sie auf die Schnauze.

Eine Änderung des Standard-Port macht nur Sinn, wenn man einen sehr schlecht konfigurierten Paketfilter umgehen will.

Will man hingegen nur eine zweite Instanz auf einem anderen Port laufen lassen, dann konfiguriert man lediglich diese Instanz und die darauf zugreifenden (Web)Apps um und nicht den Standard-Port.


Unabhängig davon ist die per grep erzeugte Liste im ersten Post sowohl unvollständig, als auch false-positive behaftet...
 

stefkey

Member
Hi, danke für die zahlreichen Antworten! Es ist eigentlich nur ein Spiel. Aber 1-2 Login-Versuche werden schon auf der Strecke bleiben denke ich ;-)

Der DB-Server ist (soll) nach extern nur von einer IP erreichbar (sein), und dieser Zugang darf eben nicht auf 3306 sein. Ein weiteres nettes Spiel wäre eben gewesen, es über eine Tunnelung einzurichten, geht aber nicht (ODBC kann das nicht soweit ich weiß..., oder? ) Die Daten sind unkritisch...

Kann man überhaupt in der DB Konfiguration den externen Zugriff auf eine IP (oder mehrere) beschränken? Wenn nicht, am besten mithilfe von IP tables, ja?

Danke für die Infos.
 

greystone

Member
Der DB-Server ist (soll) nach extern nur von einer IP erreichbar (sein),...

Soweit kein Problem und unabhängig vom Port.

und dieser Zugang darf eben nicht auf 3306 sein.

Was ist Dein Grund dafür?

Kann man überhaupt in der DB Konfiguration den externen Zugriff auf eine IP (oder mehrere) beschränken? Wenn nicht, am besten mithilfe von IP tables, ja?

Siehe:
https://dev.mysql.com/doc/refman/5.5/en/grant.html

Am besten beides verwenden: Mysql Berechtigungen und iptables:
Zwei Hürden werden nicht so einfach geknackt wie eine.
 

stefkey

Member
Moin,

der Port 3306 ist über ne Firewall gesperrt. D.h. der externe Zugreifer muss über einen anderen Port gehen. Ich sah darin bislang auch kein Problem den Port zu ändern. Ich habe es gesternabend umgestellt, es funktionierte auch soweit alles, außer der Postfix hatte ein Problem:
Im Log-File sehe ich folgende Meldung
Code:
warning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (111)
warning: mysql:/etc/postfix/sql/recipient-access.cf: table lookup problem

Das liegt wohl daran das ich in der mysql Konfiguration auch bind = 0.0.0.0 eingesetzt habe. Ist 0.0.0.0 falsch? Der DB Server muss von extern erreichbar sein (iptables im Einsatz). Muss ich jetzt tatsächlich die Postfix Konfigs anpassen?
 

greystone

Member
Ok. Es gibt also eine Firewall.

  • Wer konfiguriert die?
  • Wenn das nicht Du bist: Kannst Du mit demjenigen sprechen?
  • Und wenn 3306 gefiltert wird, wieso sind dann alle anderen Ports offen? (Hört sich nach so'ner Geschichte an wie: "Wir schützen alle vor Ihrer eigenen Dummheit dabei, dass Sie ungewollt MySQL-Serverdienste öffentlich anbieten und filtern mal prophylaktisch 3306").
  • Bist Du berechtigt diese Firewall einfach zu umgehen?

Umgehen kann man das immer. Aber ist es auch gut das zu tun? Ausserdem ist es vielleicht einfacher, wenn's nicht notwendig ist - auf lange Sicht. (Ich bevorzuge es mir keine Sonderlocken zu bauen).
 
Last edited by a moderator:

danton

Debian User
der Port 3306 ist über ne Firewall gesperrt. D.h. der externe Zugreifer muss über einen anderen Port gehen.

Wenn auf einem Dienst kein Port lauscht, dann brauche ich ihn auch nicht per Firewall zu sperren, denn er ist bereits geschlossen.
Sinnvoller als eine Portänderung wäre es übrigens, in der Firewall nur der IP den Zugriff auf den Port zu gestatten, die ihn auch braucht (was bei dynamischen IPs z.B. vom heimischen DSL-Anschluß natürlich schwierig wird).

Ich sah darin bislang auch kein Problem den Port zu ändern. Ich habe es gesternabend umgestellt, es funktionierte auch soweit alles, außer der Postfix hatte ein Problem:

Sofern kein Port angegeben ist, wird i.d.R. der Standard-Port zum Verbinden verwendet. Wird ein Nicht-Standard-Port verwendet, muß dieser explizit angegeben werden - so auch bei Postfix.

Muss ich jetzt tatsächlich die Postfix Konfigs anpassen?
Du mußt nicht nur von Postfix die Konfig anpassen, sondern von allen Programmen, die MySQL per TCP/IP-Verbindung erreichen wollen. Nicht betroffen sind Programme, die per Socket-Verbindung mit MySQL kommunizieren.
 

GwenDragon

Registered User
Firewall. Man kann sich und das System natürlich auch gern ausperren. Das entscheidest du.
Aber warum bindest du den mysqld nicht an 127.0.0.1 (=localhost)? Willst du lokalen Nutzern und Programmen verbieten, MySQL/MariaDB zu nutzen?
Oder wozu das?
 

danton

Debian User
stefkey will doch seinen MySQL-Server von extern erreichbar haben, da wäre die Bindung an 127.0.0.1 kontraproduktiv. Und dann kann eine Zugriffsbeschränkung auf bestimmte IPs per Firewall-Regel durchaus sinnvoll sein.
 

GwenDragon

Registered User
Dann muss er eben auch die Konfigurationen der anderen Programme anpassen, die MySQL nutzen.

Für Externe könnte man MySQL auch über SSH tunneln. Aber das kommt darauf an, was stefkey machen will.
 
Last edited by a moderator:
Top