<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.xinux.net/index.php?action=history&amp;feed=atom&amp;title=Systemd_Stufe_3_Security</id>
	<title>Systemd Stufe 3 Security - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.xinux.net/index.php?action=history&amp;feed=atom&amp;title=Systemd_Stufe_3_Security"/>
	<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Systemd_Stufe_3_Security&amp;action=history"/>
	<updated>2026-10-21T13:45:50Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://www.xinux.net/index.php?title=Systemd_Stufe_3_Security&amp;diff=73786&amp;oldid=prev</id>
		<title>Thomas.will: Animation härten und untersuchen verlinkt</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Systemd_Stufe_3_Security&amp;diff=73786&amp;oldid=prev"/>
		<updated>2026-10-17T15:53:35Z</updated>

		<summary type="html">&lt;p&gt;Animation härten und untersuchen verlinkt&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 17. Oktober 2026, 15:53 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;Zeile 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''systemd-analyze security''' bewertet, wie offen ein Dienst ist: 10 = alles offen, 0 = gut abgeschottet.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''systemd-analyze security''' bewertet, wie offen ein Dienst ist: 10 = alles offen, 0 = gut abgeschottet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Weil systemd Programme automatisch und oft als root startet, ist es auch ein beliebter Ort für Angreifer, um sich '''festzusetzen'''. Wer systemd kennt, findet sie.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Weil systemd Programme automatisch und oft als root startet, ist es auch ein beliebter Ort für Angreifer, um sich '''festzusetzen'''. Wer systemd kennt, findet sie.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=Animation=&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[https://labs.xinux.net/systemd-security.html systemd: härten und untersuchen]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Teil A: Dienste härten=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Teil A: Dienste härten=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff::1.12:old-73782:rev-73786 --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Systemd_Stufe_3_Security&amp;diff=73782&amp;oldid=prev</id>
		<title>Thomas.will: systemd-run: Optionen live ausprobieren</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Systemd_Stufe_3_Security&amp;diff=73782&amp;oldid=prev"/>
		<updated>2026-10-17T15:47:33Z</updated>

		<summary type="html">&lt;p&gt;systemd-run: Optionen live ausprobieren&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 17. Oktober 2026, 15:47 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l173&quot; &gt;Zeile 173:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 173:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''SystemCallErrorNumber=EPERM''' allein bewirkt nichts, es gehört immer zu einem SystemCallFilter=.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''SystemCallErrorNumber=EPERM''' allein bewirkt nichts, es gehört immer zu einem SystemCallFilter=.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''Mit sed in Units schreiben''': '''sed -i -e''' schreiben, nicht '''sed -ie'''. Sonst entsteht eine Sicherungskopie mit „e“ am Ende im Unit-Verzeichnis.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''Mit sed in Units schreiben''': '''sed -i -e''' schreiben, nicht '''sed -ie'''. Sonst entsteht eine Sicherungskopie mit „e“ am Ende im Unit-Verzeichnis.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Optionen live ausprobieren mit systemd-run==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*Bevor man Optionen in eine Unit schreibt, kann man sie mit einer Shell im Käfig ausprobieren:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*systemd-run -t -p ProtectSystem=strict -p ProtectHome=yes -p PrivateTmp=yes /bin/bash&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*In dieser Shell:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;touch /etc/test&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;touch: cannot touch '/etc/test': Read-only file system&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ls /home&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                      (leer)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*Mit exit ist der Käfig wieder weg.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*Einen einzelnen Befehl mit Ausgabe: '''systemd-run -P -p DynamicUser=yes id'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*So sieht man in Sekunden, was ein Dienst mit einer Option noch darf.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Teil B: Persistenz erkennen=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Teil B: Persistenz erkennen=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff::1.12:old-73767:rev-73782 --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Systemd_Stufe_3_Security&amp;diff=73767&amp;oldid=prev</id>
		<title>Thomas.will: Neue Seite: systemd Stufe 3 (Härten und Persistenz erkennen)</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Systemd_Stufe_3_Security&amp;diff=73767&amp;oldid=prev"/>
		<updated>2026-10-17T15:33:55Z</updated>

		<summary type="html">&lt;p&gt;Neue Seite: systemd Stufe 3 (Härten und Persistenz erkennen)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategorie:systemd]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Stufe 1 · Basic !! Stufe 2 · Fortgeschritten !! Stufe 3 · Security&lt;br /&gt;
|-&lt;br /&gt;
| [[Systemd Stufe 1 Basic|Ich verwende es]] || [[Systemd Stufe 2 Fortgeschritten|Ich schreibe Units]] || '''Ich härte und untersuche'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Einfach erklärt=&lt;br /&gt;
*Ein Dienst darf von Haus aus fast alles, was sein Benutzer darf. Läuft er als root, darf er alles.&lt;br /&gt;
*systemd kann jeden Dienst in einen '''Käfig''' setzen: nur lesen statt schreiben, kein Zugriff auf /home, keine Geräte, nur bestimmte Systemaufrufe.&lt;br /&gt;
*'''systemd-analyze security''' bewertet, wie offen ein Dienst ist: 10 = alles offen, 0 = gut abgeschottet.&lt;br /&gt;
*Weil systemd Programme automatisch und oft als root startet, ist es auch ein beliebter Ort für Angreifer, um sich '''festzusetzen'''. Wer systemd kennt, findet sie.&lt;br /&gt;
&lt;br /&gt;
=Teil A: Dienste härten=&lt;br /&gt;
==Wie offen sind meine Dienste?==&lt;br /&gt;
*systemd-analyze security&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UNIT                                  EXPOSURE PREDICATE HAPPY&lt;br /&gt;
NetworkManager.service                     7.8 EXPOSED   🙁&lt;br /&gt;
cron.service                               9.6 UNSAFE    😨&lt;br /&gt;
ssh.service                                9.6 UNSAFE    😨&lt;br /&gt;
systemd-journald.service                   4.9 OK        🙂&lt;br /&gt;
systemd-logind.service                     2.8 OK        🙂&lt;br /&gt;
systemd-timesyncd.service                  2.1 OK        🙂&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Die eigenen Dienste von systemd sind gut abgeschottet, viele Dienste aus Paketen gar nicht.&lt;br /&gt;
*'''UNSAFE''' heißt nicht „kaputt“, sondern: Wird der Dienst übernommen, hat der Angreifer viel Spielraum.&lt;br /&gt;
*Einzelner Dienst mit allen Punkten: '''systemd-analyze security ssh.service'''&lt;br /&gt;
*Eine Unit-Datei bewerten, bevor sie installiert ist: '''systemd-analyze security --offline=true ./datei.service'''&lt;br /&gt;
&lt;br /&gt;
==Ausgangslage==&lt;br /&gt;
*/etc/systemd/system/simplehttp.service&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Simple Http Server&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStart=/usr/bin/python3 -m http.server&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Wert: '''9,4 UNSAFE'''&lt;br /&gt;
*Das größere Problem sieht man im Browser: Der Dienst läuft als '''root''' und ohne WorkingDirectory. http.server zeigt deshalb '''das komplette Dateisystem ab /''' an.&lt;br /&gt;
*Erste Regel beim Härten: '''Was soll der Dienst eigentlich können?''' Hier: als normaler Benutzer ein einziges Verzeichnis ausliefern.&lt;br /&gt;
&lt;br /&gt;
==Schritt für Schritt==&lt;br /&gt;
{{#drawio:systemd-security-score}}&lt;br /&gt;
*Gemessen mit systemd 257. Jede Zeile kommt zu den vorherigen dazu.&lt;br /&gt;
*Nach '''jedem''' Schritt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl restart simplehttp&lt;br /&gt;
systemctl status simplehttp&lt;br /&gt;
curl -s http://localhost:8000/ | head -3&lt;br /&gt;
systemd-analyze security simplehttp | tail -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Ein besserer Wert nützt nichts, wenn der Dienst danach nicht mehr läuft.&lt;br /&gt;
&lt;br /&gt;
==Die Optionen==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bereich !! Option !! Wirkung&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Dateisystem || ProtectSystem=strict || das ganze Dateisystem nur lesbar, außer /dev, /proc, /sys&lt;br /&gt;
|-&lt;br /&gt;
| ProtectHome=yes || /home, /root und /run/user unsichtbar&lt;br /&gt;
|-&lt;br /&gt;
| PrivateTmp=yes || eigenes /tmp, nicht das gemeinsame&lt;br /&gt;
|-&lt;br /&gt;
| PrivateDevices=yes || eigenes /dev nur mit null, zero, random und Co.&lt;br /&gt;
|-&lt;br /&gt;
| ReadWritePaths=/pfad || Ausnahme: hier darf geschrieben werden&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Benutzer und Rechte || DynamicUser=yes || systemd legt beim Start einen Benutzer an und löscht ihn danach&lt;br /&gt;
|-&lt;br /&gt;
| NoNewPrivileges=yes || kein Aufstieg zu mehr Rechten, z.B. über sudo oder SUID-Programme&lt;br /&gt;
|-&lt;br /&gt;
| CapabilityBoundingSet= || leer: keine Root-Sonderrechte, auch nicht für root&lt;br /&gt;
|-&lt;br /&gt;
| RestrictSUIDSGID=yes || darf keine SUID/SGID-Dateien anlegen&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Kernel || ProtectKernelTunables=yes || /proc/sys und /sys nur lesbar&lt;br /&gt;
|-&lt;br /&gt;
| ProtectKernelModules=yes || darf keine Kernelmodule laden&lt;br /&gt;
|-&lt;br /&gt;
| ProtectKernelLogs=yes, ProtectClock=yes, ProtectHostname=yes, ProtectControlGroups=yes || weitere Teile des Kernels gesperrt&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Netzwerk || RestrictAddressFamilies=AF_INET AF_INET6 || nur IPv4 und IPv6, keine anderen Socket-Arten&lt;br /&gt;
|-&lt;br /&gt;
| IPAddressDeny=any und IPAddressAllow=10.0.10.0/24 localhost || Firewall direkt am Dienst&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Systemaufrufe || SystemCallFilter=@system-service || nur die Aufrufe, die normale Dienste brauchen&lt;br /&gt;
|-&lt;br /&gt;
| SystemCallArchitectures=native || keine 32-Bit-Aufrufe auf 64-Bit-Systemen&lt;br /&gt;
|-&lt;br /&gt;
| RestrictNamespaces=yes || darf keine eigenen Namespaces anlegen&lt;br /&gt;
|}&lt;br /&gt;
*Mehr Optionen: man systemd.exec&lt;br /&gt;
&lt;br /&gt;
==Das Ergebnis==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Einfacher Webserver, gehärtet&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStart=/usr/bin/python3 -m http.server 8000&lt;br /&gt;
WorkingDirectory=/srv/www&lt;br /&gt;
DynamicUser=yes&lt;br /&gt;
&lt;br /&gt;
# Dateisystem&lt;br /&gt;
ProtectSystem=strict&lt;br /&gt;
ProtectHome=yes&lt;br /&gt;
PrivateTmp=yes&lt;br /&gt;
PrivateDevices=yes&lt;br /&gt;
&lt;br /&gt;
# Rechte&lt;br /&gt;
NoNewPrivileges=yes&lt;br /&gt;
CapabilityBoundingSet=&lt;br /&gt;
RestrictSUIDSGID=yes&lt;br /&gt;
&lt;br /&gt;
# Kernel&lt;br /&gt;
ProtectKernelTunables=yes&lt;br /&gt;
ProtectKernelModules=yes&lt;br /&gt;
ProtectKernelLogs=yes&lt;br /&gt;
ProtectControlGroups=yes&lt;br /&gt;
ProtectClock=yes&lt;br /&gt;
ProtectHostname=yes&lt;br /&gt;
&lt;br /&gt;
# Netzwerk&lt;br /&gt;
RestrictAddressFamilies=AF_INET AF_INET6&lt;br /&gt;
IPAddressDeny=any&lt;br /&gt;
IPAddressAllow=10.0.10.0/24 localhost&lt;br /&gt;
&lt;br /&gt;
# Systemaufrufe und Prozesse&lt;br /&gt;
SystemCallFilter=@system-service&lt;br /&gt;
SystemCallArchitectures=native&lt;br /&gt;
RestrictNamespaces=yes&lt;br /&gt;
LockPersonality=yes&lt;br /&gt;
MemoryDenyWriteExecute=yes&lt;br /&gt;
RestrictRealtime=yes&lt;br /&gt;
ProtectProc=invisible&lt;br /&gt;
ProcSubset=pid&lt;br /&gt;
UMask=0077&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Wert: '''1,4 OK'''&lt;br /&gt;
*Port 8000 liegt über 1024, deshalb braucht der Dienst auch '''CAP_NET_BIND_SERVICE''' nicht.&lt;br /&gt;
&lt;br /&gt;
==Dienste aus Paketen härten==&lt;br /&gt;
*Nie die Unit unter /usr/lib ändern, sondern einen Drop-in anlegen:&lt;br /&gt;
*systemctl edit dienst&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
ProtectSystem=strict&lt;br /&gt;
ProtectHome=yes&lt;br /&gt;
PrivateTmp=yes&lt;br /&gt;
NoNewPrivileges=yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*So bleibt die Härtung bei Paket-Updates erhalten.&lt;br /&gt;
*Mit '''systemctl revert dienst''' ist alles wieder wie vorher.&lt;br /&gt;
&lt;br /&gt;
==Stolperfallen beim Härten==&lt;br /&gt;
*'''Schreibt der Dienst Dateien''', scheitert er an ProtectSystem=strict. Lösung: '''ReadWritePaths=''' oder besser '''StateDirectory=name''' (legt /var/lib/name passend an).&lt;br /&gt;
*'''DynamicUser=yes''' und eigene Dateien: Der Benutzer ist jedes Mal ein anderer. Dauerhafte Daten nur über StateDirectory=.&lt;br /&gt;
*'''MemoryDenyWriteExecute=yes''' verträgt sich nicht mit Programmen, die Code zur Laufzeit erzeugen, z.B. Java oder Node.js.&lt;br /&gt;
*'''SystemCallFilter=''': Ruft der Dienst einen verbotenen Aufruf, wird er beendet. Im Status steht dann ''code=killed, signal=SYS''. Zum Testen hilft '''SystemCallErrorNumber=EPERM''': Dann bekommt der Dienst nur einen Fehler und läuft weiter.&lt;br /&gt;
*'''SystemCallErrorNumber=EPERM''' allein bewirkt nichts, es gehört immer zu einem SystemCallFilter=.&lt;br /&gt;
*'''Mit sed in Units schreiben''': '''sed -i -e''' schreiben, nicht '''sed -ie'''. Sonst entsteht eine Sicherungskopie mit „e“ am Ende im Unit-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
=Teil B: Persistenz erkennen=&lt;br /&gt;
==Warum systemd?==&lt;br /&gt;
*Angreifer wollen nach einem Neustart wieder da sein. systemd startet Programme automatisch, oft als root, und eine Unit sieht harmlos aus.&lt;br /&gt;
*In MITRE ATT&amp;amp;CK:&lt;br /&gt;
**'''T1543.002''': Systemd Service anlegen oder ändern&lt;br /&gt;
**'''T1053.006''': Systemd Timer&lt;br /&gt;
*Für das Blue Team heißt das: Man muss wissen, '''wo''' Units liegen können, und erkennen, '''welche nicht dorthin gehören'''.&lt;br /&gt;
&lt;br /&gt;
==Wo man suchen muss==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ort !! Was dort normal ist !! Worauf achten&lt;br /&gt;
|-&lt;br /&gt;
| /usr/lib/systemd/system/ || nur Dateien aus Paketen || Dateien, die zu keinem Paket gehören&lt;br /&gt;
|-&lt;br /&gt;
| /etc/systemd/system/ || eigene Units des Admins, Links in *.wants/ || unbekannte Units, neue Links, Drop-ins in *.d/&lt;br /&gt;
|-&lt;br /&gt;
| /run/systemd/system/ || zur Laufzeit erzeugt || Units, die kein bekanntes Programm erzeugt hat&lt;br /&gt;
|-&lt;br /&gt;
| /etc/systemd/user/, ~/.config/systemd/user/ || selten benutzt || User-Units laufen mit den Rechten des Benutzers&lt;br /&gt;
|-&lt;br /&gt;
| /var/lib/systemd/linger/ || meist leer || Linger: User-Units laufen auch, wenn der Benutzer nicht angemeldet ist&lt;br /&gt;
|-&lt;br /&gt;
| */systemd/system-generators/ || wenige Generatoren aus Paketen || Generatoren laufen sehr früh beim Start, als root&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Werkzeuge==&lt;br /&gt;
;Unit-Dateien, die zu keinem Paket gehören (Debian)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for f in $(find /etc/systemd/system /usr/lib/systemd/system -type f); do&lt;br /&gt;
  dpkg -S &amp;quot;$f&amp;quot; &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || echo &amp;quot;FREMD  $f&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Rocky: '''rpm -qf &amp;quot;$f&amp;quot;''' statt dpkg -S&lt;br /&gt;
*Treffer in /etc sind oft gewollt, z.B. eigene Dienste. Jeder Treffer muss sich aber erklären lassen.&lt;br /&gt;
&lt;br /&gt;
;Was wurde in letzter Zeit geändert?&lt;br /&gt;
*find /etc/systemd /usr/lib/systemd /run/systemd -type f -mtime -7 -ls&lt;br /&gt;
&lt;br /&gt;
;Was überschreibt oder ergänzt Units der Pakete?&lt;br /&gt;
*systemd-delta --type=overridden,extended&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[EXTENDED]   /usr/lib/systemd/system/systemd-logind.service → /usr/lib/systemd/system/systemd-logind.service.d/dbus.conf&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Timer und User-Units&lt;br /&gt;
*systemctl list-timers --all&lt;br /&gt;
*ls /var/lib/systemd/linger/&lt;br /&gt;
*find /home /root -path '*/.config/systemd/user/*' -type f 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
;Verdächtige Befehle in Units&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -r -n -E 'Exec.*(/tmp/|/dev/shm|/var/tmp|curl|wget|base64|bash -c|sh -c|nc )' \&lt;br /&gt;
  /etc/systemd /usr/lib/systemd /run/systemd /home/*/.config/systemd 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Nicht jeder Treffer ist böse, aber jeder gehört angesehen.&lt;br /&gt;
&lt;br /&gt;
;Paketdateien verändert?&lt;br /&gt;
*dpkg --verify&lt;br /&gt;
*Rocky: rpm -Va&lt;br /&gt;
&lt;br /&gt;
;Was läuft gerade, und zu welcher Unit gehört es?&lt;br /&gt;
*systemd-cgls&lt;br /&gt;
*systemctl status &amp;amp;lt;PID&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Überwachen statt suchen==&lt;br /&gt;
*Mit auditd jede Änderung an Unit-Verzeichnissen melden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-w /etc/systemd/system -p wa -k systemd_units&lt;br /&gt;
-w /usr/lib/systemd/system -p wa -k systemd_units&lt;br /&gt;
-w /etc/systemd/user -p wa -k systemd_units&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*ausearch -k systemd_units&lt;br /&gt;
*Das Journal an ein zentrales Logsystem (SIEM) schicken: [[Journald Remote Logging]]&lt;br /&gt;
*Ein Angreifer mit root kann das lokale Journal löschen. Was schon beim SIEM ist, bleibt.&lt;br /&gt;
&lt;br /&gt;
=Stolperfallen=&lt;br /&gt;
*'''Score ist nicht Sicherheit.''' Der Wert zeigt, wie eingesperrt ein Dienst ist, nicht, ob er Lücken hat.&lt;br /&gt;
*'''Härten ohne Test''' legt Dienste lahm. Immer schrittweise und mit Funktionstest.&lt;br /&gt;
*'''Nur /etc durchsuchen reicht nicht.''' User-Units, /run und Generatoren gehören dazu.&lt;br /&gt;
*'''Drop-ins übersehen.''' Eine harmlose Paket-Unit kann über einen Drop-in ein anderes ExecStart= bekommen. systemctl cat und systemd-delta zeigen es.&lt;br /&gt;
&lt;br /&gt;
=Aufgaben=&lt;br /&gt;
==Grundaufgaben==&lt;br /&gt;
#Lassen Sie sich mit systemd-analyze security alle Dienste anzeigen. Welche drei sind am offensten?&lt;br /&gt;
#Legen Sie die ungehärtete simplehttp.service an und rufen Sie die Seite auf. Was sehen Sie?&lt;br /&gt;
#Härten Sie den Dienst Schritt für Schritt, bis er unter 4,0 liegt und die Seite weiter funktioniert.&lt;br /&gt;
#Härten Sie einen Dienst aus einem Paket per systemctl edit mit vier Optionen. Prüfen Sie den Wert vorher und nachher.&lt;br /&gt;
#Suchen Sie auf Ihrem System alle Unit-Dateien, die zu keinem Paket gehören. Können Sie jede erklären?&lt;br /&gt;
==Für Schnelle==&lt;br /&gt;
#Schalten Sie SystemCallFilter=@system-service ein und entfernen Sie dann @system-service schrittweise. Wann bricht der Dienst ab, und was steht im Journal?&lt;br /&gt;
#Richten Sie die auditd-Regel ein, legen Sie eine Test-Unit an und finden Sie das Ereignis mit ausearch.&lt;br /&gt;
#Prüfen Sie mit systemd-delta, welche Units auf Ihrem System verändert oder ergänzt wurden.&lt;br /&gt;
&lt;br /&gt;
=Vertiefung=&lt;br /&gt;
*[[Systemd Hardening Workshop]]&lt;br /&gt;
*[[Systemd Sicherung Ihrer Dienste]]&lt;br /&gt;
*[[Systemd Fähigkeiten von Diensten wegnehmen]]&lt;br /&gt;
*[[Systemd AmbientCapabilities]]&lt;br /&gt;
*[[Systemd Dienst-Privat /tmp=]]&lt;br /&gt;
*[[Systemd Verzeichnisse als schreibgeschützt oder für Dienste nicht zugänglich machen]]&lt;br /&gt;
*[[Systemd InaccessibleDirectories]]&lt;br /&gt;
*[[Systemd Isolieren von Diensten vom Netzwerk]]&lt;br /&gt;
*[[Systemd PrivateNetwork]]&lt;br /&gt;
*[[Systemd Steuern des Geräteknotenzugriffs auf Dienste]]&lt;br /&gt;
*[[Systemd Verbieten von Forking, Einschränkung der Dateierstellung für Dienste]]&lt;br /&gt;
*[[Systemd Andere Optionen]]&lt;br /&gt;
&lt;br /&gt;
=Weiter=&lt;br /&gt;
*[[Systemd Stufe 2 Fortgeschritten|Zurück: Stufe 2]]&lt;br /&gt;
*[[Systemd Lernpfad|Übersicht: Lernpfad systemd]]&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>