Festplatte kopieren

Aktuelle Festplatten haben einen Selbstmonitoring (S.M.A.R.T) eingebaut. Mit den SMART-Tools kann man die Informationen abfragen.

sudo apt install smartmontools

Nach der Installtion können wir die akutellen Werte von SMART abfragen.

sudo smartctl -A /dev/sda

Meine Festplatte zeigt an, das es zu einem Fehler kommen wird. So ein Hinweis sollte ein Weckruf sein. Es wird höchste Zeit, die Festplatte zu gegen ein neueres Modell zu tauschen.

Wenn man eine Festplatte kopieren möchte, kann man natürlich dd if=/dev/sda of=/dev/sdb verwenden. Besser geht es mit dem Programm ddrescue.

sudo apt install ddrescue

Wir kopieren von der Quelle /dev/sda auf das Ziel /dev/sdb.

sudo ddrescue /dev/sda /dev/sdb

Quellen: SMART Wiki, Wiki gddrescue

Ungenutzte Pakete entfernen

Über die Zeit können sich unter Ubuntu einige überflüssige Paket ansammeln. Mit dem Programm Deborphan kann man die verweisten Bibliotheken anzeigen.

Die Installation ist mit einem Kommando erledigt.

sudo apt install deborphan

Mit dem Aufruf werden alle Paket ohne Verwendung angezeigt.

deborphan

Es gibt auch ein Programm zu Löschung dieser Pakete.

sudo orphaner

Kernel Module entfernen und RAM sparen

Mit einer kleinen Änderung kann man „etwas“ Speicher einsparen. Wer einen Raspberry Pi mit dem Ubuntu Image betreibt, kann ein paar Megabyte RAM sparen. Im normalen Betrieb von Ubuntu spiel diese Änderung keine Rolle.

In der Datei initramfs.conf wird einen Wert geändert.

sudo vim /etc/initramfs-tools/initramfs.conf

Den Defaultwert wird von MODULES=most in MODULES=dep geändert.

Anschließend wird ein Update des initramfs-Image erstellt.

Wir können es für den aktuellen Kernel erstellen.

sudo update-initramfs -u

Oder für alle vorhandenen Kernel ein neues Image erstellen.

sudo update-initramfs -uk 'all'

Nach einem Neustart werden nur alle notwendigen Kernel Module geladen.

Ubuntu Mainline Kernel 5.0.4 installation

Für Ubuntu gibt es die aktuellen Kernel als Package. Wir wollen den aktuellen Kernel 5.0.4 auf einem Xenial Xerus (Ubuntu 16.04) mit 64 Bit CPU installieren. Im Verzeichnis von Ubuntu finden wir weitere Plattformen (AMD64, i386, armhf, arm64, usw).

Für die Installion brauchen wir die Pakete für den Kernel (linux-image-unsigned) und die Modulle (linux-modules).

Mit diesem Script installieren wir Kernel 5.0.4 auf einem Ubuntu mit 64Bit CPU.

#!/bin/sh
URL=https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0.4/
KERNEL=linux-image-unsigned-5.0.4-050004-generic_5.0.4-050004.201903231634_amd64.deb
MODULES=linux-modules-5.0.4-050004-generic_5.0.4-050004.201903231634_amd64.deb
 
wget -P /tmp $URL/$MODULES
wget -P /tmp $URL/$KERNEL
 
sudo dpkg -i /tmp/$MODULES
sudo dpkg -i /tmp/$KERNEL

Nach dem Neustart wird der Kernel 5.0.4 verwendet, obwohl Ubuntu 16.04 (LTS) nur den Kernel 4.15 (linux-generic) enthält. Achtung, der Mainline Kernel 5.0.4 erhält keine Sicherheitspatches. Die Portierung von Sicherheitspatches in Xenial erfolgt nur im offiziellen Kernel mit Long Term Support (LTS).

Quelle: Kernel Wiki, Mainline Kernel, Changelog Kernel 5.0

SSH mit Zwei Faktor Authentifizierung

Wir möchten unsere SSH Zugang mit einer Zwei Faktor Authentifizierung absichern.

Zur Erzeugung des zweiten Faktor verwenden wir ein Smartphone mit der App FreeOTP oder Google Authenticator. Diese Apps generieren ein Token, welcher nur für eine bestimmte Zeit gültig ist. Damit wir der SSH Zugang zusätzlich abgesichert.

Zuerst müssen wir das SSH Modul für Google Authenticator installieren.

sudo apt install libpam-google-authenticator

Jetzt müssen wir den Server mit der App verbinden. Dazu rufen wir die Anwendung als Benutzer auf.

google-authenticator

Den QS Code können wir mit dem Smartphone in der App Google Authenticator einlesen. Die Emergency Codes sollten wir uns an einem sicheren Ort speichern.

Die Frage können wir mit Yes, Yes, Yes, No, Yes beantworten.

Do you want authentication tokens to be time-based (y/n) y
Do you want me to update your "/home/user/.google_authenticator" file (y/n)? y
 
The app provides you with a secret key, verification code, and recovery codes. Keep these in a secure, safe location. The recovery codes are the only way to access your server if you lose your mobile phone.
 
Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y
By default, tokens are good for 30 seconds. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of +-1min (window size of 3) to about +-4min (window size of 17 acceptable tokens). 
Do you want to do so? (y/n) n
 
If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

Das PAM Modul muss noch konfiguriert werden.

sudo vim /etc/pam.d/sshd

Ende der Datei fügen wir eine Zeile hinzu.

auth required pam_google_authenticator.so

In den Einstellungen vom SSH-Server müssen ggf. noch Einstellunge geändert werden.

sudo vim /etc/ssh/sshd_config

Prüfen Sie ob diese Werde gesetzt sind.

ChallengeResponseAuthentication yes
PasswordAuthentication no

Nach dem Neustart vom SSH-Server sollte die Zwei Faktor Authentifizierung arbeiten.

sudo systemctl restart sshd.service

Apache2 status Error www-browser not found

Man kann den Status eines Apache Server per Kommandozeile abfragen.

apachectl status

Dabei erhalten Sie jedoch diese Fehlermeldung:

/usr/sbin/apachectl: 113: /usr/sbin/apachectl: www-browser: not found
'www-browser -dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars

Um den Fehler zu beheben, müssen wir noch ein Text-Browser installieren.

sudo apt install w3m

Systemd DNS Resolver

Wenn die Namensauflösung mit Systemd nicht richtig funktioniert, dann muss man vielleicht einen Resolver manuelle einrichten.

Zuerst legen wird das Verzeichnis an.

sudo mkdir /etc/systemd/resolved.conf.d/

Jetzt hinterlegen wird den DNS Resolver.

sudo vim /etc/systemd/resolved.conf.d/dns_servers.conf

[Resolve]
DNS=1.1.1.1 8.8.8.8
DNSSEC=true
DNSOverTLS=opportunistic

Nach einem Neustart von Systemd-resolver sollte die Namensauflösung wieder funktionieren.

sudo systemctl restart systemd-resolved

Jetzt kann der DNSSEC Test beginnen.

systemd-resolve sigok.verteiltesysteme.net

Für weitere Abfragen kann man das Tool „dig“ installieren.

sudo apt-get install dnsutils

Mit diesem Tool ist die Ausgabe der Signaturen von Localhost (127.0.0.1) von Port 53 (DNS) möglich.

dig -p 53 @127.0.0.1 com. SOA +dnssec

Ein DNSSEC Beispiel für die Abfrage vom Cloudflare DNS (1.1.1.1).

dig @1.1.1.1 whois.arin.net SOA +dnssec

Spracheinstellung von Ubuntu und Debian auf Deutsch umstellen

Wir wollen die Sprache von Englisch auf Deutsch in Ubuntu oder Debian ändern.

Dazu installieren wird die Sprachen.

sudo apt install locales

Wir können uns die aktuellen Einstellung ansehen.

locale -a

Sollte die Sprache „Deutsch“ mit UTF-8 nicht nicht erzeugt sein, so sollten wir es jetzt vornehmen.

sudo locale-gen de_DE.UTF-8

Die Einstellungen für die Sprache können wir mit einem grafischen Tool einfach ändern.

sudo dpkg-reconfigure locales

Nach der Umstellung sollten nur Einträg welche ausgewählt wurden in der Datei enthalten sein.

cat /etc/locale.gen

de_DE.UTF-8 UTF-8

Für unsere Umgebung müssen wir ggf. noch die Einstellungen hinterlegen.

sudo vim /etc/default/locale

LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_MESSAGES=de_DE.UTF-8

sudo vim /etc/environment

LC_ALL=de_DE.UTF-8
LANG=de_DE.UTF-8

Nach dem Update sollten alle Einstellung wie Datum und Währung und Sprache auf Deutsch umgestellt sein.

sudo update-locale

Sollten zu viele Sprachen installiert sein, sollte die Einträge im Verzeichnis /var/lib/locales/supported.d/local/ überprüfen.

Überflüssige Sprachen können entfernt werden und im Anschluss neu generiert werden.

sudo locale-gen

Diese Anleitung funktioniert mit Debian und Ubuntu.

PHP7 Erweiterung und Treiber für MongoDB installieren

Für den Zugriff von PHP7.2 auf eine MongoDB 4.2 Datenbank braucht man einen Client Treiber. Die Installation unter Ubuntu Server 18.04 LTE möchte ich hier beschreiben.

1. Pakete installieren

sudo apt install php-pear php7.2-dev

2. Treiber MongoDB installieren

sudo pecl install mongodb

Quelle:Github

Handbuch

3. Konfigurationsdatei erstellen

sudo sh -c 'echo "extension=mongodb.so" > /etc/php/7.2/mods-available/mongodb.ini'

4. Konfiguration aktivieren

sudo phpenmod mongodb

Weiterlesen