# Server Sicherheit erhöhen

<p class="callout info">Um die Sicherheit auf einem Server zu erhöhen sollten ein paar Vorkehrungen getroffen werden.</p>

**Youtube Viedos**

[Wichtige erste Schritte auf einem Server](https://www.youtube.com/watch?v=Irau2-w8ABE&list=PLNmsVeXQZj7orIal3z8bq8HlHxnN-CtXr&index=3)

<span style="color: rgb(34, 34, 34); font-size: 2.8275em; font-weight: 400;">SSH Zugang anpassen</span>

Den standard-mäßigen Zugang als root-User auf Linux deaktivieren. Durch die Deaktivierung wird schon mal die erste Hürde eines Hackers aufgebaut, dass er nicht weiß, wie der Admin-User heißt.

**Neuen User anlegen, der die Admin Rolle übernehmen soll** Wir arbeiten als root user

`<strong>adduser BENUTZERNAME</strong>`

Passwort vergeben und Daten eintragen wenn gewünscht

**Neuen User der Gruppe sudo hinzufügen**

`usermod -aG sudo BENUTZERNAME`

**Home-Verzeichnis Rechte setzen (Client und Server)**

`<span class="enlighter-text">:~$ sudo chmod </span><span class="enlighter-n1">755</span><span class="enlighter-text"> /home/</span><span class="enlighter-g1"><</span><span class="enlighter-text">Benutzer</span><span class="enlighter-g1">></span>`

**Schlüsselpaar auf dem Client erstellen**  
Ich habe mich für einen 2048 Bit langen RSA-Schlüssel entschieden. Ihr könnt die folgenden Eingaben mit Enter bestätigen. Die Eingabe einer Passphrase für den Key ist empfohlen, doch für unser Vorhaben nicht praktikabel.

`<span class="enlighter-text">:~$ </span><span class="enlighter-m0">ssh-keygen</span>`

**Public Key vom Client auf den Server transferieren**  
Bei diesem Schritt ist die Eingabe des Passworts ein letztes Mal notwendig, um den Key auf den Server zu transferieren.

`<span class="enlighter-text">:~$ </span><span class="enlighter-m0">ssh-copy-id</span><span class="enlighter-text"> <span class="enlighter-g1"><</span>Benutzer<span class="enlighter-g1">></span>@<span class="enlighter-n0">192.168</span>.<span class="enlighter-n0">0.130</span></span>`

**Public Key vom Server aus vom Client holen**

die id\_rsa.pub datei per scp auf den Server kopieren und mit   
`cat id_rsa.pub >> /home/hermann/.ssh/authorizied_keys` anhängen

<p class="callout info">oder</p>

Der Key kann auch manuell auf den Server übertragen werden indem man auf dem Server im Homeverzeichnis des Benutzers mit dem man sich verbinden will unter /home/benutzer/.ssh/authorizised\_keys den text aus der id\_rsa.pub Datei rein kopiert.

Wurde die Verbindung erfolgreich hergestellt, ist in der Datei /home/&lt;Benutzer&gt;/.ssh/authorized\_keys auf dem Server der Public-Key vom Client erfolgreich eingetragen. Prüfen könnt ihr das wie folgt:

`<span class="enlighter-text">:~$ cat /home/</span><span class="enlighter-g1"><</span><span class="enlighter-text">Benutzer</span><span class="enlighter-g1">></span><span class="enlighter-text">/.ssh/authorized_keys</span>`

**SSH-Key Verbindung testen – Client zu Server**  
So könnt ihr testen, ob die Einrichtung erfolgreich abgeschlossen wurde – die Passworteingabe ist ab jetzt nicht mehr erforderlich.

`<span class="enlighter-text">:~$ ssh </span><span class="enlighter-g1"><</span><span class="enlighter-text">Benutzer</span><span class="enlighter-g1">></span><span class="enlighter-text">@</span><span class="enlighter-n0">192.168</span><span class="enlighter-text">.</span><span class="enlighter-n0">0.130</span>`

Hat man die Konfiguration abgeschlossen und der SSH Zugriff mit Key funktioniert, so ist die Deaktivierung des Anmeldeverfahrens mit Passwort möglich. Dazu einfach diese Zeile in der systemweiten Konfiguration ändern.

<div class="page-content" id="bkmrk-%3A%7E%24-sudo-nano-%2Fetc%2Fs"><div class="page-content"><div dir="auto"><div class="entry-content" id="bkmrk-%3A%7E%24-sudo-nano-%2Fetc%2Fs-1"><div class="entry-content"><div class="enlighter-default enlighter-v-inline enlighter-t-enlighter ">  
</div><div class="enlighter-default enlighter-v-inline enlighter-t-enlighter ">`<span class="enlighter"><span class="enlighter-text">:~$ sudo nano /etc/ssh/ssh_config</span></span>`</div></div></div></div></div></div>**SSH-Config anpassen**

```
# Datei befindet sich /etc/ssh/sshd_config

PermitRootLogin no
```

```
PasswordAuthentication no
```

**Authorized\_Key kopieren**

```
# Erst einen Ordner für den Key anlegen 
mkdir /home/BENUTZERNAME/.ssh

# der Authorized Key befindet sich unter /root/.ssh
cp /root/.ssh/authorized_key /home/BENUTZERNAME/.ssh
```

**SSH Neustarten**

`sudo systemctl restart sshd`

### Firewall

Installieren

`apt install ufw`

```
# Applikationen anzeigen 
ufw app list

# Alles blockieren 
ufw default deny incoming 

# SSH erlauben 
ufw allow 22/tcp

# Firewall aktivieren
ufw enable 

# Firewall Status anzeigen 
ufw status

# Port für eine IP-Ardesse frei geben
sudo ufw allow from 192.168.1.100 to any port 80

# Ping verbieten
sudo ufw deny proto icmp
```

## Systemcheck durchführen

```
git clone https://github.com/CISOfy/lynis

cd lynis

sudo chown -R 0:0 *

sudo ./lynis audit system
```

Die Warnungen mit 'System-analyze security' kann man dabei ignorieren, denn dabei geht es nur um optionale Sandbox-Funktionen von Systemd.

## Logwatch: Über Angriffe Informiert

```
sudo apt install logwatch

# Starten
sudo logwatch
```