1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Der Öffentliche Webserver

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.

Debian installieren

Auf dem Webserver installieren wir Debian per Startmedium. Das Betriebssystem landet, 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 verzeichten 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

Secure Shell einrichten

Administratoren bekommen einen passwortfreien Zugang, indem wir deren öffentliche Schlüssel hinterlegen.

/root/.ssh/authorized_keys
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_config
AuthenticationMethods 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

Netzwerk konfigurieren

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/hosts
127.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

Dateisystem anlegen

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 /srv btrfs noatime 0 0

Schlafmodus deaktivieren

Der Webserver 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 können wir den Rechner ins Rack schrauben und die restliche Installation von zu Hause aus erledigen.

Literatur

  1. Cullum Smith: A Guide to Self-Hosting Your Online Services, 2016
  2. Justin Ellingwood: How To Protect SSH with Fail2Ban, Digital Ocean, 2014
  3. Hardenize: Web security check