Wer sich von den verlockenden Angeboten der großen Internet-Konzerne unabhängig machen möchte, schließt einfach eigene Rechner an das Internet an und betreibt verschiedene Dienste auf der Grundlage freier Software selbst. Im Rechenzetrum unseres Vertrauens läuft Debian auf zwei gebraucht gekauften Dell PowerEdge R210 Rechnern. Es reicht aber auch, virtuelle Rechner bei einem Anbieter wie Linode zu mieten.
Das Betriebssystem installieren wir, wenn möglich, auf einer SSD. Die Nutzdaten werden auf herkömmlichen Festplatten gespeichert. Beim Anlegen der Partitionen verwenden wir die gesamte erste Festplatte und verzichten auf Verschlüsselung. Bei der Softwareauswahl wählen wir nur den SSH-Server aus und bringen die Installation zu Ende.
Sobald das frisch installierte System läuft,
melden wir uns per ssh
als normaler Benutzer
mit dem bei der Installation vergebenen Passwort an
und schwingen uns zum Administrator auf.
sudo su -
Dann installieren wir erst einmal diverse Hilfsprogramme.
apt install joe tree psmisc iotop curl fail2ban
Administratoren bekommen einen passwortfreien Zugang, indem wir deren öffentliche Schlüssel hinterlegen.
ssh-rsa AAAAM5bH8j0U4k5kiY9GdK5lKI61/PgyqJrsoUD………ImwPxgfks49VI== User …
Authentifizierung per Passwort deaktivieren wir komplett. So gewährt ausschließlich der Besitz eines Schlüssels den Zugriff auf die Kommandozeile.
/etc/ssh/sshd_configAuthenticationMethods publickey AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server
Ein schönes Motto of the Day hilft dabei, den Überblick zu behalten, wo man gerade angemeldet ist.
/etc/motd·▄▄▄▄ ▄• ▄▌▄▄▄ • ▌ ▄ ·. .▄▄ · ▄▄▄▄▄▄▄▄ ▄▄▄· ▐ ▄ ▄▄ • ██▪ ██ █▪██▌▀▄ █··██ ▐███▪▐█ ▀. •██ ▀▄ █·▐█ ▀█ •█▌▐█▐█ ▀ ▪ ▐█· ▐█▌█▌▐█▌▐▀▀▄ ▐█ ▌▐▌▐█·▄▀▀▀█▄ ▐█.▪▐▀▀▄ ▄█▀▀█ ▐█▐▐▌▄█ ▀█▄ ██. ██ ▐█▄█▌▐█•█▌██ ██▌▐█▌▐█▄▪▐█ ▐█▌·▐█•█▌▐█ ▪▐▌██▐█▌▐█▄▪▐█ ▀▀▀▀▀• ▀▀▀ .▀ ▀▀▀ █▪▀▀▀ ▀▀▀▀ ▀▀▀ .▀ ▀ ▀ ▀ ▀▀ █▪·▀▀▀▀ Dell PowerEdge R210 II 9NFF5Z1 3.3 GHz Intel Core i3-2120 16 GB DDR3-1333 UDIMM 256 GB Samsung SSD 830 4000 GB HGST Deskstar NAS
Zur Konfiguration der Schnittstellen ersetzen wir Debians
ifupdown
-Mechanismus durch
systemd-networkd
.
Die Schnittstelle bekommt eine statische Adresse
nach den Vorgaben des Anbieters.
/etc/systemd/network/eno1.network[Match] Name=eno1 [Network] Address=2001:1b18:a1::69/64 Gateway=2001:1b18:a1::1 Address=81.92.164.69/26 Gateway=81.92.164.65
Die Uhrzeit wird mit dem NTP-Server des Anbieters synchronisiert.
/etc/systemd/timesyncd.conf[Time] NTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org …
Der qualifizierte Hostname (FQDN) muss aufgelöst werden.
/etc/hosts127.0.0.1 localhost 127.0.1.1 durmstrang.illusioni.de durmstrang
Nun aktivieren wir die neuen Nertzwerkdienste und entfernen die nicht mehr benötigten Pakete.
systemctl enable systemd-{networkd,resolved,timesyncd} apt remove ifupdown isc-dhcp-{client,common} rsyslog logrotate anacron cron
Die Nutzdaten werden wir auf herkömlichen Festplatten speichern. Falls mehrere Festplatten installiert sind, bilden wir einen RAID-Verbund mit dem Btrfs-Dateisystem. Die Metadaten werden gespiegelt und Nutzdaten gleichmäßig verteilt.
mkfs.btrfs --metadata raid1 --data raid0 /dev/sdb /dev/sdc …
Darin legen wir die benötigten Verzeichnisse an.
mount /dev/sdb /srv mkdir /srv/{mail,www,gitea,restic}
Schließlich binden wir diese in der Dateisystemtabelle ein.
/etc/fstab# What Where Type Options Dump Pass /dev/sda1 /boot/efi vfat umask=0077 0 0 /dev/sda2 / ext4 noatime 0 0 /dev/sda3 none swap sw 0 0 /dev/sdb /var/lib/postgres btrfs noatime,subvol=@postgres 0 0 /dev/sdb /srv/mail btrfs noatime,subvol=@mail 0 0 /dev/sdb /srv/www btrfs noatime,subvol=@www 0 0
Für den Schlüsselaustausch via TLS erzeugen wir auf jedem Server einen Satz Diffie-Hellmann-Parameter:
openssl dhparam -out /etc/ssl/dh1024.pem 1024 openssl dhparam -out /etc/ssl/dh2048.pem 2048 openssl dhparam -out /etc/ssl/dh4096.pem 4096
Danach kopieren wir Schlüssel und Zertifikat von der
Zertifizierungsstelle
auf den Server und schränken den Lesezugriff auf Mitglieder
der Gruppe ssl-cert
ein.
chmod g+r /etc/ssl/$HOSTNAME.{key,crt} chgrp ssl-cert /etc/ssl/$HOSTNAME.{key,crt}
Ein Server braucht keinen Bereitschaftsmodus.
/etc/systemd/sleep.conf[Sleep] AllowSuspend=no AllowHibernation=no AllowSuspendThenHibernate=no AllowHybridSleep=no
Zum Abschluss starten wir das System einmal durch.
reboot
Nun schrauben wir den Server ins Rack und erledigen die restliche Installation bequem von zu Hause aus.