<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ubuntu Archive - Maximilian Krieg</title>
	<atom:link href="https://maximiliankrieg.de/tag/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>https://maximiliankrieg.de/tag/ubuntu/</link>
	<description>Wissen, Technik &#38; Erfahrungen</description>
	<lastBuildDate>Sat, 10 Oct 2026 12:22:02 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://maximiliankrieg.de/wp-content/uploads/2026/05/cropped-20260524_logo_2_512-2-32x32.png</url>
	<title>ubuntu Archive - Maximilian Krieg</title>
	<link>https://maximiliankrieg.de/tag/ubuntu/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Linux VPS Installation &#8211; Praxisorientierte Checkliste</title>
		<link>https://maximiliankrieg.de/2026/09/linux-vps-installation-praxisorientierte-checkliste/</link>
					<comments>https://maximiliankrieg.de/2026/09/linux-vps-installation-praxisorientierte-checkliste/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 17:30:32 +0000</pubDate>
				<category><![CDATA[Server & Homelab]]></category>
		<category><![CDATA[Hardening]]></category>
		<category><![CDATA[IT-Sicherheit]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Standardisierung]]></category>
		<category><![CDATA[Systemadministration]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[VPS]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3891</guid>

					<description><![CDATA[<p>Nach vielen Jahren war es Zeit, meine bestehende Serverumgebung grundlegend zu modernisieren. Das bisher eingesetzte Ubuntu-Betriebssystem hat sein reguläres Lebensende erreicht und die historisch gewachsene Architektur entspricht in vielen Bereichen nicht mehr dem Stand, den ich heute neu aufbauen würde. Der Wechsel zu einem neuen Virtual Private Server (VPS) bei einem anderen Provider ist daher [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2026/09/linux-vps-installation-praxisorientierte-checkliste/">Linux VPS Installation &#8211; Praxisorientierte Checkliste</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Nach vielen Jahren war es Zeit, meine bestehende Serverumgebung grundlegend zu modernisieren. Das bisher eingesetzte Ubuntu-Betriebssystem hat sein reguläres Lebensende erreicht und die historisch gewachsene Architektur entspricht in vielen Bereichen nicht mehr dem Stand, den ich heute neu aufbauen würde.</p>



<p class="wp-block-paragraph">Der Wechsel zu einem neuen Virtual Private Server (VPS) bei einem anderen Provider ist daher eine gute Gelegenheit, nicht nur bestehende Dienste zu migrieren, sondern die technische Basis von Grund auf neu zu planen. Bevor Anwendungen und Workloads folgen, soll zunächst eine solide, sichere und nachvollziehbar dokumentierte Grundlage entstehen.</p>



<h2 class="wp-block-heading">Ausgangssituation und Zielsetzung</h2>



<p class="wp-block-paragraph">Die bisherige Umgebung war über viele Jahre produktiver Server und zugleich Plattform zum Lernen und Ausprobieren. Entsprechend ist die Architektur mit neuen Technologien, Konzepten und eigenen Anwendungen organisch gewachsen.</p>



<p class="wp-block-paragraph">Mit dem neuen VPS möchte ich auf einer sauberen Basis starten, bisherige Entscheidungen neu bewerten und moderne Konzepte ausprobieren. Bevor Anwendungen migriert werden, steht daher zunächst eine definierte technische und sicherheitsbezogene Baseline im Mittelpunkt.</p>



<p class="wp-block-paragraph">Eine besondere Herausforderung wird die Migration eigener, über Jahre gewachsener Software. Einige Abhängigkeiten und Laufzeitumgebungen sind auf aktuellen Betriebssystemen nicht mehr verfügbar. Ziel ist deshalb nicht nur, die Anwendungen wieder lauffähig zu machen, sondern sie zu modernisieren und künftig wartbarer, reproduzierbarer und portabler zu betreiben.</p>



<h2 class="wp-block-heading">Eine Checkliste als lebendes Dokument</h2>



<p class="wp-block-paragraph">Die folgende Checkliste beschreibt die Themen und Maßnahmen, die ich bei der Bereitstellung und Absicherung eines neuen VPS berücksichtige. Sie ist als lebendes Dokument gedacht und wird mit neuen Erfahrungen, Anforderungen und Erkenntnissen kontinuierlich weiterentwickelt.</p>



<p class="wp-block-paragraph">Sie stellt keine starre Installationsanleitung dar. Welche Punkte tatsächlich umgesetzt werden, hängt von Einsatzzweck, Schutzbedarf und technischen Rahmenbedingungen ab.</p>



<p class="wp-block-paragraph">Bewusst verzichte ich auf konkrete Anwendungen und deren Konfiguration. Im Mittelpunkt steht eine allgemeingültige VPS-Basis, die unabhängig von Provider und späteren Workloads auch für zukünftige Systeme als Ausgangspunkt dienen soll.</p>



<h2 class="wp-block-heading">Grundsystem &amp; Updates</h2>



<p class="wp-block-paragraph">Ein aktuelles und unterstütztes Grundsystem bildet die Basis für einen sicheren und stabilen VPS. Geregelte Updates und eine korrekte Zeitsynchronisation reduzieren bekannte Schwachstellen und schaffen einen definierten Ausgangszustand.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Betriebssystemversion und Supportstatus prüfen</td><td>☐</td></tr><tr><td>Paketquellen und aktivierte Repositories prüfen</td><td>☐</td></tr><tr><td>System vollständig aktualisieren</td><td>☐</td></tr><tr><td>Automatische Sicherheitsupdates aktivieren</td><td>☐</td></tr><tr><td>Erweiterte Sicherheitsupdates aktivieren, sofern verfügbar</td><td>☐</td></tr><tr><td>Benachrichtigungen über durchgeführte und fehlgeschlagene Updates aktivieren</td><td>☐</td></tr><tr><td>Nicht automatisch installierbare Sicherheitsupdates erkennen und melden</td><td>☐</td></tr><tr><td>Erforderlichen Neustart nach Updates erkennen und melden</td><td>☐</td></tr><tr><td>Hostname und FQDN prüfen bzw. festlegen</td><td>☐</td></tr><tr><td>Zeitzone konfigurieren</td><td>☐</td></tr><tr><td>Verwendeten Mechanismus zur Zeitsynchronisation ermitteln</td><td>☐</td></tr><tr><td>Automatische Zeitsynchronisation aktivieren</td><td>☐</td></tr><tr><td>Zeitquellen und Synchronisationsstatus prüfen</td><td>☐</td></tr><tr><td>Grundlegenden Neustart durchführen und Systemzustand anschließend kontrollieren</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Grundsystem &amp; Updates</figcaption></figure>



<h2 class="wp-block-heading">Benutzer &amp; Berechtigungen</h2>



<p class="wp-block-paragraph">Ein restriktives Berechtigungskonzept begrenzt administrative Zugriffe auf das erforderliche Maß. Persönliche Konten und das Least-Privilege-Prinzip verbessern Sicherheit und Nachvollziehbarkeit.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Separaten administrativen Benutzer einrichten</td><td>☐</td></tr><tr><td>Home-Verzeichnis und Login-Shell prüfen</td><td>☐</td></tr><tr><td>Administrative Rechte über Privilege Escalation vergeben</td><td>☐</td></tr><tr><td>Privilege Escalation praktisch testen</td><td>☐</td></tr><tr><td>Direkte Root-Anmeldung für den normalen Betrieb vermeiden</td><td>☐</td></tr><tr><td>Nicht benötigte Benutzerkonten identifizieren und ggf. deaktivieren</td><td>☐</td></tr><tr><td>Berechtigungen sicherheitsrelevanter Dateien prüfen</td><td>☐</td></tr><tr><td>Least-Privilege-Prinzip anwenden</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Benutzer &amp; Berechtigungen</figcaption></figure>



<h2 class="wp-block-heading">Administration &amp; Management</h2>



<p class="wp-block-paragraph">Administrative Schnittstellen benötigen besonderen Schutz, da sie weitreichenden Zugriff auf das System ermöglichen. Sichere Authentisierung und eine begrenzte Erreichbarkeit reduzieren die damit verbundene Angriffsfläche.</p>



<h3 class="wp-block-heading">SSH-Zugriff</h3>



<p class="wp-block-paragraph">SSH stellt häufig den primären administrativen Zugang zu einem Linux-VPS dar. Schlüsselbasierte Authentisierung und eine restriktive Konfiguration schützen diesen besonders kritischen Zugang.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Schlüsselbasierte Authentifizierung einrichten</td><td>☐</td></tr><tr><td>Schlüsselanmeldung erfolgreich testen</td><td>☐</td></tr><tr><td>Private Schlüssel mit Passphrase schützen</td><td>☐</td></tr><tr><td>Passwortbasierte Remote-Anmeldung deaktivieren</td><td>☐</td></tr><tr><td>Direkten Root-Remotezugriff deaktivieren</td><td>☐</td></tr><tr><td>Leere Passwörter verbieten</td><td>☐</td></tr><tr><td>Nicht benötigte Remote-Funktionen deaktivieren</td><td>☐</td></tr><tr><td>Benötigte Funktionen wie Tunneling bewusst freigeben</td><td>☐</td></tr><tr><td>Konfiguration vor Aktivierung auf Fehler prüfen</td><td>☐</td></tr><tr><td>Effektiv angewendete Konfiguration kontrollieren</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Administration &#8211; SSH-Zugriff</figcaption></figure>



<h3 class="wp-block-heading">Management-Netzwerk</h3>



<p class="wp-block-paragraph">Ein separater Managementpfad trennt administrative Zugriffe von öffentlich erreichbaren Diensten. Gleichzeitig sollte ein unabhängiger Notfallzugang bei Fehlkonfigurationen erhalten bleiben.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Prüfen, ob Managementdienste öffentlich erreichbar sein müssen</td><td>☐</td></tr><tr><td>Öffentlichen Managementzugriff möglichst vermeiden bzw. beschränken</td><td>☐</td></tr><tr><td>Wenn sinnvoll separaten verschlüsselten Management-Tunnel verwenden</td><td>☐</td></tr><tr><td>Eigenen Management-Adressbereich definieren</td><td>☐</td></tr><tr><td>Routing des Managementnetzes prüfen</td><td>☐</td></tr><tr><td>Managementzugriff auf notwendige Quellen beschränken</td><td>☐</td></tr><tr><td>Managementzugriff praktisch testen</td><td>☐</td></tr><tr><td>Verhalten bei Ausfall des Management-Tunnels berücksichtigen</td><td>☐</td></tr><tr><td>Unabhängigen Notfallzugang über den Hosting-Provider sicherstellen und testen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Administration &#8211; Management-Netzwerk</figcaption></figure>



<h2 class="wp-block-heading">Firewalls</h2>



<p class="wp-block-paragraph">Firewalls beschränken die Netzwerkkommunikation auf tatsächlich erforderliche Verbindungen. Mehrere voneinander unabhängige Firewall-Ebenen ermöglichen dabei ein mehrschichtiges Sicherheitskonzept.</p>



<h3 class="wp-block-heading">Provider-Ebene</h3>



<p class="wp-block-paragraph">Eine vorgelagerte Provider-Firewall kann unerwünschten Verkehr bereits vor dem VPS filtern. Ihre Funktionsweise und das Zusammenspiel mit der lokalen Firewall müssen deshalb bekannt sein.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Prüfen, ob der Hosting-Provider eine vorgelagerte Firewall bereitstellt</td><td>☐</td></tr><tr><td>Aktivierungsstatus prüfen</td><td>☐</td></tr><tr><td>Prüfen und dokumentieren, ob Policies stateful oder stateless arbeiten</td><td>☐</td></tr><tr><td>Bei stateless Policies erforderlichen Rückverkehr berücksichtigen</td><td>☐</td></tr><tr><td>Default-Verhalten des Regelwerks prüfen</td><td>☐</td></tr><tr><td>Regelreihenfolge bzw. Priorisierung verstehen</td><td>☐</td></tr><tr><td>IPv4-Regelwerk prüfen</td><td>☐</td></tr><tr><td>IPv6-Regelwerk prüfen</td><td>☐</td></tr><tr><td>Managementzugriffe möglichst bereits auf Provider-Ebene beschränken</td><td>☐</td></tr><tr><td>Nur tatsächlich benötigte öffentliche Dienste zulassen</td><td>☐</td></tr><tr><td>Möglichkeiten und Bedarf eines Geo-Blockers ermitteln und konfigurieren</td><td>☐</td></tr><tr><td>Automatische Updates für die Geo-IP-Datenbank einrichten und sicherstellen</td><td>☐</td></tr><tr><td>Änderungen von extern testen</td><td>☐</td></tr><tr><td>Recovery-Verfahren bei fehlerhafter Konfiguration kennen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Firewalls &#8211; Provider-Ebene</figcaption></figure>



<h3 class="wp-block-heading">Host-Ebene</h3>



<p class="wp-block-paragraph">Die lokale Firewall schützt den VPS unabhängig von externen Sicherheitsmechanismen. Sie bildet die unmittelbar am Betriebssystem durchgesetzte Netzwerkzugriffskontrolle.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Host-Firewall unabhängig von der Provider-Firewall aktivieren</td><td>☐</td></tr><tr><td>Stateful-/Stateless-Verhalten prüfen</td><td>☐</td></tr><tr><td>Eingehenden Verkehr standardmäßig blockieren</td><td>☐</td></tr><tr><td>Ausgehendes Default-Verhalten bewusst festlegen</td><td>☐</td></tr><tr><td>Nur tatsächlich benötigte Ports freigeben</td><td>☐</td></tr><tr><td>Managementnetz bzw. Management-Tunnel berücksichtigen</td><td>☐</td></tr><tr><td>Loopback-Verkehr korrekt behandeln</td><td>☐</td></tr><tr><td>Rückverkehr bestehender Verbindungen berücksichtigen</td><td>☐</td></tr><tr><td>IPv4-Regelwerk prüfen</td><td>☐</td></tr><tr><td>IPv6-Regelwerk prüfen</td><td>☐</td></tr><tr><td>Möglichkeiten und Bedarf eines Geo-Blockers ermitteln und konfigurieren</td><td>☐</td></tr><tr><td>Automatische Updates für die Geo-IP-Datenbank einrichten und sicherstellen</td><td>☐</td></tr><tr><td>Firewall-Logging bedarfsgerecht aktivieren</td><td>☐</td></tr><tr><td>Zusammenspiel von Provider- und Host-Firewall testen</td><td>☐</td></tr><tr><td>Effektiv erreichbare Ports von extern überprüfen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Firewalls &#8211; Host-Ebene</figcaption></figure>



<h2 class="wp-block-heading">Netzwerk &amp; DNS</h2>



<p class="wp-block-paragraph">Eine definierte Netzwerk- und DNS-Konfiguration ist Voraussetzung für einen kontrollierbaren Serverbetrieb. Adressierung, Routing, Dienste und Namensauflösung sollten einem dokumentierten Sollzustand entsprechen.</p>



<h3 class="wp-block-heading">IP-Konfiguration &amp; Dienste</h3>



<p class="wp-block-paragraph">Die Netzwerkkonfiguration bestimmt die grundlegende Erreichbarkeit des Systems. Nur tatsächlich benötigte Netzwerkdienste sollten aktiv und erreichbar sein.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Zugewiesene IPv4-Adressen dokumentieren</td><td>☐</td></tr><tr><td>Zugewiesene IPv6-Adressen und Präfixe dokumentieren</td><td>☐</td></tr><tr><td>Aktive Netzwerkinterfaces erfassen</td><td>☐</td></tr><tr><td>Default Routes für IPv4 und IPv6 prüfen</td><td>☐</td></tr><tr><td>Routingtabelle auf unerwartete Einträge kontrollieren</td><td>☐</td></tr><tr><td>Aktive Netzwerkdienste und Listener vollständig ermitteln</td><td>☐</td></tr><tr><td>Zweck und Notwendigkeit der Netzwerkdienste bewerten</td><td>☐</td></tr><tr><td>Nicht benötigte Netzwerkdienste deaktivieren</td><td>☐</td></tr><tr><td>Nach Änderungen aktive Listener erneut kontrollieren</td><td>☐</td></tr><tr><td>IPv4-Konnektivität testen</td><td>☐</td></tr><tr><td>IPv6-Konnektivität testen</td><td>☐</td></tr><tr><td>MTU insbesondere bei zusätzlichen Tunneln prüfen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Netzwerk &#8211; IP-Konfiguration &amp; Dienste</figcaption></figure>



<h3 class="wp-block-heading">Namensauflösung</h3>



<p class="wp-block-paragraph">DNS stellt die Zuordnung zwischen Namen und Netzwerkadressen her. Eine konsistente Forward- und Reverse-Auflösung erleichtert Betrieb, Administration und Fehleranalyse.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>DNS-Resolver-Konfiguration prüfen</td><td>☐</td></tr><tr><td>Namensauflösung testen</td><td>☐</td></tr><tr><td>Interne und externe DNS-Auflösung planen</td><td>☐</td></tr><tr><td>Benötigte interne DNS-Records konfigurieren</td><td>☐</td></tr><tr><td>Benötigte externe DNS-Records konfigurieren</td><td>☐</td></tr><tr><td>A-Records für IPv4 konfigurieren</td><td>☐</td></tr><tr><td>AAAA-Records für IPv6 konfigurieren</td><td>☐</td></tr><tr><td>PTR-Records für Reverse DNS konfigurieren bzw. beim Provider setzen</td><td>☐</td></tr><tr><td>Weitere DNS-Records abhängig vom Einsatzzweck konfigurieren</td><td>☐</td></tr><tr><td>Forward- und Reverse-DNS-Auflösung testen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Netzwerk &#8211; Namensauflösung</figcaption></figure>



<h2 class="wp-block-heading">Logging &amp; Benachrichtigungen</h2>



<p class="wp-block-paragraph">Protokollierung schafft Transparenz über Systemzustände und sicherheitsrelevante Ereignisse. Benachrichtigungen ermöglichen eine zeitnahe Reaktion auf Zustände, die administratives Eingreifen erfordern.</p>



<h3 class="wp-block-heading">Protokollierung</h3>



<p class="wp-block-paragraph">Systemprotokolle bilden eine wesentliche Grundlage für Fehleranalyse und Sicherheitsuntersuchungen. Aufbewahrung, Umfang und Schutz der Daten sollten kontrolliert erfolgen.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Verwendetes Logging-System identifizieren</td><td>☐</td></tr><tr><td>Persistente Systemprotokollierung sicherstellen</td><td>☐</td></tr><tr><td>Logrotation kontrollieren bzw. konfigurieren</td><td>☐</td></tr><tr><td>Maximale Speicherbelegung der Logs begrenzen</td><td>☐</td></tr><tr><td>Authentifizierungsereignisse protokollieren</td><td>☐</td></tr><tr><td>Firewall-Ereignisse bedarfsgerecht protokollieren</td><td>☐</td></tr><tr><td>Update-Ereignisse protokollieren</td><td>☐</td></tr><tr><td>Logs auf Fehler und Auffälligkeiten prüfen</td><td>☐</td></tr><tr><td>Bei erhöhtem Schutzbedarf Logs an einen externen Speicherort übertragen</td><td>☐</td></tr><tr><td>Externe Log-Archivierung bei Bedarf vorsehen</td><td>☐</td></tr><tr><td>Protokollierungsumfang auf notwendige Daten beschränken</td><td>☐</td></tr><tr><td>Datenschutz- und Compliance-Anforderungen berücksichtigen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Logging &#8211; Protokollierung</figcaption></figure>



<h3 class="wp-block-heading">Alarmierung</h3>



<p class="wp-block-paragraph">Nicht jedes Ereignis kann regelmäßig manuell geprüft werden. Eine gezielte Alarmierung weist daher auf kritische Fehler, Sicherheitsereignisse oder erforderliche administrative Maßnahmen hin.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Technischen Benachrichtigungskanal einrichten</td><td>☐</td></tr><tr><td>Authentifizierte und verschlüsselte Übertragung verwenden</td><td>☐</td></tr><tr><td>Zugangsdaten sicher speichern und Dateiberechtigungen prüfen</td><td>☐</td></tr><tr><td>Testbenachrichtigung durchführen</td><td>☐</td></tr><tr><td>Durchgeführte automatische Updates bei Bedarf melden</td><td>☐</td></tr><tr><td>Fehlgeschlagene Updates melden</td><td>☐</td></tr><tr><td>Nicht automatisch installierbare Sicherheitsupdates melden</td><td>☐</td></tr><tr><td>Erforderliche Neustarts melden</td><td>☐</td></tr><tr><td>Kritische Systemereignisse bei Bedarf melden</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Logging &#8211; Alarmierung</figcaption></figure>



<h2 class="wp-block-heading">System-Hardening</h2>



<p class="wp-block-paragraph">System-Hardening reduziert die Angriffsfläche auf die für den vorgesehenen Betrieb erforderlichen Funktionen. Ergänzende Sicherheitsmechanismen erschweren die Ausnutzung verbleibender Angriffswege.</p>



<h3 class="wp-block-heading">Angriffsfläche reduzieren</h3>



<p class="wp-block-paragraph">Jeder zusätzliche Dienst, Port oder Softwarebestandteil kann potenzielle Angriffsmöglichkeiten schaffen. Nicht benötigte Komponenten sollten deshalb konsequent vermieden werden.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Laufende Dienste inventarisieren</td><td>☐</td></tr><tr><td>Nicht benötigte Dienste deaktivieren</td><td>☐</td></tr><tr><td>Nicht benötigte Pakete entfernen</td><td>☐</td></tr><tr><td>Offene Netzwerkports kontrollieren</td><td>☐</td></tr><tr><td>Angriffsfläche anhand von Ports, Diensten und Netzwerkpfaden erfassen</td><td>☐</td></tr><tr><td>IPv4 und IPv6 gleichermaßen berücksichtigen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Hardening &#8211; Angriffsfläche reduzieren</figcaption></figure>



<h3 class="wp-block-heading">Betriebssystem</h3>



<p class="wp-block-paragraph">Betriebssystemseitige Sicherheitsmechanismen ergänzen die Absicherung einzelner Dienste. Dazu gehören insbesondere restriktive Systemparameter, Zugriffskontrollen und Integritätsmechanismen.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Kernel-Parameter für Netzwerk- und Prozesshärtung prüfen</td><td>☐</td></tr><tr><td>Geeignete Kernel-Hardening-Parameter setzen</td><td>☐</td></tr><tr><td>Änderungen dokumentieren</td><td>☐</td></tr><tr><td>Mandatory-Access-Control-Mechanismen aktivieren bzw. vorhandene Konfiguration prüfen</td><td>☐</td></tr><tr><td>Sicherheitsprofile kontrollieren</td><td>☐</td></tr><tr><td>Berechtigungen kritischer Systemdateien prüfen</td><td>☐</td></tr><tr><td>Schutz gegen wiederholte fehlgeschlagene Anmeldungen bei Bedarf einrichten</td><td>☐</td></tr><tr><td>System-Auditing bei entsprechendem Schutzbedarf aktivieren</td><td>☐</td></tr><tr><td>Sicherheitsrelevante Ereignisse bzw. Syscalls bei Bedarf überwachen</td><td>☐</td></tr><tr><td>Integritätsüberwachung kritischer Systemdateien bei Bedarf einrichten</td><td>☐</td></tr><tr><td>Mechanismen zur Erkennung unerwarteter Systemmodifikationen bei Bedarf einsetzen</td><td>☐</td></tr><tr><td>Sicherheits- und Schwachstellenstatus regelmäßig prüfen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Hardening &#8211; Betriebssystem</figcaption></figure>



<h3 class="wp-block-heading">Protokolle &amp; Kryptografie</h3>



<p class="wp-block-paragraph">Veraltete Protokolle und kryptografische Verfahren können sichere Kommunikation erheblich schwächen. Eine definierte kryptografische Baseline beschränkt den VPS auf angemessen sichere Verfahren.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Veraltete bzw. nicht benötigte Netzwerk- und Managementprotokolle deaktivieren</td><td>☐</td></tr><tr><td>Veraltete Protokollversionen deaktivieren</td><td>☐</td></tr><tr><td>Veraltete Verschlüsselungsalgorithmen und Cipher deaktivieren</td><td>☐</td></tr><tr><td>Veraltete Hash- und Signaturverfahren deaktivieren</td><td>☐</td></tr><tr><td>Veraltete Schlüsselaustauschverfahren deaktivieren</td><td>☐</td></tr><tr><td>Mindestanforderungen für Verschlüsselung und Authentifizierung definieren</td><td>☐</td></tr><tr><td>Nur aktuell unterstützte kryptografische Verfahren verwenden</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Hardening &#8211; Kryptografie</figcaption></figure>



<h2 class="wp-block-heading">Backup &amp; Recovery</h2>



<p class="wp-block-paragraph">Backups und Wiederherstellungsverfahren begrenzen die Auswirkungen von Fehlern, Ausfällen und Datenverlust. Entscheidend ist nicht nur die Sicherung, sondern deren nachgewiesene Wiederherstellbarkeit.</p>



<h3 class="wp-block-heading">Datensicherung</h3>



<p class="wp-block-paragraph">Backups stellen relevante Daten und Konfigurationen unabhängig vom laufenden VPS sicher. Mindestens eine Sicherung sollte deshalb außerhalb des Systems aufbewahrt werden.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Zu sichernde Basiskonfiguration bestimmen</td><td>☐</td></tr><tr><td>Relevante Systemkonfiguration sichern</td><td>☐</td></tr><tr><td>Benutzer- und Berechtigungskonfiguration berücksichtigen</td><td>☐</td></tr><tr><td>Remote-Administrationskonfiguration berücksichtigen</td><td>☐</td></tr><tr><td>Firewall- und Managementkonfiguration berücksichtigen</td><td>☐</td></tr><tr><td>Mindestens eine Sicherung außerhalb des VPS vorhalten</td><td>☐</td></tr><tr><td>Backup-Aufbewahrung und Rotation definieren</td><td>☐</td></tr><tr><td>Backup testweise wiederherstellen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Backup &#8211; Datensicherung</figcaption></figure>



<h3 class="wp-block-heading">Snapshot</h3>



<p class="wp-block-paragraph">Snapshots ermöglichen die schnelle Rückkehr zu einem definierten Systemzustand, beispielsweise nach fehlgeschlagenen Änderungen. Sie ergänzen klassische Backups, ersetzen diese jedoch nicht.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Snapshot-Funktion des Providers prüfen</td><td>☐</td></tr><tr><td>Snapshot-Strategie für Erstellung, Rotation und Aufbewahrung definieren</td><td>☐</td></tr><tr><td>Snapshot vor größeren bzw. risikobehafteten Änderungen erstellen</td><td>☐</td></tr><tr><td>Snapshot nach erfolgreicher Basiskonfiguration erstellen</td><td>☐</td></tr><tr><td>Snapshot testweise zurückspielen</td><td>☐</td></tr><tr><td>System-, Netzwerk- und Managementfunktion nach Restore überprüfen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Backup &#8211; Snapshot</figcaption></figure>



<h3 class="wp-block-heading">Wiederherstellung &amp; Notfallvorsorge</h3>



<p class="wp-block-paragraph">Ein dokumentiertes Recovery-Verfahren reduziert Ausfallzeiten und Unsicherheiten im Störungsfall. Wiederherstellung und Notfallzugänge sollten daher praktisch getestet werden.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Wiederherstellungsverfahren dokumentieren</td><td>☐</td></tr><tr><td>Unterschied zwischen Backup und Snapshot berücksichtigen</td><td>☐</td></tr><tr><td>Notfallplan für vollständigen Systemausfall dokumentieren</td><td>☐</td></tr><tr><td>Vorgehen bei vermuteter bzw. bestätigter Kompromittierung dokumentieren</td><td>☐</td></tr><tr><td>Recovery-Zugänge regelmäßig auf Funktionsfähigkeit prüfen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Backup &#8211; Wiederherstellung</figcaption></figure>



<h2 class="wp-block-heading">Monitoring &amp; Betriebskontrollen</h2>



<p class="wp-block-paragraph">Der Sicherheitszustand eines VPS verändert sich während seines Lebenszyklus. Automatische Überwachung und regelmäßige Prüfungen helfen, Abweichungen vom definierten Sollzustand frühzeitig zu erkennen.</p>



<h3 class="wp-block-heading">Kontinuierliche Überwachung</h3>



<p class="wp-block-paragraph">Monitoring überwacht wichtige Systemzustände automatisiert und fortlaufend. Kritische Veränderungen können dadurch erkannt werden, ohne auf eine manuelle Kontrolle warten zu müssen.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>VPS-Erreichbarkeit überwachen</td><td>☐</td></tr><tr><td>Festplattenbelegung überwachen</td><td>☐</td></tr><tr><td>Kritische Systemdienste überwachen</td><td>☐</td></tr><tr><td>Update- und Patchstatus überwachen</td><td>☐</td></tr><tr><td>Neustartbedarf überwachen</td><td>☐</td></tr><tr><td>Zeitsynchronisation überwachen</td><td>☐</td></tr><tr><td>Optional CPU, RAM und Systemlast überwachen</td><td>☐</td></tr><tr><td>Sicherheitsrelevante Ereignisse bei Bedarf überwachen</td><td>☐</td></tr><tr><td>Integritätsstatus bei entsprechender Überwachung kontrollieren</td><td>☐</td></tr><tr><td>Veränderungen der öffentlich erreichbaren Angriffsfläche erkennen</td><td>☐</td></tr><tr><td>Alarmierungsweg testen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Monitoring &#8211; Kontinuierliche Überwachung</figcaption></figure>



<h3 class="wp-block-heading">Periodische Prüfungen</h3>



<p class="wp-block-paragraph">Nicht alle sicherheitsrelevanten Eigenschaften lassen sich sinnvoll kontinuierlich überwachen. Wiederkehrende Prüfungen ergänzen das Monitoring deshalb um eine umfassendere Bewertung des Systemzustands.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Feste Kontrollintervalle definieren</td><td>☐</td></tr><tr><td>Sicherheitsupdates und fehlgeschlagene Updates kontrollieren</td><td>☐</td></tr><tr><td>Betriebssystem-Supportstatus kontrollieren</td><td>☐</td></tr><tr><td>Benutzer und administrative Berechtigungen kontrollieren</td><td>☐</td></tr><tr><td>Aktive Netzwerkdienste und Listener mit dem Sollzustand vergleichen</td><td>☐</td></tr><tr><td>Offene Ports kontrollieren</td><td>☐</td></tr><tr><td>Provider-Firewall kontrollieren</td><td>☐</td></tr><tr><td>Host-Firewall kontrollieren</td><td>☐</td></tr><tr><td>IPv4- und IPv6-Angriffsfläche kontrollieren</td><td>☐</td></tr><tr><td>DNS- und Reverse-DNS-Einträge kontrollieren</td><td>☐</td></tr><tr><td>Logs auf Auffälligkeiten prüfen</td><td>☐</td></tr><tr><td>Systemzustand und Speicherbelegung kontrollieren</td><td>☐</td></tr><tr><td>Schwachstellenstatus kontrollieren</td><td>☐</td></tr><tr><td>Verwendete Protokolle und kryptografische Verfahren auf Veraltung prüfen</td><td>☐</td></tr><tr><td>Backup- und Snapshot-Status kontrollieren</td><td>☐</td></tr><tr><td>Wiederherstellung regelmäßig praktisch testen</td><td>☐</td></tr><tr><td>Notfallzugang kontrollieren</td><td>☐</td></tr><tr><td>Ergebnisse und notwendige Maßnahmen dokumentieren</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Monitoring &#8211; Periodische Prüfungen</figcaption></figure>



<h2 class="wp-block-heading">Dokumentation</h2>



<p class="wp-block-paragraph">Eine aktuelle Dokumentation macht Konfiguration und Sollzustand des VPS nachvollziehbar und reproduzierbar. Sie unterstützt Administration, Fehleranalyse, Sicherheitsprüfungen und Wiederherstellung.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>Systemübersicht und grundlegende Architektur dokumentieren</td><td>☐</td></tr><tr><td>Betriebssystem, Version und Supportstatus dokumentieren</td><td>☐</td></tr><tr><td>Installations- und Konfigurationsschritte nachvollziehbar dokumentieren</td><td>☐</td></tr><tr><td>Wesentliche manuelle Änderungen und Befehle dokumentieren</td><td>☐</td></tr><tr><td>Netzwerk, Adressierung und Routing dokumentieren</td><td>☐</td></tr><tr><td>DNS-Konfiguration und relevante Records dokumentieren</td><td>☐</td></tr><tr><td>Aktive Dienste und vorgesehene Ports dokumentieren</td><td>☐</td></tr><tr><td>Provider-Firewall dokumentieren</td><td>☐</td></tr><tr><td>Host-Firewall dokumentieren</td><td>☐</td></tr><tr><td>Remote- und Managementzugang dokumentieren</td><td>☐</td></tr><tr><td>Benutzer- und Berechtigungskonzept dokumentieren</td><td>☐</td></tr><tr><td>Hardening- und Kryptografie-Baseline dokumentieren</td><td>☐</td></tr><tr><td>Updateverfahren dokumentieren</td><td>☐</td></tr><tr><td>Logging und Benachrichtigungen dokumentieren</td><td>☐</td></tr><tr><td>Backup-, Snapshot- und Recovery-Verfahren dokumentieren</td><td>☐</td></tr><tr><td>Abweichungen von der Baseline dokumentieren</td><td>☐</td></tr><tr><td>Dokumentation nach relevanten Änderungen aktualisieren</td><td>☐</td></tr><tr><td>Keine Passwörter, privaten Schlüssel oder sonstigen Secrets dokumentieren</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Dokumentation</figcaption></figure>



<h2 class="wp-block-heading">Abschluss &amp; Abnahme</h2>



<p class="wp-block-paragraph">Die abschließende Abnahme validiert die Basiskonfiguration als Gesamtsystem. Der erfolgreich geprüfte und dokumentierte Zustand bildet anschließend die Referenz für den weiteren Betrieb.</p>



<figure class="wp-block-table"><table><thead><tr><th>Maßnahme</th><th>Prüfstatus</th></tr></thead><tbody><tr><td>System vollständig aktualisiert</td><td>☐</td></tr><tr><td>Keine unerwarteten Systemfehler vorhanden</td><td>☐</td></tr><tr><td>Vollständigen Neustart erfolgreich durchgeführt</td><td>☐</td></tr><tr><td>Benötigte Dienste nach Neustart automatisch verfügbar</td><td>☐</td></tr><tr><td>Remote- und Managementzugang getestet</td><td>☐</td></tr><tr><td>Passwort- und Root-Remotezugriff erwartungsgemäß blockiert</td><td>☐</td></tr><tr><td>Provider-Notfallzugang getestet</td><td>☐</td></tr><tr><td>Provider- und Host-Firewall getestet</td><td>☐</td></tr><tr><td>IPv4- und IPv6-Konnektivität geprüft</td><td>☐</td></tr><tr><td>Aktive Dienste und Listener entsprechen dem dokumentierten Sollzustand</td><td>☐</td></tr><tr><td>Extern erreichbare Ports entsprechen dem Sollzustand</td><td>☐</td></tr><tr><td>Externen Portscan über IPv4 und IPv6 durchführen</td><td>☐</td></tr><tr><td>DNS einschließlich A, AAAA und PTR geprüft</td><td>☐</td></tr><tr><td>Forward- und Reverse-DNS funktionieren</td><td>☐</td></tr><tr><td>Zeitsynchronisation funktioniert</td><td>☐</td></tr><tr><td>Automatische Sicherheitsupdates funktionieren</td><td>☐</td></tr><tr><td>Update- und Reboot-Benachrichtigungen funktionieren</td><td>☐</td></tr><tr><td>Logging funktioniert</td><td>☐</td></tr><tr><td>Externe Logübertragung funktioniert, sofern eingesetzt</td><td>☐</td></tr><tr><td>Hardening- und Kryptografie-Baseline geprüft</td><td>☐</td></tr><tr><td>Veraltete Protokolle und Algorithmen deaktiviert</td><td>☐</td></tr><tr><td>Backup erfolgreich wiederhergestellt</td><td>☐</td></tr><tr><td>Snapshot erfolgreich erstellt und testweise zurückgespielt</td><td>☐</td></tr><tr><td>Tatsächliche Angriffsfläche entspricht dem dokumentierten Sollzustand</td><td>☐</td></tr><tr><td>Dokumentation auf finalem Stand</td><td>☐</td></tr><tr><td>Regelmäßige Kontrollen eingerichtet</td><td>☐</td></tr><tr><td>Abschließenden Baseline-Snapshot erstellen</td><td>☐</td></tr></tbody></table><figcaption class="wp-element-caption">Abnahme</figcaption></figure>



<p class="wp-block-paragraph"></p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2026/09/linux-vps-installation-praxisorientierte-checkliste/">Linux VPS Installation &#8211; Praxisorientierte Checkliste</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2026/09/linux-vps-installation-praxisorientierte-checkliste/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deutsche Locale in Ubuntu nicht richtig gesetzt</title>
		<link>https://maximiliankrieg.de/2016/06/deutsche-locale-in-ubuntu-nicht-richtig-gesetzt/</link>
					<comments>https://maximiliankrieg.de/2016/06/deutsche-locale-in-ubuntu-nicht-richtig-gesetzt/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Sat, 25 Jun 2016 20:11:00 +0000</pubDate>
				<category><![CDATA[Server & Homelab]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=1219</guid>

					<description><![CDATA[<p>Locales werden unter Linux benutzt, um die Systemsprache, sowie weitere Eigenschaften festzulegen. Zudem werden auch Zahlenformate und Zeichensätze durch die Locale bestimmt. Seit einem Update meiner Ubuntu-VM wird eine Fehlermeldung bei Aktualisierungen und Installationen von Paketen geworfen. In diesem Beitrag beschreibe ich, wie das Problem durch das manuelle Setzen der Locale behoben werden kann. Symptom [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2016/06/deutsche-locale-in-ubuntu-nicht-richtig-gesetzt/">Deutsche Locale in Ubuntu nicht richtig gesetzt</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Locales werden unter Linux benutzt, um die Systemsprache, sowie weitere Eigenschaften festzulegen. Zudem werden auch Zahlenformate und Zeichensätze durch die Locale bestimmt. Seit einem Update meiner Ubuntu-VM wird eine Fehlermeldung bei Aktualisierungen und Installationen von Paketen geworfen. In diesem Beitrag beschreibe ich, wie das Problem durch das manuelle Setzen der Locale behoben werden kann.</p>



<h3 class="wp-block-heading">Symptom</h3>



<p class="wp-block-paragraph">Bei der Installation, Aktualisierung und Deinstallation von Paketen über&nbsp;<code>apt-get</code>&nbsp;werden konstant die folgenden Fehlermeldungen geworfen.</p>



<pre class="wp-block-code"><code>locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory</code></pre>



<h3 class="wp-block-heading">Problem</h3>



<p class="wp-block-paragraph">Während meiner Recherche bin ich auf unterschiedlichste Begründungen gestoßen, deren Ursachen jedoch nicht eindeutig auf das von mir betriebene System zutreffen. Lasse ich mir die Locale mittels&nbsp;<code>locale</code>&nbsp;ausgeben, erhalte ich folgende Ausgabe.</p>



<pre class="wp-block-code"><code># locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=</code></pre>



<p class="wp-block-paragraph">An dieser Stelle ist auffällig, dass sowohl deutsche und englische Parameter gesetzt sind. Für eine qualifizierte Fehlerdiagnose fehlen mir fundierte Kenntnisse bezüglich Linux. Versuche ich die Locale mittels&nbsp;<code>update-locale LANG=de_DE.UTF-8</code>&nbsp;zu setzen, erhalte ich erneut die vorherigen Fehlermeldungen. An diesem Punkt schlussfolgere ich für mein Problem, dass die deutsche Locale in irgendeiner Form fehlerhaft ist.</p>



<h3 class="wp-block-heading">Lösungsstrategie</h3>



<p class="wp-block-paragraph">Locales generieren</p>



<p class="wp-block-paragraph">In einem Beitrag wird zu der Problematik einer fehlerhaften Locale empfohlen, sie neu zu generieren und im Anschluss zu rekonfigurieren.</p>



<pre class="wp-block-code"><code># sudo locale-gen de_DE.UTF-8
Generating locales...
  de_DE.UTF-8... up-to-date
Generation complete.

# sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_PAPER = "de_DE.UTF-8",
        LC_ADDRESS = "de_DE.UTF-8",
        LC_MONETARY = "de_DE.UTF-8",
        LC_NUMERIC = "de_DE.UTF-8",
        LC_TELEPHONE = "de_DE.UTF-8",
        LC_IDENTIFICATION = "de_DE.UTF-8",
        LC_MEASUREMENT = "de_DE.UTF-8",
        LC_TIME = "de_DE.UTF-8",
        LC_NAME = "de_DE.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales...
  de_DE.UTF-8... up-to-date
Generation complete.</code></pre>



<p class="wp-block-paragraph">Auch während der Rekonfiguration sind die Fehlermeldungen präsent. Eine erneute Durchführung des Befehls&nbsp;<code>dpkg-reconfigure</code>&nbsp;bewirkt keine Änderung an der Ausgabe bzw. Problematik. An dieser Stelle bin ich am Überlegen, ob das Problem generell im Zusammenhang mit der deutschen Locale begraben liegt. Als Alternativlösung versuche ich mir stattdessen die englische Locale zu erzeugen und im Anschluss&nbsp;<code>dpkg-reconfigure</code>&nbsp;durchzuführen.</p>



<pre class="wp-block-code"><code># sudo locale-gen en_US.UTF-8
Generating locales...
  en_US.UTF-8... done
Generation complete.

# sudo dpkg-reconfigure locales
Generating locales...
  de_DE.UTF-8... done
  en_US.UTF-8... up-to-date
Generation complete.</code></pre>



<p class="wp-block-paragraph">Die Rekonfiguration verläuft erfolgreich. Ich versuche zunächst die deutsche Locale zu setzen und überprüfe danach die Einstellungen.</p>



<pre class="wp-block-code"><code># update-locale LANG=de_DE.UTF-8

# locale
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=</code></pre>



<p class="wp-block-paragraph">Die Ausgabe von&nbsp;<code>locale</code>&nbsp;stimmt nun mit meinen Erwartungen überein und es werden keine Fehlermeldungen mehr ausgegeben. Das Problem scheint somit vorerst gelöst zu sein.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2016/06/deutsche-locale-in-ubuntu-nicht-richtig-gesetzt/">Deutsche Locale in Ubuntu nicht richtig gesetzt</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2016/06/deutsche-locale-in-ubuntu-nicht-richtig-gesetzt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fehlende Public Keys beim Update von Ubuntu-Paketen</title>
		<link>https://maximiliankrieg.de/2015/06/fehlende-public-keys-beim-update-von-ubuntu-paketen-2/</link>
					<comments>https://maximiliankrieg.de/2015/06/fehlende-public-keys-beim-update-von-ubuntu-paketen-2/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Fri, 19 Jun 2015 20:36:00 +0000</pubDate>
				<category><![CDATA[Server & Homelab]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=1234</guid>

					<description><![CDATA[<p>Ubuntu ist eine Debian-basierte Linux-Distribution. Sie hat das Ziel, ein einfach zu installierendes und leicht zu bedienendes Betriebssystem zu sein. Die Aktualisierung von Paketen wird mithilfe von Signaturen überprüft. Zum Einsatz kommt dabei das kostenlose Kryptographiesystem&#160;GNU Privacy Guard (GPG). Es dient in diesem Kontext zum Erzeugen und Prüfen elektronischer Signaturen. Nach einem Update des Betriebssystems [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/06/fehlende-public-keys-beim-update-von-ubuntu-paketen-2/">Fehlende Public Keys beim Update von Ubuntu-Paketen</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ubuntu ist eine Debian-basierte Linux-Distribution. Sie hat das Ziel, ein einfach zu installierendes und leicht zu bedienendes Betriebssystem zu sein. Die Aktualisierung von Paketen wird mithilfe von Signaturen überprüft. Zum Einsatz kommt dabei das kostenlose Kryptographiesystem&nbsp;<em>GNU Privacy Guard (GPG)</em>. Es dient in diesem Kontext zum Erzeugen und Prüfen elektronischer Signaturen. Nach einem Update des Betriebssystems treten nun Fehlermeldungen auf, dass&nbsp;<em>Öffentlichen Schlüssel (Public Key)</em>&nbsp;fehlen würden. In diesem Beitrag zeige ich kurz, wie man die Schlüssel importiert und den Fehler behebt.</p>



<h3 class="wp-block-heading">Symptom</h3>



<p class="wp-block-paragraph">Nachdem ich meine Ubuntu-VM einige Zeit als Desktop-Alternative eingesetzt habe, treten neuerdings Fehlermeldungen beim Update über&nbsp;<code>apt</code>&nbsp;auf. Die Pakete können zwar korrekt aktualisiert werden, aber mich stört die Fehlermeldung. Die Fehler werden am Ende des&nbsp;<code>apt-get update</code>&nbsp;ausgegeben.</p>



<pre class="wp-block-code"><code># sudo apt-get update

&#91;...]

Reading package lists... Done
W: GPG error: http://archive.ubuntu.com trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://security.ubuntu.com trusty-security Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://archive.ubuntu.com trusty-updates Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://archive.canonical.com trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32</code></pre>



<h3 class="wp-block-heading">Problem</h3>



<p class="wp-block-paragraph">Digitale Signaturen werden eingesetzt, um die Integrität und Authentizität einer Datei zu gewährleisten. Die Signatur ist somit der Nachweis, dass der Quellcode einer Anwendung seit dem Packen nicht mehr modifiziert wurde. Die Signatur wird mihilfe des&nbsp;<em>Privaten Schlüssels (Private Key)</em>&nbsp;erzeugt und kann mit dem&nbsp;<em>Öffentlichen Schlüssel</em>&nbsp;überprüft werden. Es fehlen also&nbsp;<em>Öffentlichen Schlüssel</em>&nbsp;in unserem&nbsp;<em>Schlüsselring (Keyring)</em>, die wir importieren müssen, um diese Fehlermeldung zu beheben.</p>



<h3 class="wp-block-heading">Lösungsstrategie</h3>



<p class="wp-block-paragraph">Importieren der Public Keys</p>



<p class="wp-block-paragraph">Wir notieren uns aus der vorherigen Ausgabe die fehlenden Schlüssel 3B4FE6ACC0B21F32 und 40976EAF437D05B5. Dann importieren wir sie über die Keyserver von Ubuntu.</p>



<pre class="wp-block-code"><code># sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5                                                              
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.ZeMCP4ClOD --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
gpg: requesting key 437D05B5 from hkp server keyserver.ubuntu.com
gpg: key 437D05B5: public key "Ubuntu Archive Automatic Signing Key &lt;ftpmaster@ubuntu.com&gt;" imported
gpg: Total number processed: 1
gpg:               imported: 1

# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.zgIABcbm74 --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
gpg: requesting key C0B21F32 from hkp server keyserver.ubuntu.com
gpg: key C0B21F32: public key "Ubuntu Archive Automatic Signing Key (2012) &lt;ftpmaster@ubuntu.com&gt;" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)</code></pre>



<p class="wp-block-paragraph">Sollte man nur einen der beiden Schlüssel importieren, wird weiterhin eine Fehlermeldung ausgegeben. Der Import beider Schlüssel ist daher erforderlich.</p>



<pre class="wp-block-code"><code># sudo apt-get update

&#91;...]

W: There is no public key available for the following key IDs:
3B4FE6ACC0B21F32</code></pre>



<p class="wp-block-paragraph">Verifizierung des Imports</p>



<p class="wp-block-paragraph">Wir überprüfen den korrekten Import der beiden Schlüssel, indem wir unsere Paketlisten und Pakete nochmals aktualisieren.</p>



<pre class="wp-block-code"><code># sudo apt-get update &amp;&amp; sudo apt-get upgrade</code></pre>



<p class="wp-block-paragraph">Wir erhalten jetzt keine Fehlermeldung mehr.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/06/fehlende-public-keys-beim-update-von-ubuntu-paketen-2/">Fehlende Public Keys beim Update von Ubuntu-Paketen</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/06/fehlende-public-keys-beim-update-von-ubuntu-paketen-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmieren mit Thrift (Praktikum)</title>
		<link>https://maximiliankrieg.de/2014/05/programmieren-mit-thrift/</link>
					<comments>https://maximiliankrieg.de/2014/05/programmieren-mit-thrift/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 15 May 2014 19:46:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[thrift]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2964</guid>

					<description><![CDATA[<p>Heute möchte ich die notwendigen Schritte beschreiben, um ein Grundgerüst mit Apache Thrift ans Laufen zu kriegen. Ich muss ehrlich gestehen, dass es mir nicht alleine gelungen ist dies zu bewerkstelligen. Einen großen Dank dafür an meinen Partner Nils. Die Umgebung Für das Praktikum setze ich eine VM mit folgender Konfiguration ein: Vorbereitung Werkzeuge und [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/05/programmieren-mit-thrift/">Programmieren mit Thrift (Praktikum)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Heute möchte ich die notwendigen Schritte beschreiben, um ein Grundgerüst mit Apache Thrift ans Laufen zu kriegen. Ich muss ehrlich gestehen, dass es mir nicht alleine gelungen ist dies zu bewerkstelligen. Einen großen Dank dafür an meinen Partner Nils.</p>



<h3 class="wp-block-heading">Die Umgebung</h3>



<p class="wp-block-paragraph">Für das Praktikum setze ich eine VM mit folgender Konfiguration ein:</p>



<ul class="wp-block-list">
<li><strong>VM-Version:</strong> Workstation 8.0</li>



<li><strong>RAM:</strong> 2 GB</li>



<li><strong>CPU:</strong> 1 Prozessor mit 2 Kernen</li>



<li><strong>HDD:</strong> 20 GB</li>



<li><strong>OS:</strong> lubuntu 14.04 x64 (<a href="http://cdimage.ubuntu.com/lubuntu/releases/14.04/release/lubuntu-14.04-desktop-amd64.iso">Link</a>)</li>
</ul>



<h3 class="wp-block-heading">Vorbereitung</h3>



<p class="wp-block-paragraph"><strong>Werkzeuge und Compiler installieren</strong></p>



<pre class="wp-block-preformatted">sudo apt-get install build-essential</pre>



<p class="wp-block-paragraph"><strong>Eclipse für C and C++ installieren</strong></p>



<pre class="wp-block-preformatted">sudo apt-get install eclipse eclipse-cdt g++</pre>



<p class="wp-block-paragraph"><strong>Anforderungen von Thrift installieren</strong></p>



<pre class="wp-block-preformatted">sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev libglib2.0-dev </pre>



<p class="wp-block-paragraph"><strong>Git installieren</strong></p>



<pre class="wp-block-preformatted">sudo apt-get install git</pre>



<p class="wp-block-paragraph"><strong>Thrift kopieren</strong></p>



<pre class="wp-block-preformatted">git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift</pre>



<h3 class="wp-block-heading">Installation</h3>



<p class="wp-block-paragraph"><strong>Wechsle das Verzeichnis</strong></p>



<pre class="wp-block-preformatted">cd thrift</pre>



<p class="wp-block-paragraph"><strong>Erzeuge die Konfigurationsskripte</strong></p>



<pre class="wp-block-preformatted">./bootstrap.sh</pre>



<p class="wp-block-paragraph"><strong>Konfiguriere Thrift</strong></p>



<pre class="wp-block-preformatted">./configure</pre>



<p class="wp-block-paragraph"><strong>Baue Thrift</strong></p>



<pre class="wp-block-preformatted">make</pre>



<p class="wp-block-paragraph"><strong>Installiere Thrift</strong></p>



<pre class="wp-block-preformatted">sudo make install</pre>



<p class="wp-block-paragraph"><strong>Kopiere libthrift.so</strong></p>



<pre class="wp-block-preformatted">sudo cp /usr/local/lib/libthrift-1.0.0-dev.so /usr/lib/</pre>



<h3 class="wp-block-heading">Das Grundgerüst</h3>



<p class="wp-block-paragraph"><strong>Erzeugen der Thrift-Datei</strong></p>



<ol class="wp-block-list">
<li>Erstelle eine Datei namens <code>VS3.thrift</code></li>



<li>Definiere darin Variablen, Konstanten, Strukturen und Dienste</li>
</ol>



<pre class="wp-block-preformatted">service VS3 {
 void ping()
}</pre>



<p class="wp-block-paragraph"><strong>Erzeugen der Sourcen</strong></p>



<pre class="wp-block-preformatted">thrift -r --gen cpp VS3.thrift</pre>



<p class="wp-block-paragraph"><strong>Wechsle das Verzeichnis</strong></p>



<pre class="wp-block-preformatted">cd gen-cpp/</pre>



<p class="wp-block-paragraph"><strong>Diese Dateien sollten nun vorhanden sein</strong></p>



<ol class="wp-block-list">
<li>VS3.cpp</li>



<li>VS3.h</li>



<li>VS3_constants.cpp</li>



<li>VS3_constants.h</li>



<li>VS3_types.cpp</li>



<li>VS3_types.h</li>



<li>VS3_server.skeleton.cpp</li>
</ol>



<p class="wp-block-paragraph"><strong>Kopieren der Serverdatei</strong></p>



<pre class="wp-block-preformatted">cp VS3_server.skeleton.cpp VS3_server.cpp</pre>



<p class="wp-block-paragraph"><strong>Erzeugen des Makefile</strong></p>



<pre class="wp-block-preformatted">GEN_SRC := VS3.cpp VS3_constants.cpp VS3_types.cpp
GEN_OBJ := $(patsubst %.cpp,%.o, $(GEN_SRC))

THRIFT_DIR := /usr/local/include/thrift
BOOST_DIR := /usr/local/include

INC := -I$(THRIFT_DIR) -I$(BOOST_DIR)

.PHONY: all clean

all: VS3_server VS3_client

%.o: %.cpp
	$(CXX) -Wall -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H $(INC) -c $&lt; -o $@

VS3_server: VS3_server.o $(GEN_OBJ)
	$(CXX) $^ -o $@ -L/usr/local/lib -lthrift 

VS3_client: VS3_client.o $(GEN_OBJ)
	$(CXX) $^ -o $@ -L/usr/local/lib -lthrift 

clean:
	$(RM) *.o VS3_server VS3_client</pre>



<p class="wp-block-paragraph"><strong>Client implementieren</strong></p>



<ol class="wp-block-list">
<li>Erstelle eine Datei namens <code>VS3_client.cpp</code></li>



<li>Implementiere die Client-Funktionen</li>
</ol>



<pre class="wp-block-preformatted">#include "VS3.h"

#include &lt;thrift/protocol/TBinaryProtocol.h&gt;
#include &lt;thrift/transport/TSocket.h&gt;
#include &lt;thrift/transport/TTransportUtils.h&gt;

using namespace std;

using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;

using boost::shared_ptr;

int main() 
{
	try
	{
		shared_ptr&lt;TSocket&gt; socket(new TSocket("localhost", 9090));
		shared_ptr&lt;TTransport&gt; transport(new  TBufferedTransport(socket));
		shared_ptr&lt;TProtocol&gt; protocol(new  TBinaryProtocol(transport));
		VS3Client client(protocol);
		transport-&gt;open();

		// Funktionen
		client.ping();

		transport-&gt;close();

		// Funktionen
		cout &lt;&lt; "Hallo Welt";
	}

	catch(TException &amp;tx) 
	{
		cout &lt;&lt; "error calling server: " &lt;&lt; tx.what() &lt;&lt; endl;
	}
		
	return 0;
}</pre>



<p class="wp-block-paragraph"><strong>Baue Client und Server</strong></p>



<pre class="wp-block-preformatted">make</pre>



<p class="wp-block-paragraph"><strong>Start Client und Server</strong></p>



<pre class="wp-block-preformatted">./VS3_server
./VS3_client
</pre>



<h3 class="wp-block-heading">Quellen</h3>



<ul class="wp-block-list">
<li>http://thrift.apache.org/download</li>



<li>http://thrift.apache.org/docs/install/ubuntu</li>



<li>http://thrift.apache.org/docs/BuildingFromSource</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/05/programmieren-mit-thrift/">Programmieren mit Thrift (Praktikum)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/05/programmieren-mit-thrift/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
