StatCounter erhebt die Daten anhand von über 16,3 Milliarden Page Views pro Monat und eruierte daraus wie viele Linuxuser im weltweiten Netz unterwegs sind. Microsofts Windows-Betriebssystem erzielte im März 2023 einen Marktanteil an den weltweiten Page Views von rund 69,4 Prozent. Apples macOS kam im selben Monat auf einen Wert von rund 17,2 Prozent, die Linux-Betriebssysteme erzielten 2,85 Prozent. Die Daten wurden anhand der Internetnutzung mit Desktop- und Notebook-PCs (ohne Smartphones und Tablets) erhoben. [Quelle]
Steam auf Debian
Steam lässt sich in Debian installieren. Sind die Grafiktreiber installiert, steht dem Spielvergnügen fast nichts mehr im Weg. Warum fast? – SteamOS + Linux unterstütz nur einen sehr kleinen Teil der gesamten Steamspiele.
# dpkg --add-architecture i386 # apt update # apt install steam
Store > Categories
filtere die Spiele nach SteamOS + Linux. Jetzt werden dir die kompatiblem Spiele angezeigt. Sind die Grafiktreiber installiert, lässt sich unter Steam kompatible Spiele sogar in 4k spielen.
Let’s encrypt (certbot) um eine Domain erweitern
Let’s encrypt bietet kostenlose Zertifikate zur Verschlüsselung an. In diesem Beispiel erweitern wir unser bestehendes Zertifikat um die Domain newexample.com. Das Vorgehen für eine Subdomain ist dasselbe. Mittels:
# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Found the following certs: Certificate Name: example.com Serial Number: 1234567890acb1234567890abc1234567890 Key Type: ECDSA Domains: example.com test.example.com example2.com example3.com Expiry Date: 2023-07-28 17:09:45+00:00 (VALID: 87 days) Certificate Path: /etc/letsencrypt/live/nyx7.ch/fullchain.pem Private Key Path: /etc/letsencrypt/live/nyx7.ch/privkey.pem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
wird uns der Zertifikatsname mit allen zugehörenden Domains angezeigt. Möchten wir nun das bestehende Zertikikat um eine Domain oder Subdomain (newexample.com) erweitern, müssen wir das Zertifikat example.com für alle Domains und Subdomains erweitern.
Die Erweiterung des Zertifikates per expand:
# certbot --expand -d example.com,test.example.com,example2.com,example3.com,newexample.com
# certbot --expand -d example.com,test.example.com,example2.com,example3.com,newexample.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Renewing an existing certificate for example.com and 4 more domains Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem Key is saved at: /etc/letsencrypt/live/example.com/privkey.pem This certificate expires on 2023-07-30. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for example.com to /etc/apache2/sites-enabled/000-default-le-ssl.conf Successfully deployed certificate for test.example.com to /etc/apache2/sites-enabled/000-default-le-ssl.conf Successfully deployed certificate for example2.com to /etc/apache2/sites-enabled/000-default-le-ssl.conf Successfully deployed certificate for example3.com to /etc/apache2/sites-enabled/000-default-le-ssl.conf We were unable to find a vhost with a ServerName or Address of newexample.com. Which virtual host would you like to choose? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: 000-default-le-ssl.conf | Multiple Names | HTTPS | Enabled 2: 000-default.conf | | | Enabled - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1 Successfully deployed certificate for newexample.com to /etc/apache2/sites-enabled/000-default-le-ssl.conf Your existing certificate has been successfully renewed, and the new certificate has been installed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Um jedoch ein neues Zertifikat für die Domain zu bekommen, tippen wir:
# certbot certonly -d newexample.com
ein. Mehrere Domain und Subdomain werden durch ein Komma getrennt.
Upgrade von Debian
Debian ist bekannt für seine enorme Stabilität. Einmal installiert, steht diesem Betriebssystem nichts mehr im Weg und es funktioniert. Stabilität geht jedoch meist auf Kosten von Aktualität. Die neuste Version von Typo3 (12.3.0) läuft nur unter PHP 8.2. Auf einem Debian 11 kann Typo3 somit nicht installiert werden. Entweder weicht man auf die Version Typo3 Version 11 aus, oder installiert gleich ein Debian 12 auf dem Server. Hier wird beschrieben, wie ein Debian 11 auf ein Debian 12 angehoben werden kann.
Übersicht (Stand April 2023)
DEBIAN 12 (testing/bookworm)
– Apache/2.4.56 (Debian)
– Server-Version: 10.11.2-MariaDB-1 – Debian 12
– PHP-Version: 8.2.4
DEBIAN 11 (bullseye)
– Apache/2.4.56 (Debian)
– Server-Version: 10.5.18-MariaDB-0+deb11u1 – Debian 11
– PHP-Version: 7.4.33
Bearbeite die /etc/apt/sources.list und ersetzte alle bullseye
mit bookworm
.
Ab Debian 12 ist die Paketquelle non-free
bereits in den Repos enthalten. Ergänze die Paketquelle ggf. mit non-free-firmware
:
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware
Hinweis: einige Anbieter von Cloud-Server betreiben unter /etc/apt/sources.list.d
noch eigene Paketdateien. Hier muss die Anpassung auch erfolgen, ansonst kann es zu einem unschönen Versionmix kommen!
Editiere somit die /etc/apt/sources.list und aktuallisiere das gesamte System mittels apt:
# nano /etc/apt/sources.list # apt update # apt upgrade # apt dist-upgrade
Konfigurationsdateien
Normalerweise ist es ratsam, die lokal installierte Version einer Konfigurationsdatei zu behalten. sshd_config regelt unter anderem den eigenen ssh-Port oder das Verbieten eines Klartextpasswortes. Sind eigene Anpassungen in der sshd_conf gemacht worden, sollte die lokal installierte Version beibehalten werden. Alternativ installiert man hier die Version vom Paketbetreuer und ändert die Werte dann manuell nach. Auch unter der apache2.conf sind eigene Anpassungen keine Seltenheit.
Konfigurationsdatei »/etc/apache2/apache2.conf« ==> Geändert (von Ihnen oder von einem Skript) seit der Installation. ==> Paketverteiler hat eine aktualisierte Version herausgegeben. Wie möchten Sie vorgehen? Ihre Wahlmöglichkeiten sind: Y oder I : Die Version des Paket-Betreuers installieren N oder O : Die momentan installierte Version beibehalten D : Die Unterschiede zwischen den Versionen anzeigen Z : Eine Shell starten, um die Situation zu begutachten Der Standardweg ist das Beibehalten der momentanen Version. *** apache2.conf (Y/I/N/O/D/Z) [Vorgabe=N] ?
root-Passwort zurücksetzen
Mittels dem Bootparameter init=/bin/bash
lässt sich das root-Passwort zurücksetzen, falls dies vergessen wurde. Das funktioniert jedoch nur, wenn das System nicht verschlüsselt ist und der grub-Bootloader nicht abgesichert ist. Physischer Zugang ist ebenfalls Voraussetzung. Im Bootmenü muss «e» für edit gedrückt werden:
Hinweis
In diesem Modus ist die Tastatur auf das US-Keyboard eingestellt.
Wähle hier ein sehr einfaches Passwort wie passwd 123456
und ändere dies nach dem reboot ab. Damit verhinderst du Sonderzeichen, welche nach dem reboot auf anderen Tasten liegen.
Folgende Zeichen findest Du auf loadkeys de_CH-latin1
Tastatur.
- auf dem ?
/ auf dem -
_ auf SHIFT + ?
, auf dem ,
= auf dem ` (rechts vom ?)
In der gestarteten Bash kann nun das root-Passwort zurückgesetzt werden:
init=/bin/bash # mount -o remount,rw / # passwd # mount -n -o remount,ro / # reboot -f
WordPress-Login mittels fail2ban schützen
fail2ban schützt dein WordPress-Login nach mehreren, fehlgeschlagen Versuchen und sperrt die entsprechende IP-Adresse aus. Installiere das Paket fail2ban:
# apt install fail2ban
Das nötige Konfigurationsfile findet man unter:
/etc/fail2ban/jail.conf
Erstelle eine Kopie vom Originalfile:
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
die verhindert, dass bei einem Update die eigenen Regeln überschrieben werden.
Den aktuellen Status von fail2ban rufst du per systemctl auf:
$ systemctl status fail2ban
● fail2ban.service - Fail2Ban Service Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-11-26 10:14:43 CET; 1 weeks 1 days ago Docs: man:fail2ban(1) Main PID: 655 (fail2ban-server) Tasks: 5 (limit: 4678) Memory: 21.2M CPU: 6min 15.308s CGroup: /system.slice/fail2ban.service └─655 /usr/bin/python3 /usr/bin/fail2ban-server -xf start Warning: some journal files were not opened due to insufficient permissions.
1. Erstelle nun einen Filter unter
# nano /etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^<HOST> .* "POST .*wp-login.php
^<HOST> .* "POST .*xmlrpc.php
ignoreregex =
2. Anschliessend erstellen oder ergänzen wir noch die entsprechende jail-Datei unter:
# nano /etc/fail2ban/jail.local
[wordpress]
enabled = true
port = http,https
filter = wordpress
action = iptables-multiport[name=wordpress, port="http,https", protocol=tcp]
logpath = /var/log/apache2*/access*log
maxretry = 3
findtime = 60m
3. Starte fail2ban neu:
# /etc/init.d/fail2ban restart
Mittels fail2ban-client -i kann der Status vom jail wordpress abgefragt werden. Hier z. B. wurde die IP 12.34.567.89 nach mehreren, fehlgeschlagen Versuchen gesperrt.
# fail2ban-client -i
fail2ban> status wordpress Status for the jail: wordpress |- Filter | |- Currently failed: 9 | |- Total failed: 12 | `- File list: /var/log/apache2/access.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 12.34.567.89
Falls du dich versehentlich selbst aus WordPress ausgesperrt hast, kann die IP wieder entsperrt werden.
fail2ban> set wordpress unbanip 12.34.567.89
Bootparameter GRUB / Debian
Bootoptionen oder Bootparameter können bei Debian direkt manuell eingegeben werden. Falls der aktuelle Kernel beim Booten stehen bleibt, können wir versuchen, mit verschiedenen Bootoptionen dies zu verhindern. Hier ein Beispiel mittels acpi=off:
Um die Einstellungen permanent zu übernehmen, editiere die Datei grub:
# nano /etc/default/grub
die Zeile dazu lautet: GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi=off"
aktuallisiere anschliessend den Bootloader mit:
# update-grub
Klartextpasswort verbieten
Nachdem ein ssh-key generiert wurde und die Anmeldung geklappt hat, können wir noch einen Schritt weitergehen und verbieten die Anmeldung mittels Passwort. Öffne die sshd-Konfigurationsdatei:
# nano /etc/ssh/sshd_config
und kommentiere die Passwort-Authentifizierung aus und setze den Wert auf Nein:
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
Vorsicht: Damit kannst Du dich vom gesamten System aussperren. Mache dies nur, wenn Du sicher bist, was du hier genau tust!
Hinweis
es kann vorkommen, dass dies nicht auf Anhin klappt. Dann beginnen wir mit der Fehlersuche:
# ls -la /etc/ssh/sshd_config.d/*.conf # sshd -T | grep -iE 'KbdInteractiveAuthentication|password|usepam'
der erste Befehl kann u.a. ausgeben:
# ls -la /etc/ssh/sshd_config.d/*.conf
-rw------- 1 root root 27 13. Jun 09:58 /etc/ssh/sshd_config.d/50-cloud-init.conf
der zweite Befehl kann u.a. ausgeben:
# sshd -T | grep -iE 'KbdInteractiveAuthentication|password|usepam'
usepam yes
passwordauthentication yes
kbdinteractiveauthentication no
permitemptypasswords no
Bedeutet: /etc/ssh/sshd_config.d/50-cloud-init.conf übersteuert unseren Befehl in sshd_config. Ein:
nano /etc/ssh/sshd_config.d/50-cloud-init.conf
mit dem Eintrag:
PasswordAuthentication no
bringt hier Abhilfe.
einen externen Server einbinden
sshfs lässt zu, einen entfernten Server in Debian einzubinden. Dieser Server wird als normales Laufwerk in Debian angezeigt und kann auch als solches verwendet werden. Dazu benötigen wir lediglich einen Debian-Server in der Minimalinstallation. Port 22 ist der einzige Port, der geöffnet werden muss. Falls der Server zusätzlich unter Windows 11 verfügbar sein soll, ist die Installation eines Samba-Servers notwendig.
Installiere nun auf der Workstation (nicht auf dem Server) das Paket sshfs:
# apt install sshfs
Auf dem Server, welcher Du nun einbinden möchtest, erstellst Du unter /home/benutzer einen Ordner share. Dasselbe gilt für Deine Workstation:
$ mkdir share
Das war’s bereits. Eingehängt wird der entfernte Server mittels sshfs und dem Zielpfad auf deinem Debiansystem.
$ sshfs benutzer@12.345.678.90:/home/benutzer/share /home/benutzer/share
Dabei gilt:
benutzer = Benutzername auf dem entfernten Server.
benutzer = Benutzername deines aktuellen Systems.
12.345.678.90 = IP-Adresse vom Server.
Hinweis
Das Einhängen vom Server niemals mit root-Rechten ausführen. Es ist ausreichend, einen normalen Benutzer zu erstellen und diesen Benutzer zu verwenden.
# adduser BENUTZER
# adduser share Lege Benutzer »share« an ... Lege neue Gruppe »share« (1001) an ... Lege neuen Benutzer »share« (1001) mit Gruppe »share« an ... Erstelle Home-Verzeichnis »/home/share« ... Kopiere Dateien aus »/etc/skel« ... Geben Sie ein neues Passwort ein: Geben Sie das neue Passwort erneut ein: passwd: Passwort erfolgreich geändert Benutzerinformationen für share werden geändert. Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert Vollständiger Name []: Server_share Zimmernummer []: Telefon geschäftlich []: Telefon privat []: Sonstiges []: Sind die Informationen korrekt? [J/n] J root@debian:~#
Midnight Commander (Dateimanager)
Der Midnight Commander gehört zu den «nice to have» Paketen auf einem Debianserver. Installiere ihn mittels:
# apt install mc
Der Midnight Commander erleichtert das Navigieren und Editieren der Dateien enorm. Während hier z.B. links die Ordnerstruktur ersichtlich ist, wird der Dateiinhalt rechts ausgegeben. Für mich zählt der Midnight Commander zu den nützlichsten Server-Tools überhaupt: