make more commits :-)
This commit is contained in:
BIN
projects/sbx/.DS_Store
vendored
Normal file
BIN
projects/sbx/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -21,6 +21,7 @@
|
||||
| srv-pve-01.wollmann.lan | | 10.11.12.50 | Wollmann - New Hypervisor | true |
|
||||
| iLo | | 10.11.12.178 | Wollmann - pve iLo | true |
|
||||
| pxe | BC:24:11:99:2D:8A | 10.11.12.69 | netbbot_xyz | true |
|
||||
| pxe | BC:24:11:99:2D:8A | 10.11.12.69 | netbbot_xyz | true |
|
||||
| metabase | | 10.11.12.99 | test for discopharma | false |
|
||||
| pve-max | | 10.11.12.100 | test pve instance for maxi | false |
|
||||
| sbx-sw-lab-00 | B0:7C:51:30:64:4E | 10.11.12.220 | central switch | true |
|
||||
|
||||
17
projects/sbx/defaults/sbx-linux-defaults.md
Normal file
17
projects/sbx/defaults/sbx-linux-defaults.md
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
## Base
|
||||
|
||||
### OS
|
||||
|
||||
- Base OS: Debian 13 (Trixie) -> very stable but older packages
|
||||
- Base OS: Ubuntu 2?.? LTS -> when the newest packages and drivers are needed
|
||||
|
||||
- Other OS's: Depends on the situation
|
||||
|
||||
### Hostname
|
||||
|
||||
|
||||
- hostname
|
||||
- IP
|
||||
- ninja installation
|
||||
-
|
||||
115
projects/sbx/manuals/Win_Server_VM_on_PVE.md
Normal file
115
projects/sbx/manuals/Win_Server_VM_on_PVE.md
Normal file
@@ -0,0 +1,115 @@
|
||||
Im folgenden wird die standard Methode zur Installation einer Windows (2022) VM auf einem Proxmox (Virtual Environment) - welches wir im Folgenden PVE bezeichnen - beschrieben.
|
||||
|
||||
## ToC (Table of Contents)
|
||||
|
||||
1. Win Server und VirtIO Driver ISO Download (auf nextcloud hinterlegt)
|
||||
2. VM "HW" Konfig
|
||||
3. OS Installation - Treiber Nach Installation - Passe Statische IP an
|
||||
4. (Optional) Installiere DC/AD
|
||||
|
||||
## Quellenverzeichnis
|
||||
|
||||
- [Windows Server 2022 Download](https://www.microsoft.com/en-us/evalcenter/download-windows-server-2022)
|
||||
- [Windows VirtIO Drivers](https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers)
|
||||
|
||||
## 1. Win Server und VirtIO Driver ISO Download
|
||||
|
||||
Diese Anleitung nutzt Windows Server 2022 fuer die Installation Unter dem [Link](https://www.microsoft.com/en-us/evalcenter/download-windows-server-2022) kann die gewuenschte Windows Version heruntergeladen werden.
|
||||
Zusaetzlich muss eine ISO mit den VirtIO Treibern fuer die Windows Installation heruntergeladen werden, damit wir dann Netzwerktreiber, Guest Agent, etc. auf dem Windows Server installieren koennen. Informationen zu der ISO kann in Proxmox' offizielen [Dokumenation](https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers) nachgelesen werden.
|
||||
|
||||
Wenn der Download abgeschlossen ist, muessen die ISO Dateien auf dem PVE Host hinterlegt werden, siehe naechstes Bild.
|
||||
Klicken Sie links auf das Storage, welches Ihre ISO Dateien beinhaltet. Gehen Sie zu 'ISO Images' und laden Sie die zuvor runtergeladenen ISOs zu PVE hoch:
|
||||
|
||||

|
||||
|
||||
## 2. VM Konfig
|
||||
|
||||
Im naechsten Schritt setzen wir die VM in PVE auf, auf welcher wir den Windwos Server installieren werden.
|
||||
|
||||
1. Klicken Sie auf "Create VM", gezeigt im rechten oberen Rand der Web-UI:
|
||||
|
||||

|
||||
|
||||
2. Geben Sie der VM eine gewuenschte 'VM ID' - diese muss eindeutig sein - und einen Namen:
|
||||

|
||||
|
||||
3. Waehlen Sie Im 'OS' Fenster als ISO Image Ihre runtergeladenen Windows Server ISO aus, siehe naechstes Bild. Waehlen Sie als Guest OS Typ "Microsoft Windows" aus und die entpsprechende Version, hier '11/2022/2025'. Zusaetzlich koennen Sie rechts anhaken die VirtIO Treiber direkt einzubinden; waehlen Sie hier auch die eben runtergeladenen VirtIO ISO aus, siehe Bild
|
||||
|
||||

|
||||
|
||||
4. Setzen Sie die Konfig wie im naechsten Bild gezeigt:
|
||||
|
||||

|
||||
|
||||
5. disks
|
||||
|
||||

|
||||
|
||||
6. cpu
|
||||
|
||||

|
||||
|
||||
7. memory
|
||||
|
||||

|
||||
|
||||
8. network
|
||||
|
||||

|
||||
|
||||
9. Confirm
|
||||
|
||||

|
||||
|
||||
|
||||
## 3. OS Installation
|
||||
|
||||
1. Im naechsten Schritt starten wir die VM; da dem System noch die Treiber fehlen, muss beim ersten Boot Prozess manuell die ISO im boot Menu ausgesucht werden. Schalten Sie die Maschine aus und erneut an. Siehe Bild, welches das gewohnte anzeigt. Klicken sie auf Installieren:
|
||||
|
||||

|
||||
|
||||
2. Waehlen Sie Ihre gewuenschtes Windows Server Betriebsystem aus. Wir waehlen hier: 'Windows Server 2022 Standard Evaluation (Desktop Experience)'. Und akzeptieren Sie die Terms of Services im naechsten Schritt.
|
||||
|
||||

|
||||
|
||||
3. Im naechsten Schritt nehmen wir die Partitionierung vor; hier muessen wir zunaechst entsprechende VirtIO Treiber installieren. Waehlen Sie hier die 'Custom' Methode aus:
|
||||
|
||||

|
||||
|
||||
Klicken Sie im naechsten Schritt auf 'Load driver':
|
||||
|
||||

|
||||
|
||||
Waehlen Sie im naechsten Schritt die Treiber aus, welche Ihrer OS entspricht. In userem Fall sind es die fuer Version 2022:
|
||||
|
||||

|
||||
|
||||
|
||||
Im Anschluss sollte Ihnen die Storage Drive angezeigt werden:
|
||||
|
||||

|
||||
|
||||
Waehlen Sie die Drive aus und starten Sie die Installation.
|
||||
|
||||
4. Nach Abschluss der Installation sollte der Server neustarten und in Ihren neuen Windows Server booten. Sie werden aufgefordert ein neues Passwort fuer den lokalen Admin User zu erstellen.
|
||||
|
||||

|
||||
|
||||
5. Nun Sie koennen Sie sich anmelden:
|
||||
|
||||

|
||||
|
||||
6. Treiber Installation. Melden Sie sich an Ihrem neuen Server an oeffnen Sie den Datei Explorer und oeffnen Sie den Ordner zu den noch anhaengenden VirtIO Driver ISO:
|
||||
|
||||

|
||||
|
||||
Installieren Sie mit einem Doppelklick die 'virtio-win-gt-x64' Treiber.
|
||||
Im Anschluss sollte der Server eine Netzwerkverbindung haben. Starten Sie den Server danach neu.
|
||||
|
||||
7. Wir installieren noch den `qemu-guest-agent`, indem Sie 'guest-agent' im explorer aus der VirtIO ISO, anklicken, und die 'qemu-ga-x86-64.exe' installieren:
|
||||
|
||||

|
||||
|
||||
Im Anschluss sollten die IP Adressen des Servers in der PVE Web-UI angezeigt werden:
|
||||
|
||||

|
||||
BIN
projects/sbx/student/.DS_Store
vendored
Normal file
BIN
projects/sbx/student/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
projects/sbx/student/exercises/.DS_Store
vendored
Normal file
BIN
projects/sbx/student/exercises/.DS_Store
vendored
Normal file
Binary file not shown.
137
projects/sbx/student/exercises/sheet00/exercise-00.md
Normal file
137
projects/sbx/student/exercises/sheet00/exercise-00.md
Normal file
@@ -0,0 +1,137 @@
|
||||
---
|
||||
author: Petar Cubela
|
||||
date: Thu Sep 18 2025
|
||||
email: mail@petarcubela.de
|
||||
title: Aufgabenblatt 00 - ssh Security und fail2ban (v1.1)
|
||||
geometry: margin=2cm
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
# Aufgabenblatt 00
|
||||
|
||||
In diesem Blatt lernst du wichtige Grundlagen, um die Sicherheit eines Linux Servers zu gewaehrleisten.
|
||||
|
||||
`ssh` (_secure shell_) ist eines der wichtigsten Tools die ein Linux Administrator beherrschen sollte.
|
||||
Dieses erlaubt es uns, eine Shell zu einem remote Linux (im allgemeinen Unix) System zu oeffnen,
|
||||
um dann administrative Taetigkeiten am Server durch zu fuehren.
|
||||
Die Authentifizierung passiert hier in der Regel mit Username und Passwort.
|
||||
Es gibt aber Situationen in denen es nicht ratsam ist, Usernamen und Passwort fuer die Authentifizierung zu nutzen.
|
||||
Zum Besipiel, wenn der `ssh` Port, 22, oeffentlich zuegaenglich ist, und damit jeder den _OpenSSH_ Server des Linux Servers erreichen koennte.
|
||||
Ein Passwort koennte durch eine brute-force Attacke erraten werden oder durch andere Wege komprimittiert werden.
|
||||
Aus dem Grunde gibt es `ssh` Key Paare, welche es uns ermoeglichen uns ohne Passwort am Server zu authentifizieren.
|
||||
|
||||
Einer der keys ist hier ein **privater** Schluessel, den niemand haben sollte und der immer sicher aufbewahrt werden sollte.
|
||||
Der zweite key ist **public** und darf somit von anderen gesehen/gelesen werden. Der public Key wird am Linux Server
|
||||
in der Datei `/home/$USER/.ssh/authorized_keys` abgelegt, waehrend der private Key am eigenen Rechner hinterlegt wird,
|
||||
ebenfalls im Ordner `/home/$USER/.ssh/`. Beim Versuch sich mittels `ssh` am Ziel Server anzumelden, gleicht der Server seinen public
|
||||
Key mit dem private Key des `ssh`-Clients ab und wenn die beiden zu einander passen, wird Zugang gewaehrt.
|
||||
|
||||
Wir lernen, wie wir ssh key Paare erzeugen und am Ziel Server zu hinterlegen, welche es uns erlauben, uns ohne Passwort an einem OpenSSH server zu authentifizieren.
|
||||
Dies wird in Zukunft auch sehr nuetzlich sein, um Automatisierungstools gegen einen oder _mehrere_ Server laufen zu lassen.
|
||||
|
||||
Zusaetzlich lernen wir `fail2ban`, welches ein einfaches _intrusion detection system(IPS)_ ist, welches in der Lage ist Ports zu Diensten auf dem Server zu ueberwachen
|
||||
und bei missbraeulichem Verhalten IP Addressen zu blocken. Zum Beispiel kann eine IP Adresse fuer eine Stunde geblockt werden, wenn der entsprechende `ssh`-Client drei mal das Passwort falsch eingibt.
|
||||
|
||||
Um Datein zu bearbeiten benutze einen beliebigen Text Editor, wie zum Beispiel `nano` oder `vim`. Diese sind in der Regel auf den meisten Linux Betriebssystemen vorinstalliert.
|
||||
|
||||
## Aufgabe 1 - ssh security and config
|
||||
|
||||
**a.** Erstelle ein `ssh` Key Paar auf deinem lokalen Rechner, lege den public key auf deinem remote Linux Server ab
|
||||
und melde dich ohne Passwort mit `ssh` am Server an. `ssh USER@EXAMPLE.COM`.
|
||||
|
||||
Tools, welche gentuzt werden sollen:
|
||||
|
||||
- `ssh`
|
||||
- `ssh-keygen` (wenn dieser Befehl benutzt wird, setze keien Passwort fuer das Key Paar, sonst musst ihr Dieses jedes mal eingeben, wenn die Keys genutzt werden)
|
||||
- `ssh-copy-id`
|
||||
|
||||
**b.** Passe die Konfiguration des _ssh daemons_ `sshd`, unter dem Pfad `/etc/ssh/sshd_config`, so an, dass
|
||||
|
||||
- eine `root` Anmeldung nicht moeglich ist. (Der `root` User hat uneingeschraenkte Berechtigungen auf dem Server. Dieser sollte ueber `ssh` nie erreichbar sein.)
|
||||
- die Passwort Authentifizierung nicht moeglich ist,
|
||||
- und deiner Meinung nach die Sicherheit des `ssh`-Zugangs weiter erhoeht wird.
|
||||
|
||||
Nachdem der `ssh`-Dienst angepasst wurde, muss Dieser neugestartet werden, damit die Aenderugen geladen werden:
|
||||
|
||||
```bash
|
||||
$ sudo systemctl restart ssh.service
|
||||
$ sudo systemctl status ssh.service
|
||||
```
|
||||
|
||||
## Aufgabe 2 - fail2ban to protect ssh
|
||||
|
||||
Installiere `fail2ban` und konfiguriere es so, dass
|
||||
|
||||
- `ssh` ein aktives `jail` ist
|
||||
- bei 3 maliger Passwortfalscheingabe, die IP Adresse des Clients fuer 2 Stunden gebannt wird
|
||||
|
||||
Die Konfigurationsdateien von `fail2ban` sind im Pfad `/etc/fail2ban/` hinterlegt.
|
||||
|
||||
**Anleitung:**
|
||||
|
||||
Gehe wie folgt vor:
|
||||
|
||||
1. Installation:
|
||||
|
||||
```bash
|
||||
sudo apt install fail2ban
|
||||
```
|
||||
|
||||
2. Pruefe den Status des `fail2ban`-Dienstes mittels `systemd`:
|
||||
|
||||
```bash
|
||||
$ systemctl status fail2ban.service
|
||||
```
|
||||
|
||||
3. Lese den Inhalt einer default Konfigurations:
|
||||
|
||||
```bash
|
||||
$ cd /etc/fail2ban/
|
||||
$ head -20 jail.conf
|
||||
```
|
||||
|
||||
4. Erstelle wie empfohlen eine _local_ jail Konfigurationsdatei:
|
||||
|
||||
```bash
|
||||
$ cp jail.conf jail.local
|
||||
```
|
||||
|
||||
5. Passe die `jail.local` Datei an, so dass die Vorgabe umegestzt ist.
|
||||
|
||||
```bash
|
||||
$ sudo nano/vim jail.local
|
||||
```
|
||||
|
||||
Recherchiere gegebenfalls im Internet, um dies umzusetzen. (Tipp: `ssh` speichert seine logs nicht mehr standardmaessig im Pfad `/var/log/`,
|
||||
sondern nutzt `systemd-journald`)
|
||||
|
||||
6. Teste deine Konfig von einem auf dem `pve.lab.softbox.net` verfuegbaren Linux Host.
|
||||
|
||||
|
||||
## Aufgabe 3 - nginx web server
|
||||
|
||||
Wir installieren hier einen der am meisten genutztne Web server auf der Welt [`nginx`](https://nginx.org/) und machen damit den ersten Schritt zu einer web page.
|
||||
|
||||
Installiere `nginx`:
|
||||
|
||||
```bash
|
||||
$ sudo apt install nginx
|
||||
```
|
||||
|
||||
Pruefe den `nginx`-Dienst via `systemctl`:
|
||||
|
||||
```bash
|
||||
$ sudo systemctl status nginx
|
||||
```
|
||||
|
||||
Besuche die Seite [http://student1.lab.softbox.net](http://student1.lab.softbox.net "http://student1.lab.softbox.net/"), welche dir die `nginx` welcome page zeigen sollte.
|
||||
Die Konfigurationsdateien von `nginx` unter dem Pfad `/etc/nginx/` zu finden. Die `html` (+ `css` + etc.) sind in der Regel unter dem Pfad `/var/www/` zu finden,
|
||||
wobei Dieser in `nginx`-Konfigurationsdateien beliebig waehlbar ist.
|
||||
|
||||
Pruefe auf welcher IP Adresse und welchem Port `nginx` _lauscht_ (im englischen: _listen_
|
||||
|
||||
```bash
|
||||
$ sudo ss -tulpn | grep nginx
|
||||
```
|
||||
|
||||
**Zusatz:** Nutze `man ss`, um dich mit dem Befehl `ss` und den gewaehlten Optionen auseinanderzusetzen. Dies ist ein sehr praktischer Befehl, der sehr haeufig genutzt wird.
|
||||
BIN
projects/sbx/student/exercises/sheet00/exercise-00.pdf
Normal file
BIN
projects/sbx/student/exercises/sheet00/exercise-00.pdf
Normal file
Binary file not shown.
74
projects/sbx/student/exercises/sheet01/sheet01.md
Normal file
74
projects/sbx/student/exercises/sheet01/sheet01.md
Normal file
@@ -0,0 +1,74 @@
|
||||
---
|
||||
author: Petar Cubela
|
||||
date: Sep 21, 2025
|
||||
email: mail@petarcubela.de
|
||||
title: Aufgabenblatt 01 - base commands & user/group management (v0.1)
|
||||
geometry: margin=2cm
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
# Aufgabenblatt 00 - base commands & user/group management
|
||||
|
||||
In diesem Blatt lernst du grudnlegende Basis Befehle fuer die Verwaltung und 'Bedienung' eines Linux Servers ohne Bildschirmumgebung.
|
||||
|
||||
Zusaetzlich lernst du wie User, Gruppen, Besitzrechte und Berechtigungen ersetllt und vergeben werden.
|
||||
|
||||
Zuletzt wir das gelernte, um selbststaendig einen git Server aufzusetzen; das hoert sich moeglicherweise komplizierter an als es ist,
|
||||
aber kann mit dem zuvor gelernten schon umgesetzt werden.
|
||||
|
||||
Um Datein zu bearbeiten benutze einen beliebigen Text Editor, wie zum Beispiel `nano` oder `vim`. Diese sind in der Regel auf den meisten Linux Betriebssystemen vorinstalliert.
|
||||
|
||||
- Schreibe kurze Beschreibung zu den Grundlagen des User managements (user, groups, owner and permissions)
|
||||
- erzaehle ueber die wichtigkeit dieser wenigen Befehle, welche uns ermoeglichen komplexe Dinge durchzufuehren
|
||||
|
||||
## Aufgabe 1 - Basisbefehl
|
||||
|
||||
- Lerne diese, sodass im sie im Schlaf bekannt sind.
|
||||
|
||||
1. cd
|
||||
1. ls
|
||||
1. mv
|
||||
1. cp
|
||||
1. rm
|
||||
1. mkdir
|
||||
1. rmdir
|
||||
1. echo
|
||||
1. cat
|
||||
1. grep
|
||||
1. touch
|
||||
1. find
|
||||
1. fdisk
|
||||
1. ls***
|
||||
1. cut
|
||||
1. sort
|
||||
1. uniq
|
||||
|
||||
## Aufgabe 2 - Create, modify and delete users/groups
|
||||
|
||||
### Notizen
|
||||
|
||||
- show the usage of the commands and its options:
|
||||
- `useradd`
|
||||
- `usermod`
|
||||
- `userdel`
|
||||
- `groupadd`
|
||||
- `groupmod`
|
||||
- `groupdel`
|
||||
- teach linux ownership and permissions via `chown`,`grpown`, `chmod`
|
||||
|
||||
|
||||
## Aufgabe 3 - git server - user/group management
|
||||
|
||||
Installiere git und konfiguriere einen git server. Erstelle einen dedizierten
|
||||
User und eine entsprechende Gruppe `git`, mit dem Pfad zum _home_ folder, `/var/git/`.
|
||||
|
||||
Fuege den eigenen User zur Gruppe `git` hinzu, sodass dieser in der Lage ist,
|
||||
Repositories dort abzulegen und zu verwalten. Entsprechend muessen die User/Group
|
||||
Ownership und Permissions von `git`'s home folder angepasst werden.
|
||||
|
||||
### Notizen
|
||||
|
||||
- potentiel sollte auch die `umask` des Ordners angepasst werden
|
||||
|
||||
|
||||
|
||||
38
projects/sbx/student/exercises/sheet02/sheet02.md
Normal file
38
projects/sbx/student/exercises/sheet02/sheet02.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
author: Petar Cubela
|
||||
date: Sep 21, 2025
|
||||
email: mail@petarcubela.de
|
||||
title: Aufgabenblatt 02 - nextcloud installation and git usage (v0.1)
|
||||
geometry: margin=2cm
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
# Aufgabenblatt 02 - nextcloud installation and git repo
|
||||
|
||||
In diesem Blatt lernst du
|
||||
|
||||
|
||||
|
||||
Um Datein zu bearbeiten benutze einen beliebigen Text Editor, wie zum Beispiel `nano` oder `vim`. Diese sind in der Regel auf den meisten Linux Betriebssystemen vorinstalliert.
|
||||
|
||||
## Aufgabe 1 - Nextcloud Installation
|
||||
|
||||
**a.** Install dependencies
|
||||
|
||||
**b.** Prepare database - mariadb
|
||||
|
||||
**c.** Setup web server - nginx/apache
|
||||
|
||||
**d.** Install nextcloud source files
|
||||
|
||||
|
||||
## Aufgabe 2 - git basics
|
||||
|
||||
1. `git init`
|
||||
1. `git add`
|
||||
1. `git commit`
|
||||
1. `git remote`
|
||||
1. `git push`
|
||||
1. `git pull`
|
||||
|
||||
Write simple python 'Hello, world!' script which gets pushed to local git server from last sheet.
|
||||
60
projects/sbx/student/exercises/template/template-00.md
Normal file
60
projects/sbx/student/exercises/template/template-00.md
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
author: Petar Cubela
|
||||
date: Month 00, 2025
|
||||
email: mail@petarcubela.de
|
||||
title: Aufgabenblatt 00 - Titel (v1.0)
|
||||
geometry: margin=2cm
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
# Aufgabenblatt 00
|
||||
|
||||
In diesem Blatt lernst du wichtige Grundlagen, um die Sicherheit eines Linux Servers zu gewaehrleisten.
|
||||
|
||||
`ssh` (_secure shell_) ist eines der wichtigsten Tools die ein Linux Administrator beherrschen sollte.
|
||||
Dieses erlaubt es uns, eine Shell zu einem remote Linux (im allgemeinen Unix) System zu oeffnen,
|
||||
um dann administrative Taetigkeiten am Server durch zu fuehren.
|
||||
Die Authentifizierung passiert hier in der Regel mit Username und Passwort.
|
||||
Es gibt aber Situationen in denen es nicht ratsam ist, Usernamen und Passwort fuer die Authentifizierung zu nutzen.
|
||||
Zum Besipiel, wenn der `ssh` Port, 22, oeffentlich zuegaenglich ist, und damit jeder den _OpenSSH_ Server des Linux Servers erreichen koennte.
|
||||
Ein Passwort koennte durch eine brute-force Attacke erraten werden oder durch andere Wege komprimittiert werden.
|
||||
Aus dem Grunde gibt es `ssh` Key Paare, welche es uns ermoeglichen uns ohne Passwort am Server zu authentifizieren.
|
||||
|
||||
Einer der keys ist hier ein **privater** Schluessel, den niemand haben sollte und der immer sicher aufbewahrt werden sollte.
|
||||
Der zweite key ist **public** und darf somit von anderen gesehen/gelesen werden. Der public Key wird am Linux Server
|
||||
in der Datei `/home/$USER/.ssh/authorized_keys` abgelegt, waehrend der private Key am eigenen Rechner hinterlegt wird,
|
||||
ebenfalls im Ordner `/home/$USER/.ssh/`. Beim Versuch sich mittels `ssh` am Ziel Server anzumelden, gleicht der Server seinen public
|
||||
Key mit dem private Key des `ssh`-Clients ab und wenn die beiden zu einander passen, wird Zugang gewaehrt.
|
||||
|
||||
Wir lernen, wie wir ssh key Paare erzeugen und am Ziel Server zu hinterlegen, welche es uns erlauben, uns ohne Passwort an einem OpenSSH server zu authentifizieren.
|
||||
Dies wird in Zukunft auch sehr nuetzlich sein, um Automatisierungstools gegen einen oder _mehrere_ Server laufen zu lassen.
|
||||
|
||||
Zusaetzlich lernen wir `fail2ban`, welches ein einfaches _intrusion detection system(IPS)_ ist, welches in der Lage ist Ports zu Diensten auf dem Server zu ueberwachen
|
||||
und bei missbraeulichem Verhalten IP Addressen zu blocken. Zum Beispiel kann eine IP Adresse fuer eine Stunde geblockt werden, wenn der entsprechende `ssh`-Client drei mal das Passwort falsch eingibt.
|
||||
|
||||
Um Datein zu bearbeiten benutze einen beliebigen Text Editor, wie zum Beispiel `nano` oder `vim`. Diese sind in der Regel auf den meisten Linux Betriebssystemen vorinstalliert.
|
||||
|
||||
## Aufgabe 1 - ssh security and config
|
||||
|
||||
**a.** Erstelle ein `ssh` Key Paar auf deinem lokalen Rechner, lege den public key auf deinem remote Linux Server ab
|
||||
und melde dich ohne Passwort mit `ssh` am Server an. `ssh USER@EXAMPLE.COM`.
|
||||
|
||||
Tools, welche gentuzt werden sollen:
|
||||
|
||||
- `ssh`
|
||||
- `ssh-keygen` (wenn dieser Befehl benutzt wird, setze keien Passwort fuer das Key Paar, sonst musst ihr Dieses jedes mal eingeben, wenn die Keys genutzt werden)
|
||||
- `ssh-copy-id`
|
||||
|
||||
**b.** Passe die Konfiguration des _ssh daemons_ `sshd`, unter dem Pfad `/etc/ssh/sshd_config`, so an, dass
|
||||
|
||||
- eine `root` Anmeldung nicht moeglich ist. (Der `root` User hat uneingeschraenkte Berechtigungen auf dem Server. Dieser sollte ueber `ssh` nie erreichbar sein.)
|
||||
- die Passwort Authentifizierung nicht moeglich ist,
|
||||
- und deiner Meinung nach die Sicherheit des `ssh`-Zugangs weiter erhoeht wird.
|
||||
|
||||
Nachdem der `ssh`-Dienst angepasst wurde, muss Dieser neugestartet werden, damit die Aenderugen geladen werden:
|
||||
|
||||
```bash
|
||||
$ sudo systemctl restart ssh.service
|
||||
$ sudo systemctl status ssh.service
|
||||
```
|
||||
*Zusatz:** Nutze `man ss`, um dich mit dem Befehl `ss` und den gewaehlten Optionen auseinanderzusetzen. Dies ist ein sehr praktischer Befehl, der sehr haeufig genutzt wird.
|
||||
43
projects/sbx/student/student_linux_tasks.md
Normal file
43
projects/sbx/student/student_linux_tasks.md
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
## Tasks
|
||||
|
||||
Separate by different levels of difficulty. In the beginning only easier concepts should be presented.
|
||||
Write guide which can be followed in order to learn and see concepts such as an manual to install a nextcloud instance.
|
||||
In the process the student would learn how a mariadb database is setup. Just following some simple commands.
|
||||
|
||||
### Level 0
|
||||
|
||||
- [ ] base commands - 20 most useful commands: cd, ls, mkdir, mv, rm , cp, touch, find, grep, cat, ssh
|
||||
- [x] ssh key-exchange authentication
|
||||
- [x] ssh hardening - not root login, no password hardening
|
||||
- [x] nginx
|
||||
- [ ] user and group management
|
||||
|
||||
### Level 1
|
||||
|
||||
- [x] fail2ban-server
|
||||
|
||||
### Level 2
|
||||
|
||||
- [ ] git local and remote repo as github and internal gitea
|
||||
|
||||
### Level 3
|
||||
|
||||
- [ ] git server
|
||||
- [ ] setup mysql/mariadb database
|
||||
- [ ] nextcloud setup
|
||||
|
||||
### Level 4
|
||||
|
||||
- [ ] nmap
|
||||
- [ ] ipcalc
|
||||
- [ ] ufw
|
||||
|
||||
### Level 5
|
||||
|
||||
- [ ] simple mail server Ports: 25 (smtp), 587 (smpts), 143 (imap)
|
||||
- [ ] tcpdump -> catch clear text passwd with tcpdump
|
||||
- [ ] pki for mutual tls trust
|
||||
- [ ] build each their own firewall/router with openbsd
|
||||
- [ ] build together an firewall which will be the sbx_lab firewall
|
||||
|
||||
Reference in New Issue
Block a user