Server absichern

Hat die Installation geklappt, wird es Zeit den Server zu schützen. Mit nur wenigen Tools kannst du Deinen Server bereits gegen die wichtigsten Attacken abwehren:

  • SSL-Zertifikat let’s encrypt für apache2 (erzwingt das https)
  • ufw (als Firewall)
  • fail2ban (gegen DDoS-Attacken)
  • root-login deaktivieren

 

SSL-Zertifikat für apache2

Ein SSL-Zertifikat verschlüsselt sämtlichen Datenverkehr zwischen dem Benutzer und deiner Webseite. Der einfachste Weg für einen Debianserver geht via Certbot.

diese Webseite (IP-Adresse) ist noch nicht geschützt. Dies ist in der Regel am durchgestrichenen Schlosssymbol erkennbar. Da es sich in diesem Beispiel jedoch um einen lokalen Server handelt, ist dies nicht so relevant. Betreibst du jedoch einen vServer welcher von überall erreichbar ist, muss auf jeden Fall ein Zertifikat vorhanden sein, da gewisse Software (CMS; Cloud) sich gar nicht mehr ohne SSL-Zertifikat installieren lässt.

um https systemweit anzuwenden, ergänze die .htaccess mit:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

ufw

ufw wird per

# apt install ufw

installiert. Dannach können per Terminalbefehl Regeln hinzugefügt oder entfernt werden. Vorsicht! Die Firewall ist gnadenlos und es kann durchaus vorkommen, dass du dich selbst vom gesamten Server aussperrst, falls du z.B. vergisst, den Zugang via ssh und den dazugehörenden Port offen zu halten.

Starten von der Firewall

# ufw enable

Alle einkommenden Befehle ignorieren, alle ausgehenden erlauben

# ufw default deny incoming
# ufw default allow outgoing

Erlaube ssh auf Port 12345

# ufw allow ssh
# ufw allow 12345

Erlaube apache2 (mit https)

# ufw allow 443

Erlauf der IP 12.34.567.89 den Zugriff

# ufw allow from 12.34.567.89

Zeige aller Reglen (Beispiel)

# ufw status numbered

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 12345                      ALLOW IN    Anywhere
[ 3] 443                        ALLOW IN    Anywhere
[ 4] Anywhere                   ALLOW IN    12.34.567.89
[ 5] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 12345 (v6)                 ALLOW IN    Anywhere (v6)
[ 7] 443 (v6)                   ALLOW IN    Anywhere (v6)

lösche eine Regel mit

# ufw delete NUMMER

 

fail2ban

fail2ban gibt dir die Möglichkeit, nach ein paar missglückten Versuchen den ssh-Zugang für eine gewisse Zeit komplett zu sperren. Auch hier gilt wieder einmal Vorsicht! Es kann durchaus vorkommen, dass auch du dich unfreiweillig für ein paar Stunden selbst aussperrst.

 

root-Zugang sperren

Das direkte Login via ssh für den User root ist in Debian 11 standardmässig bereits deaktiviert. Falls nicht, rufe

nano /etc/ssh/sshd_config

auf und ändere

PermitRootLogin yes

in

PermitRootLogin no

Starte anschliessend der Service neu:

# service ssh restart

 

Portwechsel vom ssh-Server

Standardmässig lauscht unser ssh-Server auf Port 22. Um diesen Port zu wechseln, rufe:

# nano /etc/ssh/sshd_config

auf und entferne das Kommentarzeichen (#) und setze den Port neu.

Include /etc/ssh/sshd_config.d/*.conf

Port 995
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

Speichere die Datei ab und starte den ssh-Server neu.

# service ssh restart