Wie lässt sich auf einem Apache Server ein Port aktivieren ohne, dass dieser anschließend für eine andere Anwendung blockiert ist?
Hab hier einen angemieteten Server wo ich grade versuche ein Datenbanksystem (mongo db + mongo-db express) zum Laufen zu kriegen. Der Server läuft bei einem Hostingdienst auf dem Apache2 schon vorinstalliert ist. Nun zum Problem: Ich muss um das Ganze zum Laufen zu kriegen anscheinend einen bestimmten Port (27017 oder 8081) freigeben. Durch die Vorkonfiguration ist/war außerdem der Browsing Zugriff auf ein bestimmtes Verzeichnis beschränkt. Dieses Problem konnte ich durch Anpassen der Konfigurationsdateien (Pfaderweiterungen + Hinzufügen des entsprechenden Porteintrages) lösen. Leider klemmt nun das Ganze woanders: Es gibt beim Zugriff egal ob via Browser oder lokal einen 403 "forbidden" Fehler und MongoDB Express lässt sich über die Konsole nicht neu starten weil anscheinend der Port durch mehrere Prozesse (Zahl variiert) belegt ist. Ich hab das Ganze auch bereits ohne Apache Konfiguration probiert und nur mit einem Eintrag in der rules.v4 von IP-Tables (die nicht vorinstalliert war), allerdings bekomm ich damit sowohl mit, als auch ohne den Eintrag lediglich einen Network Error und kann überhaupt nicht auf das Verzeichnis zugreifen. Es geht weder mit noch ohne Netzwerkregel und ohne die Pfadwhitelist von Apache komm ich nirgends rein. Hat irgendeiner, der sich mit der Thematik auskennt evtl. eine Ahnung wie sich dieses Problem beheben lässt? Irgend ein zusätzliches Script, Bridge oder Ähnliches installieren? Apache2 evtl. komplett deinstallieren? (Sorry für die Fragen, aber bin kein Profi und mache das mehr oder weniger zum ersten mal)
2 Antworten
- Port auswählen, der von keinem Programm genutzt wird.
- Programm so konfigurieren, dass es den freien Port nutzt, und starten
- Port in der Firewall freigeben
Das sich mit der Methode einfach nicht auf ServerIP:8081 zugreifen lässt> "Netzwerkfehler/Seiten-Ladefehler" weder mit dem Browser noch mit Lynx obwohl Port in der Konsole aktiv ist und der richtige Prozess lauscht (bzw. 403 forbidden wenn ich den Zugriff in den Apache Dateien definiere). Ich hab auch keine Firewallregeln gefunden, die den Zugriff blockieren bzw. ich hab es jetzt mit mehreren Firewalls probiert (ip-tables install & deinstall, apache2 Konfigurationen hin und her, nftables,in der "interfaces" im Network Ordner hab ich auch schon geschaut), System natürlich jedesmal neu gestartet...
node app &
[1] 28925
root@brown-bat-78692:~/.nvm/versions/node/v20.12.1/lib/node_modules/mongo-expres s# No custom config.js found, loading config.default.js
Welcome to mongo-express
------------------------
(node:28925) [MONGODB DRIVER] Warning: Current Server Discovery and Monitoring e ngine is deprecated, and will be removed in a future version. To use the new Ser ver Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
(Use `node --trace-warnings ...` to show where the warning was created)
Mongo Express server listening at http://localhost:8081
basicAuth credentials are "admin:pass", it is recommended you change this in you r config.js!
^C
root@brown-bat-78692:~/.nvm/versions/node/v20.12.1/lib/node_modules/mongo-expres s# sudo ss -tulnp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=312,fd=13))
tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* users:(("mongod",pid=118,fd=10))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=143,fd=3))
tcp LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=312,fd=14))
tcp LISTEN 0 511 *:80 *:* users:(("apache2",pid=24040,fd=4),("apache2",pid=18935,fd=4),("apache2",pid=174 50,fd=4),("apache2",pid=17390,fd=4),("apache2",pid=17389,fd=4),("apache2",pid=17 388,fd=4),("apache2",pid=17387,fd=4),("apache2",pid=17386,fd=4),("apache2",pid=1 87,fd=4))
tcp LISTEN 0 511 [::1]:8081 [::]:* users:(("node",pid=28925,fd=21))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=143,fd=4))
root@brown-bat-78692:~/.nvm/versions/node/v20.12.1/lib/node_modules/mongo-expres s# curl localhost:8081
root@brown-bat-78692:~/.nvm/versions/node/v20.12.1/lib/node_modules/mongo-express# curl localhost:8081
Unauthorizedroot@brown-bat-78692:~/.nvm/versions/node/v20.12.1/lib/node_modules/mongo-express# sudo curl localhost:8081
Unauthorizedroot@brown-bat-78692:~/.nvm/versions/node/v20.12.1/lib/node_modules/mongo-express#
Liefert mehr oder weniger die gleichen Meldungen wie bereits geposted nur in separaten Fenstern. Hab jetzt mal alles aus gemacht, dann eine neue Terminalsitzung & Node neu gestartet, die Ports erneut überprüft, dann eine weitere Sitzung für Curl geöffnet ohne die erste zu schließen? und den Befehl dort ausgeführt: Unauthorizedroot@brown-bat-78692:~/.nvm/versions/node/v20.12.1/lib/node_modules/mongo-express# Das Einzige was sich jetzt geändert hat sind die Pid Nummern der Ports und die dargestellte Reihenfolge:
tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* users:(("mongod",pid=123,fd=10))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=148,fd=3))
tcp LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=359,fd=13))
tcp LISTEN 0 511 *:80 *:* users:(("apache2",pid=255,fd=4),("apache2",pid=253,fd=4),("apache2",pid=249,fd=4),("apache2",pid=248,fd=4),("apache2",pid=247,fd=4),("apache2",pid=216,fd=4))
tcp LISTEN 0 511 [::1]:8081 [::]:* users:(("node",pid=760,fd=21))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=148,fd=4))
tcp LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=359,fd=14))
Glaub ich hab das Problem gefundem: In einer separaten (ziemlich versteckten) Konfigurationsdatei war noch das gesamte System von MongoDB auf localhost eingestellt. Nachdem ich das geändert hab und an der entsprechenden Stelle "0.0.0.0" eingetragen funktioniert die Connection nun plötzlich ;)
Mal eine ganz blöde Frage an alle: Lässt sich aus dem Text den ich oben geposted habe eigentlich irgendwas konstruieren was einen gezielten Ransomangriff in nichtmal 24H rechtfertigt oder möglich macht? Ich hatte den Port jetzt wirklich nur für wenige Minuten offen (das Standard DB Passwort oben war ein Example, dass ich sofort geändert habe!) und habe mein Script noch nichtmal halbwegs fertig getestet und schon passieren in meiner DB recht merkwürdige Sachen..... "you must pay 0,007BTC etc". (Die Website IP von diesem privaten nicht-öffentlichen Testserver mit weitgehend unbedeutenden Testdaten ist nämlich bislang nur mir bekannt!)
Es ist definitionsgemäß so, dass pro IP und Anwendung nur ein Port geht.
Also wäre eine Lösung die DB über eine andere IP laufen zu lassen?
Man kann einem Server auch mehrere IP-Adressen vergeben, ja. Das muss der Server aber auch unterstützen.
Update:
https://zap-hosting.com/guides/de/docs/vserver-windows-addip/
Wir haben sowas mehrfach gemacht, allerdings mit verschiedenen Sub-Netzen.
Genauso hab ichs zuerst versucht...