Seite 1 von 1

Offene Ports auf Server Verringerung der Angriffsfläche.

Verfasst: 18.03.2024 13:35:01
von whisper
Auf meinem Rootserver laufen auch einige wenige Docker-Compose Container.
Seit ein paar Wochen habe ich Dockge zur Administration.
Dummerweise ist bei mir die entsprechende Weboberfläche über Port 5001 weltweit erreichbar.
Ok, das ist natürlich password geschützt. Aber Dockge ist ein kleines Projekt, ziemlich unbekannt und neu, das wird bestimmt einige Sicherheitslücken haben.
Die Oberfläche zeigt die docker-compose und .env Einträge und einiges mehr, also auch die DB Passwörter und so weiter aller Docker Anwendungen.
Mein derzeitiges Workaround deshalb:
Ich habe zwei Aliase definiert.

Code: Alles auswählen

alias PAUSE='docker pause dockge_dockge_1'
alias UNPAUSE='docker unpause dockge_dockge_1'
Der dockge wird nur UNpausiert, wenn ich was damit mache, sonst ist er auf Pause.
Gute / ausreichende Idee?

Re: Offene Ports auf Server Verringerung der Angriffsfläche.

Verfasst: 18.03.2024 13:59:28
von heisenberg
Abschalten ist gut, aber vielleicht sehr lästig. Ich würde mir da noch ein Script basteln, dass den "PAUSE" Befehl automatisch nach X Minuten nachdem es eingeschaltet wurde wieder ausschaltet. Auf die Weise wird das Dingens immer wieder automatisch ausgeschaltet, wenn man das mal vergißt.

Weitere Möglichkeiten:
  • zusätzliche webserver-Authentifizierung davor und fertig.
  • TLS sowieso
  • Hinter ein VPN stecken
  • Webinterface nur an localhost binden und Zugriff per SSH-Portforwarding

Re: Offene Ports auf Server Verringerung der Angriffsfläche.

Verfasst: 18.03.2024 14:00:39
von niemand
whisper hat geschrieben: ↑ zum Beitrag ↑
18.03.2024 13:35:01
Der dockge wird nur UNpausiert, wenn ich was damit mache, sonst ist er auf Pause.
Gute / ausreichende Idee?
Ein Script eines hypothetischen Angreifers braucht nicht viel Zeit. Dem reicht die Zeit, in der das Ganze läuft, weil du was dran machst.
whisper hat geschrieben: ↑ zum Beitrag ↑
18.03.2024 13:35:01
Dummerweise ist bei mir die entsprechende Weboberfläche über Port 5001 weltweit erreichbar.
Wenn dir das nicht gefällt, und du es auch nicht in der Konfiguration des Programms selbst ändern kannst (was einigermaßen seltsam wäre, aber mag’s ja geben), könntest du den Port immer noch mit etwa iptables wunschgemäß einschränken. Dazu wurde der Kram ja schließlich entwickelt.

Re: Offene Ports auf Server Verringerung der Angriffsfläche.

Verfasst: 18.03.2024 14:18:24
von whisper
ja, ihr beiden habt habt recht, danke für die Denkanstße.
Ja ich kann den Port nur per localhost erreichbar machen und dann von zu hause per ssh tunnel darauf zugreifen.
Mit netzen habe ich mich mehr als 10 Jahren nicht mehr beschäftigt, da ist das alles etwas eingerostet.
Werde ich definitiv machen.
Zumal da noch ein paar Leichen im Keller sind.

Re: Offene Ports auf Server Verringerung der Angriffsfläche.

Verfasst: 20.03.2024 09:18:33
von whisper
Ich habe die ssh tnnel Methode gemacht. Das funktioniert.
In der Firewall von ISPConfig (Bastile) habe ich den Port 5001 nicht freigegeben.
Soweit wie gewünscht, denn dockge kann nicht explizit auf 127.0.0.1 lauschen.
Es läuft noch wikijs als Container, dort ist 127.0.0.1:2999:2999 als Port gesetzt.
Das geht einwandfrei, aber wenn die Firewall aktiv ist gibt es beim speichern Fehlermeldung:
wikijs | Loading configuration from /app/wiki/config.yml... OK
wikijs | 2024-03-20T08:13:51.090Z [JOB] info: Rendering page ID 43...
wikijs | 2024-03-20T08:13:51.397Z [JOB] info: Using database driver pg for postgres [ OK ]
wikijs | 2024-03-20T08:14:21.417Z [JOB] error: Rendering page ID 43: [ FAILED ]
wikijs | 2024-03-20T08:14:21.417Z [JOB] error: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
wikijs | 2024-03-20T08:14:21.424Z [MASTER] warn: Error when running job render-page: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
Das führt zu einem Versionskonflikt, kann man zwar umschiffen, nervt aber.
Spielt da noch ein anderer Port bei der Sache eine Rolle?
Eigentlich funktioniert speichern in die PG_DB tr0tzdem.
Mit node.js kenne ich mich leider nicht aus.
Ideen?

PS: Postgres Log:
"no pg_hba.conf entry for host "1.192.62.118"
Die IP Adresse ist nicht anähernt auf dem Server in ip a
Melung kommt dauernd, im 1 Sekunden Intervall, Das ist eine spur.
Vielleicht kann ich heute abend da mal forschen.
Aha China

Code: Alles auswählen

iptables -I INPUT -p tcp --dport 5432 -s 1.192.62.118/24 -j DROP
Habe jetzt dafür eine fail2banRegel gebaut. https://daucity.de/de/tools/fail2ban

Nun weiter mit der Knex Geschichte