mirror of
https://gitlab.com/ser-cal/m346.git
synced 2024-11-23 00:21:57 +01:00
159 lines
7.9 KiB
Markdown
159 lines
7.9 KiB
Markdown
[10]: https://git-scm.com/downloads
|
|
|
|
![TBZ Banner](../x_gitres/tbz_logo.png)
|
|
|
|
# KN02 Inhaltsverzeichnis
|
|
|
|
[TOC]
|
|
|
|
<br>
|
|
|
|
## IaaS - Virtuelle Server
|
|
|
|
Beachten Sie die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
|
|
|
|
Wir nutzen **Amazon Web Services** oder abgekürt **AWS**. Alles was wir hier umsetzen, bieten allerdings auch andere public cloud Anbieter (z.B. Microsoft Azure, Google Cloud Platform oder Linode).
|
|
|
|
Wir verwenden teilweise die AWS Schulungsumgebung für diese Kompetenz. Sie haben eine Einladung für drei Kurse bekommen, die wir folgend verwenden werden.
|
|
|
|
Ein paar zusätzliche notwendige Grundlagen finden Sie in der Datei [Cloud Computing](../CloudComputing.md).
|
|
|
|
Sie erlernen den grundsätzlichen Umgang mit AWS. Anschliessend werden Sie lernen wie sie sich mit einem SSH Key einloggen, gefolgt vom Verständnis für Cloud-init. Am Schluss ergänzen Sie beide Kompetenzen in einer Konfiguration.
|
|
|
|
|
|
## Challenges
|
|
|
|
### A) AWS Kurs
|
|
|
|
Öffnen Sie den Kurs *"**AWS Academy Introduction to Cloud: Semester 1**"* und arbeiten Sie sich durch die ersten 4 Module (Global Infrastructure, Structures of the Cloud, AWS Console, Virtual Servers). Sie müssen die Knowledge Checks **nicht** durchführen, dürfen aber.
|
|
|
|
Die ersten drei Module sind informativ und sollten **schnell durchgegangen werden**. Im vierten Modul gibt es die ersten praktische Übungen. Diese werden mit den folgenden Übungen a) und b) bearbeitet. Dabei lernen grundsätzlich mit virtuellen Maschinen (EC2) und Storage Buckets (S3) umzugehen.
|
|
|
|
#### a) Lab 4.1 - EC2
|
|
|
|
Führen Sie alle Schritte durch. Sie erstellen die Screenshots der verschiedenen Bereiche für Ihre Abgabe **nachdem** Sie **alle** Schritte des Moduls durchgeführt haben. Screenshots:
|
|
|
|
- HTML-Seite, inkl. URL
|
|
- Liste der EC2-Instanzen
|
|
- Details der *Web Server*-Instanz (öffentliche IP sichtbar)
|
|
- Security-Group: Liste der Inbound-Regeln.
|
|
|
|
#### b) Lab 4.2 - S3
|
|
|
|
Führen Sie alle Schritte durch. Sie erstellen die Screenshots der verschiedenen Bereiche für Ihre Abgabe **nachdem** Sie **alle** Schritte des Moduls durchgeführt haben. Screenshots:
|
|
|
|
- Liste der Buckets.
|
|
- HTML-Seite, inkl. URL.
|
|
- Liste der Dateien im Bucket.
|
|
- Eigenschaften von "Static website hosting".
|
|
|
|
### B) Zugriff mit SSH-Key
|
|
|
|
Wechseln Sie nun den Kurs und verwenden *"**Lerner Lab**"*. Ab sofort arbeiten Sie **immer** im **Lerner Lab**, ausser explizit anders angegeben.
|
|
|
|
Unter [Quellen](./#Quellen) finden Sie ein Dokument, welches die Unterschiede zwischen Passwort und SSH-Key beschreibt. Lesen Sie sich **kurz** ein, wenn Sie möchten. Wir werden grundsätzlich **kein Passwort** verwenden und immer SSH Keys.
|
|
|
|
Erstellen Sie nun wieder eine neue **Ubuntu**-Instanz in AWS mit den Standard-Einstellungen wie folgt:
|
|
|
|
- Ubuntu Server 22.04 AMI (Amazon Machine Image) auswählen.
|
|
- Achten auf **Free tier eligible**.
|
|
|
|
Auswahl AMI (Amazon Machine Image), **Free tier eligible** |
|
|
:-------------------------:|
|
|
![keypair1](./x_res/02_os_800.png) |
|
|
|
|
|
|
|
|
- Bei "Key pair" erstellen Sie **zwei** Key-Value Pairs! Geben Sie Namen wie <Ihr-Name>-1 und & lt;Ihr-Name>-2.
|
|
|
|
Create new Key pair | Felder ausfüllen / anwählen
|
|
:-------------------------:|:-------------------------:
|
|
![keypair1](./x_res/01a_Keypair_400.png) | ![keypair2](./x_res/01b_Keypair_400.png)
|
|
|
|
- Stellen Sie sicher, dass Sie **beide Schlüssel** herunterladen.
|
|
- Nachdem beide Keys erstellt wurden, wählen Sie bei "Key pair" dann den **ersten** Key aus. Belassen sie die restlichen Parameter so wie sie bereits eingestellt sind. Scrollen Sie bis ganz nach unten und klicken Sie auf **Launch instance**.
|
|
|
|
|
|
Speicherort der privaten (und öffentlichen) Schlüssel muss ein Pfad sein, der eingeschränkte Rechte hat (nur Ihr persönlicher Account). Normalerweise wird der Pfad `C:\Users\<ihrBenutzer>\.ssh` verwendet.
|
|
|
|
Der Befehl für den Zugriff sieht nun folgendermassen aus. Der Parameter -o verhindert, dass Sie ein Timeout kriegen.
|
|
|
|
---
|
|
|
|
```bash
|
|
ssh <user>@<server> -i <path-to-privatekey>\<private-key-file>.pem -o ServerAliveInterval=30
|
|
# Standard-Benutzername ist ubuntu!
|
|
# Beispiel: ssh ubuntu@121.12.3.1 -i c:\Users\nussle\.ssh\yves-1.pem -o ServerAliveInterval=30
|
|
```
|
|
|
|
---
|
|
|
|
Zeigen Sie, dass sie sich **nur** mit **dem ausgewählten** Schlüssel einloggen können.
|
|
|
|
**Hinweis**: AWS speichert ihren privaten Schlüssel **nicht**. Sie können den nicht wiederherstellen. Auf dem Ubuntu-Server liegt immer nur der öffentliche Schlüssel. Seien Sie also vorsichtig und verlieren Sie den Schlüssel nicht.
|
|
|
|
**Abgaben**:
|
|
|
|
- Screenshot mit dem ssh-Befehl und des Resultats unter Verwendung des **ersten** Schlüssels
|
|
- Screenshot mit dem ssh-Befehl und des Resultats unter Verwendung des **zweiten** Schlüssels
|
|
- Screenshot der Instanz-Detail (oder Liste), so dass der verwendete Schlüssel sichtbar ist.
|
|
|
|
### C) Installation von Web- und Datenbankserver
|
|
|
|
Verwenden Sie die Instanz aus Aufgabe B). Wir installieren nun einen Webserver und eine Datenbank auf ihrem Ubuntu. Führen Sie folgende Punkte aus:
|
|
|
|
- Offene Ports:
|
|
- 22 für SSH Zugriff (sollte bereits vorhanden sein)
|
|
|
|
- 80 für HTTP Zugriff (dazu müssen sie in der ausgewählten Security Group noch eine Inbound rule erstellen - gleich wie beim ersten Lab, siehe Bild unten)
|
|
|
|
Inbound rule für HTTP hinzufügen |
|
|
:-------------------------:|
|
|
![keypair1](./x_res/02_sg_http_800.png) |
|
|
|
|
|
|
- Führen Sie folgende Befehl aus. Sie müssen die Befehle **nicht** dokumentieren.
|
|
- `sudo apt update` auf. Dieser Befehl aktualisiert die Pakete/Software.
|
|
- `sudo apt install apache2`. Dieser Befehl installiert den Apache Webserver.
|
|
- `sudo apt install php`. Dieser Befehl installiert den PHP Applikationsserver.
|
|
- `sudo apt install libapache2-mod-php`. Dieser Befehl installiert die PHP-Erweiterung für Apache.
|
|
- `sudo apt install php-mysqli`. Dieser Befehlt installiert das PHP-Modul, um Datenbank-Abfragen zu erstellen.
|
|
- `sudo apt install mariadb-server`. Dieser Befehl installiert den Datenbankserver.
|
|
- `sudo mysql -sfu root -e "GRANT ALL ON *.* TO 'admin'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;"`. Dieser Befehl erstellt einen neuen Benutzer *admin* mit dem Passwort *password*. Wir werden diesen gleich verwenden.
|
|
- `sudo systemctl restart mariadb.service`. Dieser Befehl startet den DB Server neu.
|
|
- `sudo systemctl status mariadb.service`. Dieser Befehl checkt, ob der DB Server läuft. Falls Anzeige grün **active (running)**, dann ok.
|
|
- `sudo systemctl restart apache2`. Dieser Befehl startet den Webserver neu.
|
|
- `sudo systemctl status apache2`. Dieser Befehl checkt, ob der Webserver läuft. Falls Anzeige grün **active (running)**, dann ok.
|
|
|
|
- `cd ~`. Dieser Befehl stellt sicher, dass Sie sich in ihrem Home-Verzeichnis befinden
|
|
|
|
- `git clone https://gitlab.com/ch-tbz-it/Stud/m346/m346scripts.git`. Diesen Befehl sollten Sie bereits beherrschen.
|
|
|
|
- `sudo cp ./m346scripts/KN01/*.php /var/www/html/`. Dieser Befehl kopiert die beiden PHP-Dateien in das Verzeichnis des Webservers.
|
|
|
|
- Rufen Sie von ihrem Rechner nun die folgenden Seiten auf:
|
|
|
|
- *http://[Ihre-IP]/index.html*. Diese URL zeigt ihnen die Informationen von Apache an. Wenn die Seite funktioniert, zeigt dies, dass Apache installiert wurde und funktioniert.
|
|
|
|
- *http://[Ihre-IP]/info.php*. Diese URL zeigt ihnen die Informationen von PHP an. Wenn diese Seite funktioniert, zeigt dies, dass das PHP-Modul funktioniert und Sie nun dynamische Seiten hosten können.
|
|
|
|
- *http://[Ihre-IP]/db.php*. Diese URL zeigt ihnen die Datenbank-Benutzer. Wenn diese Seite funktioniert, zeigt es Ihnen, dass die Datenbank-Verbindung funktioniert.
|
|
|
|
**Abgabe**:
|
|
|
|
- Erstellen Sie Screenshots der **funktionierenden** Webseiten (mit sichtbarer URL)
|
|
|
|
**Beispiel-Abgabe**:
|
|
- Screenshots der drei URLs:
|
|
|
|
Apache | PHP | DB-User
|
|
:---:|:---:|:---:|
|
|
![Apache](./x_res/03a_apache_300.png) | ![PHP](./x_res/03b_apache_300.png) | ![User](./x_res/03c_user_300.png)
|
|
|
|
### Quellen
|
|
|
|
Thorntech: [Passwords vs. SSH keys - what's better for authentication?](https://thorntech.com/passwords-vs-ssh)
|
|
|
|
|
|
|