ubuntuusers.de

Firewall - ufw - aber Port 8000 ist noch zugänglich

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

encbladexp schrieb:

Ich will ehrlich sein: Ich habe nicht die vorherigen 4 Seite gelesen.

Aber: Kann es sein das du einen Dienst per Docker auf 8080 laufen hast, und diesen nun für z.B. das Internet verstecken willst, z.b. weil man eh nur per Loadbalancer (nginx?) dran soll?

Falls ja hast du 2 Optionen:

  • DOCKER-USER Chain, welche man dir schon geraten hat.

  • Den Service nicht auf 0.0.0.0 zu exposen, sondern nur auf 127.0.0.1, spart dir auch das Spiel mit iptables.

Wie Docker seine regeln anlegt ist klar definiert, da gibt es nicht viel Überraschungen, meist exposen die Leute aber einfach zu viel.

Hilfreich wäre der output von:

docker container ls --all

Und eventuell kannst du mir beantworten von wo aus der Dienst erreichbar sein soll. Aktuell scheint es mir wollt ihr Port 8080 einfach von außen zumachen, was man sich wie erwähnt meist sparen kann.

Danke - dass Du Dich meldest!

Es geht nicht um Port 8080 - sondern um 8000 - der bietet Zugriff auf die Admin-Oberfläche von COOLIFY!

Dieser Port muss in irgendeinem docker-config-file geöffnet werden - und das möchte ich verhindern!

Hier die Ausgabe zu Deinem Befehl:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
root@v220240911850328xxxx:~# docker container ls --all
CONTAINER ID   IMAGE                                       COMMAND                  CREATED        STATUS                   PORTS                                                                                                                 NAMES
42f6b68011ef   ghcr.io/coollabsio/coolify:4.0.0-beta.335   "/init"                  45 hours ago   Up 5 minutes (healthy)   443/tcp, 8000/tcp, 9000/tcp, 0.0.0.0:8000->80/tcp, :::8000->80/tcp                                                    coolify
6e2e14923e82   redis:alpine                                "docker-entrypoint.s…"   45 hours ago   Up 5 minutes (healthy)   6379/tcp                                                                                                              coolify-redis
07927db5d9f2   postgres:15-alpine                          "docker-entrypoint.s…"   45 hours ago   Up 5 minutes (healthy)   5432/tcp                                                                                                              coolify-db
c4f3586b4fb6   quay.io/soketi/soketi:1.6-16-alpine         "node /app/bin/serve…"   45 hours ago   Up 5 minutes (healthy)   0.0.0.0:6001->6001/tcp, :::6001->6001/tcp                                                                             coolify-realtime
b5c15a4c6d9b   nginx:stable-alpine                         "/docker-entrypoint.…"   45 hours ago   Up 5 minutes (healthy)   80/tcp, 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp                                                                     sowskckk40swcocw8ko80840-proxy
1115e5c83de6   postgres:16-alpine                          "docker-entrypoint.s…"   45 hours ago   Up 5 minutes (healthy)   5432/tcp                                                                                                              sowskckk40swcocw8ko80840
ad85f44c7640   d9989ec0433e                                "/docker-entrypoint.…"   7 days ago     Up 5 minutes (healthy)   80/tcp, 0.0.0.0:6432->6432/tcp, :::6432->6432/tcp                                                                     csk4008cs4w0ogk8sc00c4kw-proxy
7e2208636218   15a7c2c4d159                                "docker-entrypoint.s…"   7 days ago     Up 5 minutes (healthy)   5432/tcp                                                                                                              csk4008cs4w0ogk8sc00c4kw
1da27d080b7a   traefik:v3.1                                "/entrypoint.sh --pi…"   7 days ago     Up 5 minutes (healthy)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   coolify-proxy
root@v220240911850328xxxx:~#

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14176

mb-ware.de schrieb:

Nach einem reboot und Deinem Befehl oben sieht es so aus:

1
2
3
Last login: Sat Sep 14 11:26:38 2024 from 178.202.yy.yyy
root@v220240911850328xxxx:~# iptables -nvx -L DOCKER-INPUT
iptables: No chain/target/match by that name.

D. h. diese chain gibt es nicht.
Versuch mal (ohne reboot):

iptables -A INPUT -j FILTERS
iptables -A DOCKER-USER -i eth0 -j FILTERS
iptables -I FILTERS 1 -j REJECT

und danach Zugriff aus dem Internet, auf den TCP-Port 8000.

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

lubux schrieb:

mb-ware.de schrieb:

Nach einem reboot und Deinem Befehl oben sieht es so aus:

1
2
3
Last login: Sat Sep 14 11:26:38 2024 from 178.202.yy.yyy
root@v220240911850328xxxx:~# iptables -nvx -L DOCKER-INPUT
iptables: No chain/target/match by that name.

D. h. diese chain gibt es nicht.
Versuch mal (ohne reboot):

iptables -A INPUT -j FILTERS
iptables -A DOCKER-USER -i eth0 -j FILTERS
iptables -I FILTERS 1 -j REJECT

und danach Zugriff aus dem Internet, auf den TCP-Port 8000.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Die Befehle nimmt er nicht ...
root@v220240911850328xxxx:~# iptables -A INPUT -j FILTERS
iptables v1.8.10 (nf_tables): Chain 'FILTERS' does not exist
Try `iptables -h' or 'iptables --help' for more information.
root@v220240911850328xxxx:~# iptables -A DOCKER-USER -i eth0 -j FILTERS
iptables v1.8.10 (nf_tables): Chain 'FILTERS' does not exist
Try `iptables -h' or 'iptables --help' for more information.
root@v220240911850328xxxx:~# iptables -I FILTERS 1 -j REJECT
iptables: No chain/target/match by that name.
root@v220240911850328xxxx:~#

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17518

mb-ware.de schrieb:

Es geht nicht um Port 8080 - sondern um 8000 - der bietet Zugriff auf die Admin-Oberfläche von COOLIFY!

Wie startest du die Container, z.b. per Docker Compose? Ich gehe mal davon aus du hast diesen curl | bash Quatsch mitgemacht, das erstellt dir hier die notwendigen Compose Dateien:

curl -fsSL $CDN/docker-compose.yml -o /data/coolify/source/docker-compose.yml
curl -fsSL $CDN/docker-compose.prod.yml -o /data/coolify/source/docker-compose.prod.yml

Du kannst prüfen ob das der Fall ist:

docker compose ls

Falls ja: Einfach eine / die genannte der beiden Dateien bearbeiten, dort gibt es eine Ports Sektion die so aussehen wird:

service:
 bla:
  ports:
   - "8000:8000"

Du musst da nur das hier draus machen:

service:
 bla:
  ports:
   - "127.0.0.1:8000:8000"

Im Anschluss in den Ordner gehen, und da dann halt docker compose up -d, im Anschluss ist der Dienst nur noch auf Port 8000 über localhost/127.0.0.1 erreichbar, nicht mehr aber direkt von außen.

Das ist der fachlich korrekte weg, du kannst aber auch weitere X Seiten die notwendigen Firewall regeln per iptables schreiben.

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

encbladexp schrieb:

mb-ware.de schrieb:

Es geht nicht um Port 8080 - sondern um 8000 - der bietet Zugriff auf die Admin-Oberfläche von COOLIFY!

Wie startest du die Container, z.b. per Docker Compose? Ich gehe mal davon aus du hast diesen curl | bash Quatsch mitgemacht, das erstellt dir hier die notwendigen Compose Dateien:

curl -fsSL $CDN/docker-compose.prod.yml -o /data/coolify/source/docker-compose.prod.yml

In der Datei oben sind folgende Zeilen drin:

1
2
3
4
5
6
7
8
...
       - STRIPE_EXCLUDED_PLANS
    ports:
      - "${APP_PORT:-8000}:80"
    expose:
      - "${APP_PORT:-8000}"
    healthcheck:
...

Wie genau muss ich diese ersetzen?

Der Befehl "docker compose up -d" startet dann den Container neu - oder?

BG MB

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17518

mb-ware.de schrieb:

Der Befehl "docker compose up -d" startet dann den Container neu - oder?

Das erstellt die Container neu und startet diese, genau.

...
       - STRIPE_EXCLUDED_PLANS
    ports:
      - "127.0.0.1:${APP_PORT:-8000}:80"
    expose:
      - "${APP_PORT:-8000}"

So sollte das dann aussehen, expose ist nur für die Dokumentation und nicht relevant. Der compose Befehl muss im Ordner dieser Datei passieren. Du musst also in /data/coolify/source sein. Da die Datei abweichend benannt wurde:

docker compose -f docker-compose.prod.yml up -d

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

encbladexp schrieb:

mb-ware.de schrieb:

Der Befehl "docker compose up -d" startet dann den Container neu - oder?

Das erstellt die Container neu und startet diese, genau.

...
       - STRIPE_EXCLUDED_PLANS
    ports:
      - "127.0.0.1:${APP_PORT:-8000}:80"
    expose:
      - "${APP_PORT:-8000}"

So sollte das dann aussehen, expose ist nur für die Dokumentation und nicht relevant. Der compose Befehl muss im Ordner dieser Datei passieren. Du musst also in /data/coolify/source sein. Da die Datei abweichend benannt wurde:

docker compose -f docker-compose.prod.yml up -d

DU bist absolut der BESTE - danke!

Dein Befehl ergab zwar leider einen Fehler und hat leider nichts NEU gestartet - siehe unten!

Ich habe aber dann den "Neu-Kreierungs-Befehl" aus "upgrade.sh" genommen - dann lief alles optimal durch und Port 8000 ist nicht mehr über das Internet zugänglich!!!

Das hier ist der Befehl - der alles korrekt NEU erzeugt hat:

1
docker run -v /data/coolify/source:/data/coolify/source -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/coollabsio/coolify-helper:${LATEST_HELPER_VERSION:-latest} bash -c "LATEST_IMAGE=${1:-} docker compose --env-file /data/coolify/source/.env -f /data/coolify/source/docker-compose.yml -f /data/coolify/source/docker-compose.prod.yml up -d --remove-orphans --force-recreate --wait --wait-timeout 60"

Das war der gesamte OUTPUT:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
root@v220240911850328xxxx:~# cd /data/coolify/source
root@v220240911850328xxxx:/data/coolify/source# docker compose -f docker-compose.prod.yml up -d
service "postgres" has neither an image nor a build context specified: invalid compose project
root@v220240911850328xxxx:/data/coolify/source# docker run -v /data/coolify/source:/data/coolify/source -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/coollabsio/coolify-helper:${LATEST_HELPER_VERSION:-latest} bash -c "LATEST_IMAGE=${1:-} docker compose --env-file /data/coolify/source/.env -f /data/coolify/source/docker-compose.yml -f /data/coolify/source/docker-compose.prod.yml up -d --remove-orphans --force-recreate --wait --wait-timeout 60"
 Container coolify-db  Recreate
 Container coolify-realtime  Recreate
 Container coolify-redis  Recreate
 Container coolify-db  Recreated
 Container coolify-redis  Recreated
 Container coolify-realtime  Recreated
 Container coolify  Recreate
 Container coolify  Recreated
 Container coolify-realtime  Starting
 Container coolify-redis  Starting
 Container coolify-db  Starting
 Container coolify-realtime  Started
 Container coolify-db  Started
 Container coolify-redis  Started
 Container coolify-db  Waiting
 Container coolify-redis  Waiting
 Container coolify-realtime  Waiting
 Container coolify-db  Healthy
 Container coolify-realtime  Healthy
 Container coolify-redis  Healthy
 Container coolify  Starting
 Container coolify  Started
 Container coolify-db  Waiting
 Container coolify-redis  Waiting
 Container coolify-realtime  Waiting
 Container coolify  Waiting
 Container coolify-realtime  Healthy
 Container coolify-redis  Healthy
 Container coolify-db  Healthy
 Container coolify  Healthy
root@v220240911850328xxxx:/data/coolify/source# docker container ls --all
CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS                    PORTS                                                                                                                 NAMES
c032daef62e9   ghcr.io/coollabsio/coolify:latest     "/init"                  26 seconds ago   Up 13 seconds (healthy)   443/tcp, 8000/tcp, 9000/tcp, 127.0.0.1:8000->80/tcp                                                                   coolify
076dfd5a8c84   postgres:15-alpine                    "docker-entrypoint.s…"   29 seconds ago   Up 19 seconds (healthy)   5432/tcp                                                                                                              coolify-db
536e4537e349   quay.io/soketi/soketi:1.6-16-alpine   "node /app/bin/serve…"   29 seconds ago   Up 19 seconds (healthy)   0.0.0.0:6001->6001/tcp, :::6001->6001/tcp                                                                             coolify-realtime
0bc5cec5b4f3   redis:alpine                          "docker-entrypoint.s…"   29 seconds ago   Up 19 seconds (healthy)   6379/tcp                                                                                                              coolify-redis
b5c15a4c6d9b   nginx:stable-alpine                   "/docker-entrypoint.…"   2 days ago       Up 3 minutes (healthy)    80/tcp, 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp                                                                     sowskckk40swcocw8ko80840-proxy
1115e5c83de6   postgres:16-alpine                    "docker-entrypoint.s…"   2 days ago       Up 3 minutes (healthy)    5432/tcp                                                                                                              sowskckk40swcocw8ko80840
ad85f44c7640   d9989ec0433e                          "/docker-entrypoint.…"   8 days ago       Up 3 minutes (healthy)    80/tcp, 0.0.0.0:6432->6432/tcp, :::6432->6432/tcp                                                                     csk4008cs4w0ogk8sc00c4kw-proxy
7e2208636218   15a7c2c4d159                          "docker-entrypoint.s…"   8 days ago       Up 3 minutes (healthy)    5432/tcp                                                                                                              csk4008cs4w0ogk8sc00c4kw
1da27d080b7a   traefik:v3.1                          "/entrypoint.sh --pi…"   9 days ago       Up 3 minutes (healthy)    0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   coolify-proxy
root@v220240911850328xxxx:/data/coolify/source#

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

lubux schrieb:

mb-ware.de schrieb:

Nach einem reboot und Deinem Befehl oben sieht es so aus:

1
2
3
Last login: Sat Sep 14 11:26:38 2024 from 178.202.yy.yyy
root@v220240911850328xxxx:~# iptables -nvx -L DOCKER-INPUT
iptables: No chain/target/match by that name.

D. h. diese chain gibt es nicht.
Versuch mal (ohne reboot):

iptables -A INPUT -j FILTERS
iptables -A DOCKER-USER -i eth0 -j FILTERS
iptables -I FILTERS 1 -j REJECT

und danach Zugriff aus dem Internet, auf den TCP-Port 8000.

Vielen lieben Dank auch Dir - lubux - Du hast mir sehr geholfen - nicht aufzugeben!

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

tomtomtom schrieb:

Sofern das hier nicht nur ein schlechter Spam-Versuch sein sollte (der Benutzername ist die Homepage eines - vermutlich - IT-Dienstleisters, der allerdings laut seiner Homepage noch nicht weiß, was er anbietet, aber immerhin "No1 in WrapBootstrap" ist), stellt sich ja schon die Frage, wie bei diesem KnowHow solche Fragen kommen können.

#NurMalSo

Nur mal so ...

Lieber tomtomtom - hast Du das alles gewusst - oder hast Du jetzt auch noch was dazugelernt?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17518

Entwickler sollten mit dem curl | bash und upgrade.sh Mist echt mal aufhören. Aber schön das es dir trotzdem geholfen hat.

tomtomtom Team-Icon

Supporter
Avatar von tomtomtom

Anmeldungsdatum:
22. August 2008

Beiträge: 54972

Wohnort: Berlin

mb-ware.de schrieb:

Lieber tomtomtom - hast Du das alles gewusst - oder hast Du jetzt auch noch was dazugelernt?

Du willst doch jetzt hoffentlich nicht behaupten, dass die Homepage, unter deren Namen du dich angemeldet hast, auch nur irgendwie ansatzweise vertrauenswürdig erscheint...

Also natürlich ausgenommen Helga Müller, die ja offensichtlich für viele Seiten gleichzeitig "arbeitet" (bzw. eben gerade nicht).

Wäre hier nicht der erste Spamaccount gewesen.

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

tomtomtom schrieb:

mb-ware.de schrieb:

Lieber tomtomtom - hast Du das alles gewusst - oder hast Du jetzt auch noch was dazugelernt?

Du willst doch jetzt hoffentlich nicht behaupten, dass die Homepage, unter deren Namen du dich angemeldet hast, auch nur irgendwie ansatzweise vertrauenswürdig erscheint...

Also natürlich ausgenommen Helga Müller, die ja offensichtlich für viele Seiten gleichzeitig "arbeitet" (bzw. eben gerade nicht).

Wäre hier nicht der erste Spamaccount gewesen.

Die Seite "mb-ware.de" ist leider noch nicht fertig - stimmt!

Aber ich habe auch niemanden dazu verleitet - auf meine Seite zu gehen - ich habe hier nur eine Frage gestellt!

BG und angenehmes Arbeiten! MB

mb-ware.de

(Themenstarter)

Anmeldungsdatum:
8. September 2024

Beiträge: 38

encbladexp schrieb:

Entwickler sollten mit dem curl | bash und upgrade.sh Mist echt mal aufhören. Aber schön das es dir trotzdem geholfen hat.

Das ist leider zu hoch für mich: "curl | bash"- und "upgrade.sh"-Mist ...

aber danke nochmal sehr für die sehr nützlichen Hinweise von Dir!

BG MB

D3M

Avatar von D3M

Anmeldungsdatum:
28. Juni 2011

Beiträge: 29

Also... Ohne persönlichen Angriff.

Allerdings finde ich es grob fährlässig, sowas ins Internet zu hängen, wenn man davon offensichtlich keine Ahnung hat.

1. Ja, dein Mgmt Interface ist exposed und kann angegriffen werden. Ich kenne weder diese Applikation, noch die Vertrauenswürdigkeit des Devs, als auch nicht den Code selbst.

2. Docker im Internet selbst einzusetzen ist sportlich. Mal drüber nachdenken

3. So etwas testet man in VAL oder von mir aus in INT, also definitiv NON-PROD und sicherlich nicht exposed im Internet. Dafür gibt es Virtualisierungsmöglichkeiten

4. Beim überfliegen habe ich kein mangle und kein nat gesehen. Was mich interessieren würde

1
2
3
4
5
6
7
8
iptables -vnL 
iptables -vnL -t nat
iptables -vnL -t mangle
ip6tables -vnL
ip6tables -vnL -t nat
ip6tables -vnL -t mangle
nmap -sSV -p 8000 -v9 <dest.ip> # von einem externen server
nmap -sUV -p 8000 -v9 <dest.ip> # von einem externen server

dazu ein tcpdump des kompletten traffics, wenn du auf port 8000 zugreifst.

Hint: https://www.rsquare.org/wp-content/uploads/2013/01/Netfilter-packet-flow1.png

Am besten noch einen logging rule am anfang und am ende. dazu dann die logs.

EDIT: War ja schon gelöst... anyway...

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17518

D3M schrieb:

2. Docker im Internet selbst einzusetzen ist sportlich. Mal drüber nachdenken

Warum? Millionen oder vermutlich Millarden Container laufen auf dem Planeten, das Problem sind veraltete Images, die Software drin, falsche Konfiguration, aber nicht ob das Ding durch Podman, die Docker Engine oder k8s gehostet wird.

Antworten |