diff --git a/exerices/sheet00/exercise-00.md b/exercises/sheet00/exercise-00.md similarity index 60% rename from exerices/sheet00/exercise-00.md rename to exercises/sheet00/exercise-00.md index de75d28..06b910d 100644 --- a/exerices/sheet00/exercise-00.md +++ b/exercises/sheet00/exercise-00.md @@ -11,38 +11,38 @@ output: pdf_document 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. +`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. +um dann administrative Taetigkeiten am Server durchzufuehren. 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. +Es gibt aber Situationen, in denen es nicht ratsam ist, Usernamen und Passwort fuer die Authentifizierung zu nutzen. +Zum Beispiel, wenn der `ssh` Port, 22, oeffentlich zugaenglich 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 kompromittiert 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. +Key mit dem private Key des `ssh`-Clients ab und wenn die beiden zueinander 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. +Wir lernen, wie wir ssh key Paare erzeugen und am Ziel Server 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. +Zusaetzlich lernen wir `fail2ban`, welches ein einfaches _intrusion prevention system_ (IPS) ist, welches in der Lage ist Ports zu Diensten auf dem Server zu ueberwachen +und bei missbraeuchlichem Verhalten IP Adressen zu blocken. Zum Beispiel kann eine IP Adresse fuer eine Stunde geblockt werden, wenn der entsprechende `ssh`-Client dreimal 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. +Um Dateien 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: +Tools, welche genutzt 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-keygen` (wenn dieser Befehl benutzt wird, setze kein Passwort fuer das Key Paar, sonst musst du 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 @@ -51,7 +51,7 @@ Tools, welche gentuzt werden sollen: - 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: +Nachdem der `ssh`-Dienst angepasst wurde, muss dieser neu gestartet werden, damit die Aenderungen geladen werden: ```bash $ sudo systemctl restart ssh.service @@ -63,7 +63,7 @@ $ sudo systemctl status ssh.service 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 +- bei dreimaliger Passwortfalscheingabe, die IP Adresse des Clients fuer 2 Stunden gebannt wird Die Konfigurationsdateien von `fail2ban` sind im Pfad `/etc/fail2ban/` hinterlegt. @@ -83,7 +83,7 @@ sudo apt install fail2ban $ systemctl status fail2ban.service ``` -3. Lese den Inhalt einer default Konfigurations: +3. Lies den Inhalt der default Konfiguration: ```bash $ cd /etc/fail2ban/ @@ -96,13 +96,13 @@ $ head -20 jail.conf $ cp jail.conf jail.local ``` -5. Passe die `jail.local` Datei an, so dass die Vorgabe umegestzt ist. +5. Passe die `jail.local` Datei an, so dass die Vorgabe umgesetzt 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/`, +Recherchiere gegebenenfalls 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. @@ -110,7 +110,7 @@ sondern nutzt `systemd-journald`) ## 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. +Wir installieren hier einen der am meisten genutzten Web server auf der Welt [`nginx`](https://nginx.org/) und machen damit den ersten Schritt zu einer web page. Installiere `nginx`: @@ -125,13 +125,13 @@ $ 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. +Die Konfigurationsdateien von `nginx` sind 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_ +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. +***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. diff --git a/exerices/sheet00/exercise-00.pdf b/exercises/sheet00/exercise-00.pdf similarity index 100% rename from exerices/sheet00/exercise-00.pdf rename to exercises/sheet00/exercise-00.pdf diff --git a/exerices/sheet01/sheet01.md b/exercises/sheet01/sheet01.md similarity index 60% rename from exerices/sheet01/sheet01.md rename to exercises/sheet01/sheet01.md index 4c752f8..325a7d9 100644 --- a/exerices/sheet01/sheet01.md +++ b/exercises/sheet01/sheet01.md @@ -9,21 +9,21 @@ output: pdf_document # Aufgabenblatt 01 - base commands & user/group management -In diesem Blatt lernst du grudnlegende Basis Befehle fuer die Verwaltung und 'Bedienung' eines Linux Servers ohne Bildschirmumgebung. +In diesem Blatt lernst du grundlegende Basisbefehle fuer die Verwaltung und 'Bedienung' eines Linux Servers ohne Bildschirmumgebung. -Zusaetzlich lernst du wie User, Gruppen, Besitzrechte und Berechtigungen ersetllt und vergeben werden. +Zusaetzlich lernst du wie User, Gruppen, Besitzrechte und Berechtigungen erstellt 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. +Zuletzt nutzen 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. +Um Dateien 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 +- erzaehle ueber die Wichtigkeit dieser wenigen Befehle, welche uns ermoeglichen komplexe Dinge durchzufuehren -## Aufgabe 1 - Basisbefehl +## Aufgabe 1 - Basisbefehle -- Lerne diese, sodass im sie im Schlaf bekannt sind. +- Lerne diese, sodass sie dir im Schlaf bekannt sind. cd , ls , mv , cp , rm , mkdir , rmdir , echo , cat , grep , touch , find , fdisk , ls*** , cut , sort , uniq, ip @@ -38,7 +38,7 @@ cd , ls , mv , cp , rm , mkdir , rmdir , echo , cat , grep , touch , f - `groupadd` - `groupmod` - `groupdel` -- teach linux ownership and permissions via `chown`,`grpown`, `chmod` +- teach linux ownership and permissions via `chown`,`chgrp`, `chmod` ## Aufgabe 3 - git server - user/group management @@ -52,7 +52,7 @@ Ownership und Permissions von `git`'s home folder angepasst werden. ### Notizen -- potentiel sollte auch die `umask` des Ordners angepasst werden +- potentiell sollte auch die `umask` des Ordners angepasst werden diff --git a/exerices/sheet02/sheet02.md b/exercises/sheet02/sheet02.md similarity index 78% rename from exerices/sheet02/sheet02.md rename to exercises/sheet02/sheet02.md index 32b73bc..31d87a1 100644 --- a/exerices/sheet02/sheet02.md +++ b/exercises/sheet02/sheet02.md @@ -13,7 +13,7 @@ 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. +Um Dateien 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 diff --git a/exerices/template/template-00.md b/exercises/template/template-00.md similarity index 56% rename from exerices/template/template-00.md rename to exercises/template/template-00.md index e29dadd..5f3c0b5 100644 --- a/exerices/template/template-00.md +++ b/exercises/template/template-00.md @@ -11,38 +11,38 @@ output: pdf_document 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. +`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. +um dann administrative Taetigkeiten am Server durchzufuehren. 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. +Es gibt aber Situationen, in denen es nicht ratsam ist, Usernamen und Passwort fuer die Authentifizierung zu nutzen. +Zum Beispiel, wenn der `ssh` Port, 22, oeffentlich zugaenglich 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 kompromittiert 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. +Key mit dem private Key des `ssh`-Clients ab und wenn die beiden zueinander 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. +Wir lernen, wie wir ssh key Paare erzeugen und am Ziel Server 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. +Zusaetzlich lernen wir `fail2ban`, welches ein einfaches _intrusion prevention system_ (IPS) ist, welches in der Lage ist Ports zu Diensten auf dem Server zu ueberwachen +und bei missbraeuchlichem Verhalten IP Adressen zu blocken. Zum Beispiel kann eine IP Adresse fuer eine Stunde geblockt werden, wenn der entsprechende `ssh`-Client dreimal 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. +Um Dateien 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: +Tools, welche genutzt 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-keygen` (wenn dieser Befehl benutzt wird, setze kein Passwort fuer das Key Paar, sonst musst du 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 @@ -51,10 +51,10 @@ Tools, welche gentuzt werden sollen: - 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: +Nachdem der `ssh`-Dienst angepasst wurde, muss dieser neu gestartet werden, damit die Aenderungen 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. +**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.