Systemd Isolieren von Diensten vom Netzwerk
Version vom 10. Januar 2023, 14:44 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ *Eine sehr einfache, aber leistungsstarke Konfigurationsoption, die Sie in systemd-Dienstdefinitionen verwenden können, ist PrivateNetwork=: ... [Service]…“)
- Eine sehr einfache, aber leistungsstarke Konfigurationsoption, die Sie in systemd-Dienstdefinitionen verwenden können, ist PrivateNetwork=:
... [Service] ExecStart=... PrivateNetwork=yes ...
- Mit diesem einfachen Schalter wird ein Dienst und alle Prozesse, aus denen er besteht, vollständig von jeglicher Art der Vernetzung getrennt.
- Netzwerkschnittstellen sind für die Prozesse nicht mehr verfügbar, die einzige, die sie sehen, ist das Loopback-Gerät "lo", aber es ist vom echten Host-Loopback isoliert.
- Dies ist ein sehr leistungsfähiger Schutz vor Netzwerkangriffen.
- Vorbehalt: Einige Dienste erfordern, dass das Netzwerk betriebsbereit ist. Natürlich würde niemand in Betracht ziehen, PrivateNetwork=yes auf einem netzwerkorientierten Dienst wie Apache zu verwenden.
- Aber auch für nicht netzwerkorientierte Dienste kann Netzwerkunterstützung notwendig und nicht immer selbstverständlich sein.
- Beispiel: Wenn das lokale System für eine LDAP-basierte Benutzerdatenbank konfiguriert ist, kann das Suchen von Glibc-Namen mit Aufrufen wie getpwnam() zu einem Netzwerkzugriff führen. Das heißt, selbst in diesen Fällen ist es meistens in Ordnung, PrivateNetwork=yes zu verwenden, da Benutzer-IDs von Systemdienstbenutzern auch ohne Netzwerk auflösbar sein müssen.
- Das heißt, solange die einzigen Benutzer-IDs, die Ihr Dienst auflösen muss, unter der magischen Grenze von 1000 liegen, sollte die Verwendung von PrivateNetwork=yes in Ordnung sein.
- Intern verwendet dieses Feature Netzwerknamensräume des Kernels.
- Wenn aktiviert, wird ein neuer Netzwerk-Namespace geöffnet und nur das Loopback-Gerät darin konfiguriert.