Ergebnis 1 bis 3 von 3

[Linux] Netstat kennt PID nicht

  1. #1 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.176
    Ich hab ein interessantes Phänomen. Wenn ich mit netstat versuche die PID zu einem Port zu finden, bekomme ich folgendes:

    Code:
    # netstat -tlpn 
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      169/sshd: /usr/sbin 
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -                   
    tcp6       0      0 :::111                  :::*                    LISTEN      -                   
    tcp6       0      0 :::80                   :::*                    LISTEN      197/apache2         
    tcp6       0      0 :::4949                 :::*                    LISTEN      168/perl            
    tcp6       0      0 ::1:25                  :::*                    LISTEN      -                   
    tcp6       0      0 :::443                  :::*                    LISTEN      197/apache2         
    tcp6       0      0 :::25565                :::*                    LISTEN      -
    Ja, ich lasse das ganze als root laufen. Allerdings in einem (Unprivileged-)Container, der so ziemliche aller Capabilities beraubt wurde, die er nicht unbedingt braucht. Das es hier also zu Problemen kommen kann, ist nicht SO überraschend.

    Was ich hier allerdings total faszinierend finde: Für einige Ports kennt netstat die PID, für andere nicht. Würde er die PID für keinen Prozess kennen, würde mich das nicht überraschen. Aber dieses Phänomen kann ich nicht so ganz erklären.

    Ja, prinzipiell hat die richtige Antwort nur vier Buchstaben: "RTFM"
    Allerdings verläuft man sich da recht schnell, wenn man von dieser Seite der Gleichung kommt. ... Ok, ICH verlaufe mich da schnell.

    Das ganze ist kein wirkliches "Problem" aber interessieren würde es mich schon. Hat zufällig jemand einen heißen Tipp in welcher Richtung ich da weiter suchen muss um fündig zu werden?
    Lookbehind ist offline

  2. #2 Zitieren

    Metasyntaktische Variable
    Avatar von foobar
    Registriert seit
    Sep 2004
    Ort
    Direkt hinter dir! Buh!
    Beiträge
    24.057
    Naja, grundsätzlich muss nicht jeder offene Port auch mit einem Prozess verbunden sein. Ein Klassiker sind Ports, die keinem Prozess, sondern dem Kernel gehören (für NFS bleistiftsweise). Ansonsten wäre mein erster Verdacht, dass AppArmor halt das ptrace im Container blockt. Stelle AppArmor mal auf Logging, falls nötig, und gucke, ob da im Log entsprechende Fehlermeldungen auftauchen.

    Ich vermute, dass die Prozesse, die er anzeigt, die sind, die im Container selbst laufen. Und die anderen laufen außerhalb und werden deshalb geblockt. Natürlich weiß ich nicht, wie du deinen Container eingerichtet hast, aber Port 111 ist ja z.B. der Portmapper, welcher bei aktuellen Distros von SystemD gestellt wird. Und der Init-Prozess dürfte dem Host gehören.

    Feeling a bit masochistic and want to read more of my diatribes? Check out Foobar's Rantpage.

    foobar erklärt die Welt der Informatik: Was ist ein Zeichensatz?Was ist die 32Bit-Grenze?Warum sind Speicheroptimierer Unsinn?Wie teste ich meinen RAM?Was ist HDR?Was ist Tesselation?Warum haben wir ein Urheberrecht?Partitionieren mit MBR oder GPT?Was hat es mit dem m.2-Format auf sich?Warum soll ich meine SSD nicht zum Anschlag befüllen?Wer hat an der MTU gedreht?UEFI oder BIOS Boot?Was muss man über Virenscanner wissen?Defragmentieren sinnvoll?Warum ist bei CCleaner & Co. Vorsicht angesagt?Was hat es mit 4Kn bei Festplatten auf sich?Was ist Bitrot?Was sind die historischen Hintergründe zur (nicht immer optimalen) Sicherheit von Windows?Wie kann ich Datenträger sicher löschen?Was muss ich bzgl. Smartphone-Sicherheit wissen?Warum sind Y-Kabel für USB oft keine gute Idee?Warum sind lange Passwörter besser als komplizierte?Wie funktionieren Tintenstrahldrucker-Düsen?Wie wähle ich eine Linux-Distribution für mich aus?Warum ist Linux sicherer als Windows?Sind statische Entladungen bei Elektronik wirklich ein Problem?Wie repariere ich meinen PC-Lüfter?Was ist die MBR-Lücke?Wie funktioniert eine Quarz-Uhr?Was macht der Init-Prozess unter Linux und wie schlimm ist SystemD?Mainboard-Batterie - wann wechseln?Smartphone ohne Google?
    foobar ist gerade online

  3. #3 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.176
    Hi foobar, danke für deine Antwort! Das hat tatsächlich geholfen.

    Zitat Zitat von foobar Beitrag anzeigen
    Naja, grundsätzlich muss nicht jeder offene Port auch mit einem Prozess verbunden sein. Ein Klassiker sind Ports, die keinem Prozess, sondern dem Kernel gehören (für NFS bleistiftsweise).
    Ja, die kenn ich wohl. Aber ich kann dir versichern, dass mindestens Port 25565 nicht vom Kernel bereit gestellt wird. (Ausgerechnet in einem Gaming-Forum könnte man den kennen )

    Zitat Zitat von foobar Beitrag anzeigen
    Ansonsten wäre mein erster Verdacht, dass AppArmor halt das ptrace im Container blockt. Stelle AppArmor mal auf Logging, falls nötig, und gucke, ob da im Log entsprechende Fehlermeldungen auftauchen.
    ptrace! Na klar! Da hatte ich wieder Tomaten auf den Augen!

    Zitat Zitat von man 7 capabilities
    CAP_SYS_PTRACE
    * Trace arbitrary processes using ptrace(2);
    * apply get_robust_list(2) to arbitrary processes;
    * transfer data to or from the memory of arbitrary processes us-
    ing process_vm_readv(2) and process_vm_writev(2);
    * inspect processes using kcmp(2).
    Ich hab ein Test-Setup in einer VM aufgezogen und den Container da nochmal deployet. Und, welch Überraschung, wenn ich die Capability erlaube gehts auch.

    Danke für den Schubser.

    Zitat Zitat von foobar Beitrag anzeigen
    Ich vermute, dass die Prozesse, die er anzeigt, die sind, die im Container selbst laufen. Und die anderen laufen außerhalb und werden deshalb geblockt. Natürlich weiß ich nicht, wie du deinen Container eingerichtet hast, aber Port 111 ist ja z.B. der Portmapper, welcher bei aktuellen Distros von SystemD gestellt wird. Und der Init-Prozess dürfte dem Host gehören.
    Knapp daneben ist auch vorbei. Die laufen tatsächlich alle IN dem Container. ... Docker ist nicht die einzige Container-Runtime
    Lookbehind ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •