# Spicker Modul 300 LB 2
# 1. - Verbindung von vmLP1 (Linux-PC) zu anderen Clients via SSH
## 1.1 - Verbindung zu vmWP1 (Windows-PC)

> Auf `vmLP1`

```shell
ssh user@192.168.210.20
```

Hierbei ist `user` der Benutzername auf dem Windows-PC. Falls SSH auf dem Windows-PC nicht aktiviert ist, muss dies zunächst eingerichtet werden.


## 1.2 - Verbindung zu vmLF1 (Linux-Router)

> Auf `vmLP1`

```shell
ssh user@192.168.220.1
```

Hierbei ist `user` der Benutzername auf dem Linux-Router.


## 1.3 - Verbindung zu vmLS1 (Linux-Server in der DMZ)

> Auf `vmLP1`

```shell
ssh user@192.168.220.11
```

Hierbei ist `user` der Benutzername auf dem Linux-Server.


---


# 2. - 1. Teilauftrag: DNS-Server einrichten
## 2.1 - Schritte zur Installation und Konfiguration des DNS-Servers auf vmLS1
### 2.1.1 - Installation von Bind9
* Auf vmLS1 einloggen
* Bind9 installieren:

```shell
sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y
```

### 2.1.2 - Konfiguration der Forward-Zone
* Erstellen der Zonendatei für `winter.camp`:

```shell
sudo nano /etc/bind/db.winter.camp
```

Inhalt der Datei:

```conf
$TTL    604800
@       IN      SOA     ns.winter.camp. root.winter.camp. (
                        2024010101         ; Serial
                        604800             ; Refresh
                        86400              ; Retry
                        2419200            ; Expire
                        604800 )           ; Negative Cache TTL
;
@       IN      NS      ns.winter.camp.
@       IN      A       192.168.220.11
ns      IN      A       192.168.220.11
www     IN      A       192.168.220.11
intern  IN      A       192.168.220.11
``` 

### 2.1.3 - Konfiguration der Reverse-Zone
* Erstellen der Reverse-Zonendatei:

```shell
sudo nano /etc/bind/db.192.168.220
```

Inhalt der Datei:

```conf
$TTL    604800
@       IN      SOA     ns.winter.camp. root.winter.camp. (
                        2024010101         ; Serial
                        604800             ; Refresh
                        86400              ; Retry
                        2419200            ; Expire
                        604800 )           ; Negative Cache TTL
;
@       IN      NS      ns.winter.camp.
11      IN      PTR     ns.winter.camp.
11      IN      PTR     www.winter.camp.
11      IN      PTR     intern.winter.camp.
```

### 2.1.4 - Eintrag in der named.conf.local
* Bearbeiten der Datei `named.conf.local`:

```shell
sudo nano /etc/bind/named.conf.local
```

Hinzufügen der Zonendeklarationen:

```conf
zone "winter.camp" {
    type master;
    file "/etc/bind/db.winter.camp";
};

zone "220.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.220";
};
```

### 2.1.5 - DNS-Server neu starten

```shell
sudo systemctl restart bind9
```

### 2.1.6 - DNS-Client-Konfiguration auf vmLP1 und vmLS1
* Datei `/etc/resolv.conf` bearbeiten:

```shell
sudo nano /etc/resolv.conf
```

Inhalt:

```conf
nameserver 192.168.220.11
search winter.camp
```

### 2.1.7 - Prüfung der Konfiguration
* Testen der DNS-Auflösung:

```shell
dig @192.168.220.11 www.winter.camp
```

8. Aktivieren des querylogs
* Folgenden Befehl ausführen

```shell
sudo rndc querylog
```


---


# 3. - 2. Teilauftrag: Webserver einrichten
## 3.1 - Schritte zur Installation und Konfiguration des Webservers
### 3.1.1 - Installation des HTTP-Dienstes (Apache2)
* Auf vmLS1 einloggen
* Apache2 installieren:

```shell
sudo apt update
sudo apt install apache2 -y
```

### 3.1.2 - Partitionierung und Formatierung der Festplatte
* Angeschlossene Festplatten mit `lsblk` auflisten
* Partitionieren und formatieren

```shell
sudo fdisk /dev/sdb
```

* Mit n eine neue Partition erstellen.
* Mit w Änderungen schreiben.

```shell
sudo mkfs.ext4 /dev/sdb1
```

* Mountverzeichnis erstellen und mounten

```shell
sudo mkdir /www
sudo mount /dev/sdb1 /www
```

### 3.1.2.1 - Permanentes Mounten mit `fsab`

```shell
sudo nano /etc/fstab
``` 

Entrag hinzufügen

```conf
/dev/sdb1 /www ext4 defaults 0 0
```

#### 3.1.2.2 - (Alternativ) Mounten über uuid der disk:
* Falls der device name (sdb) bei einem neustart ändert, wird nicht die richtige Partition gemounted
* Mit dem Befehl `blkid` werden Infos über alle Festplatten angezeigt

Beispiel:

```conf
/dev/sdb: UUID="ca758ee2-5a71-479b-b100-21870d7fcd1a" BLOCK_SIZE="4096" TYPE="ext4"
```

* In der `/etc/fstab` Datei muss der Eintrag geändert werden:

```conf
UUID=ca758ee2-5a71-479b-b100-21870d7fcd1a /www ext4 defaults 0 0
```

### 3.1.3 - Konfiguration der Websites
* Verzeichnisse erstellen

```shell
sudo mkdir /www/www.winter.camp
sudo mkdir /www/ku1.winter.camp
sudo mkdir /www/ku2.winter.camp
```

* Benutzer und Gruppen erstellen:

```shell
sudo groupadd wwwadmin
sudo useradd -g wwwadmin -s /bin/false operatingweb
sudo usermod -a -G wwwadmin www-data
```

* Eigentümer und Berechtigungen setzen

```shell
sudo chown -R operatingweb:wwwadmin /www/www.winter.camp
sudo chmod 770 /www/www.winter.camp
```

### 3.1.4 - Website-Konfigurationsdatei erstellen
* Erstellen der Konfigurationsdatei

```shell
sudo nano /etc/apache2/sites-available/www.winter.camp.conf
```

Inhalt:

```conf
<VirtualHost *:80>
    ServerAdmin webmaster@winter.camp
    ServerName winter.camp
    ServerAlias www.winter.camp
    DocumentRoot /www/www.winter.camp
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@winter.camp
    ServerName ku1.winter.camp
    ServerAlias www.ku1.winter.camp
    DocumentRoot /www/ku1.winter.camp
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@winter.camp
    ServerName ku2.winter.camp
    ServerAlias www.ku2.winter.camp
    DocumentRoot /www/ku2.winter.camp
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```

### 3.1.5 - Aktivieren der Konfiguration und Neustart des Webservers
* Sites Aktivieren

```shell
sudo a2ensite www.winter.camp.conf
sudo systemctl restart apache2
```

### 3.1.6 - Testen des Webservers
* Über Browser oder mit `wget`:

```shell
wget http://winter.camp
wget http://www.winter.camp
wget http://ku1.winter.camp
wget http://www.ku1.winter.camp
wget http://ku2.winter.camp
wget http://www.ku2.winter.camp
```
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9