No description
  • Java 50.8%
  • Python 44%
  • Shell 5.2%
Find a file
2019-06-21 13:11:52 +02:00
aufgabe01 users_ok.txt updated 2019-05-06 08:20:10 +02:00
aufgabe02 users_ok.txt updated 2019-05-07 11:21:02 +02:00
aufgabe03 users_ok.txt updated 2019-05-13 09:38:28 +02:00
aufgabe04 users_ok.txt updated 2019-05-20 08:39:23 +02:00
aufgabe05 updated users_ok.txt 2019-05-27 08:26:39 +02:00
aufgabe06 updated users_ok.txt 2019-06-18 08:42:25 +02:00
bonus_ok.txt Bonuspunkte fuer die Pruefung erteilt 2019-06-21 13:11:52 +02:00
gitlab-addkey.png Anleitung zur Einrichtung und Handhabung der Praktikumsaufgaben per GitLab veroeffentlicht 2019-04-14 20:35:00 +02:00
gitlab-httpauth.png Anleitung zur Einrichtung und Handhabung der Praktikumsaufgaben per GitLab veroeffentlicht 2019-04-14 20:35:00 +02:00
gitlab-registerform.png Anleitung zur Einrichtung und Handhabung der Praktikumsaufgaben per GitLab veroeffentlicht 2019-04-14 20:35:00 +02:00
gitlab-settings-ssh.png Anleitung zur Einrichtung und Handhabung der Praktikumsaufgaben per GitLab veroeffentlicht 2019-04-14 20:35:00 +02:00
gitlab-signin.png Anleitung zur Einrichtung und Handhabung der Praktikumsaufgaben per GitLab veroeffentlicht 2019-04-14 20:35:00 +02:00
README.md VPN screenshot 2019-04-25 21:53:00 +02:00
vpn-ping.png VPN screenshot 2019-04-25 21:53:00 +02:00

PRAX: Praktikumsaufgaben

In diesem Projekt finden Sie die Praktikumsaufgaben. Sie müssen sich einmalig auf dem GitLab-Server registrieren, um dort einen Account zu erstellen. Nachdem Sie eine Aufgabe bearbeitet haben, committen und pushen Sie bitte Ihre Lösung in Ihr persönliches Projekt, das zu Beginn für Sie erstellt wurde.

Einmalig: GitLab-Account erstellen

Der Workflow für die Erstellung eines GitLab-Accounts ist wie folgt (er ist auch in der Datei praxgit.pdf in Moodle beschrieben):

  1. Öffnen Sie im Browser: https://gitlab.internet-sicherheit.de/
  2. Geben Sie als Benutzername ifis und als Passwort sifi in den ersten Passwort-Dialog ein (siehe Bild)
  3. Im Anschluss kommen Sie auf die Login-Seite des GitLab. Klicken Sie dort auf den Reiter Register:
  4. Registrieren Sie sich mit Ihrer @studmail.w-hs.de Email-Adresse. Der Benutzername muss kleingeschrieben sein und aus dem ersten Buchstaben des Vornamen und dem vollen Nachnamen bestehen, also z.B. cdietrich.
  5. Sie erhalten eine Email von GitLab, dass Ihr Account erstellt wurde.
  6. Warten Sie auf eine weitere Email, dies kann ein paar Stunden oder Tage dauern. Prof. Dietrich wird Sie einer Gruppe hinzufügen und erst danach können Sie weitermachen.

Einmalig: Einrichten der Git-Umgebung

SSH Public Key hinterlegen

Sie müssen einmalig ein SSH-Schlüsselpaar erzeugen und den öffentlichen Schlüssen (public key) im GitLab hinterlegen. Diese Anleitung zeigt Ihnen beispielhaft die Vorgehensweise wie Sie sie in der Kali-Linux VM benutzen können. Ein Screenvideo mit Spracherläuterung gibt es auf YouTube. Wenn Sie im Umgang mit Git geübt sind, können Sie dies jedoch problemlos auf andere Umgebungen übertragen (z.B. auf die Kommandozeile Ihres Hostsystems oder unter Verwendung eines Git-Clientprogramms wie z.B. Sourcetree).

Gehen Sie wie folgt vor. Rufen Sie auf der Kommandozeile das Programm ssh-keygen auf. Sofern dies Ihr erstes Schlüsselpaar ist, können Sie jegliche Fragen einfach per ENTER (ohne Eingaben) abfrühstücken. Ob Sie bereits ein Schlüsselpaar generiert haben, erkennen Sie daran, dass im Verzeichnis .ssh eine Datei id_rsa existiert. Wenn diese Datei fehlt, haben Sie noch kein Schlüsselpaar.

# SSH-Schlüsselpaar erzeugen
root@kali:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hFyWKlWhTQIZ9YoRYkZRfkLI332IZlGjIb7qgDH1UM0 root@kali
The key randomart image is:
+---[RSA 2048]----+
| o*+OB+oOo       |
| oo*.+E%..       |
|  o.=o*=+.       |
| . oo**oo .      |
|o   ++. S.       |
|.o .             |
|o .              |
| o               |
|  .              |
+----[SHA256]-----+

# Dies erstellt mindestens 2 Dateien im Verzeichnis ```.ssh```unterhalb Ihres Home Directory
root@kali:~$ ls -al .ssh
-rw-------  1 root root 1811 Apr 14 09:58 id_rsa                    # <--- geheimer Schluessel
-rw-r--r--  1 root root  391 Apr 14 09:58 id_rsa.pub                # <--- oeffentlicher Schluessel

Die Datei id_rsa.pubist der öffentliche Schlüssel. Den Inhalt dieser Datei müssen Sie in die Zwischenablage kopieren.

root@kali:~$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCr2Xs1grwGkXVnQURYX6UsK31Z5BheqhnftrpiuljXTRnkbciOfe1H7JwDmMfPlrIfbJRBnWQ4TGqs3xDLUspoLcxsaL1L5MmjmTrJt6hRUzYZaLbcu15tixSpQbGbLmEf11bfR7xZm/v1feIsOwOro8orvD1EmmyunF3/PUsnf3LOUNP227ZUdm0NSEJ91cApN+4Ob/RrCTBxVGlcdYme8L9Bew4JzIZPMhaWaJ10RFbT76gaQDv5W0UYSFV8jBgD7FguQAc7JQeST0RISUPbDqoUr+CI4E60U9C12mltZKPa9QVmv/RGp+a/9TybZ4f7qs3GUSdmHwBRJJv79xsN chris@cubuntu

Besuchen Sie dann Ihre Profileinstellungen in GitLab unter https://gitlab.internet-sicherheit.de/profile

Dort klicken Sie im Menü links auf den Punkt SSH Keys.

Fügen Sie nun den öffentlichen Schlüssel ein, sprich den gesamten Inhalt der Datei .ssh/id_rsa.pub. Klicken Sie abschließend auf Add key.


Auschecken der Repositories

Gehen Sie wie folgt vor, um sich die Git-Umgebung für das Praktikum einzurichten. Sie benötigen 2 Repositories:

  • prax19/aufgaben
  • prax19/<IHR_BENUTZERNAME>

Erstellen Sie dazu am besten ein übergeordnetes Verzeichnis prax19. Wechseln Sie dann in das Verzeichnis prax19 und klonen Sie die beiden Repositories wie folgt:

# Übergeordnetes Verzeichnis erstellen und betreten
mkdir prax19
cd prax19

# Repository für Aufgabenblätter klonen
git clone git@gitlab.internet-sicherheit.de:prax19/aufgaben.git

# Repository für Ihre Lösungen (<IHR_BENUTZERNAME> ist Ihr GitLab-Benutzername, z.B. 'rmueller') klonen
git clone git@gitlab.internet-sicherheit.de:prax19/<IHR_BENUTZERNAME>.git

# Ihr Lösungsrepository ist leer und muss wie folgt einmalig initialisiert werden, indem Sie eine leere 
# Datei mit dem Namen README.md erzeugen:
cd <IHR_BENUTZERNAME>
touch README.md                     # erzeugt die leere Datei README.md
git add README.md                   # fuege die Datei zur Git-Versionsverwaltung hinzu
git commit -m "add README"          # Commit aller bisherigen Aktionen
git push -u origin master           # Die Aenderungen auf den Server schieben

Die resultierende Verzeichnis- und Dateistruktur sollte wie folgt aussehen (um das Programm tree zu installieren, muessen Sie einmalig sudo apt install tree auf der Kommandozeile eingeben):

atlas:prax19 chris$ tree

prax19
├── aufgaben                        # hierunter sind alle Aufgabenblätter
│   ├── README.md                   
│   └── aufgabe01                   # Unterlagen zum Aufgabenblatt 1
│       └── lab1.pdf                # Aufgabenblatt 1 als PDF
│
└── <IHR_BENUTZERNAME>              # Ihre Lösungen
    ├── README.md                   
    ├── aufgabe01                   # Lösungen für Aufgabenblatt 1
    │   └── 1.1                     # Lösung für Aufgabe 1.1
    │       ├── logfile.txt         # z.B. eine einzureichende Datei
    │       └── password.txt        # z.B. eine 2. einzureichende Datei
    │
    └── aufgabe02                   # Lösungen für Aufgabenblatt 2

Neues Aufgabenblatt "abholen"

Zum Abfragen einer neuen Aufgabe müssen Sie das Projekt aufgaben aktualisieren (git pull).

atlas:prax19 chris$ cd aufgaben
atlas:aufgaben chris$ git pull

Sobald das geklappt hat, sollten neue Aufgabenblätter (sofern verfügbar) in neuen Unterverzeichnissen liegen.

Lösung einreichen

Sie sollen unterhalb Ihres Repositories eine bestimmte Verzeichnisstruktur (wird im Folgenden erläutert) anlegen und mittels Git auf den Server "pushen".

Erzeugen Sie unterhalb Ihres Repositories ein Verzeichnis mit dem Namen aufgabe01 und darunter ein Verzeichnis mit der Aufgabennummer, also z.B. 1.1. Legen Sie in dieses neue Verzeichnis die einzureichenden Dateien, z.B. falls gefordert ein Passwort in einer Textdatei mit dem Namen password.txt.

atlas:prax19 chris$ cd <IHR_BENUTZERNAME>
atlas:<IHR_BENUTZERNAME> chris$ git add aufgabe01
atlas:<IHR_BENUTZERNAME> chris$ git commit -m 'Aufgabenblatt 1 geloest'
atlas:<IHR_BENUTZERNAME> chris$ git push -u origin master

VPN-Verbindung: praxvpn

Für einige Aufgaben müssen Sie ein spezielles Virtual Private Network (VPN) benutzen, sodass Sie sich mit einem speziell präparierten Netzwerk verbinden können. Die VPN-Verbindung wird von innerhalb der Kali-Linux-VM aufgebaut.

VPN-Konfigurationsdatei

Sie benötigen eine Konfigurationsdatei mit dem Namen praxvpn.conf, die Ihnen von Prof. Dietrich zur Verfügung gestellt wird. Jeder Benutzer hat eine eigene Konfigurationsdatei. Sobald Sie Ihr personenbezogenes Git-Repository initialisiert haben (siehe oben), wird Ihnen die VPN-Konfigurationsdatei darin zur Verfügung gestellt. Aktualisieren Sie dann Ihr personenbezogenes Repository:

atlas:prax19 chris$ cd <IHR_BENUTZERNAME>
# Repository vom Server updaten
atlas:<IHR_BENUTZERNAME> chris$ git pull

In dem Unterverzeichnis vpn sollte nun die Konfigurationsdatei praxvpn.conf liegen. Sollten Sie Ihr Git-Repository nicht innerhalb der VM haben, kopieren Sie diese Datei z.B. in den gemeinsamen Ordner, den Sie aus der Kali-VM erreichen können, sodass Sie die Konfigurationsdatei innerhalb der VM verwenden können.

VPN-Verbindung testen

Stellen Sie sicher, dass Sie von innerhalb der Kali-VM auf die VPN-Konfigurationsdatei praxvpn.conf zugreifen können. (Zum Beispiel kopieren Sie die Konfigurationsdatei in Ihren gemeinsamen Ordner (shared folder).) Führen Sie innerhalb der Kali-VM folgenden Befehl aus:

root@kali:~# openvpn --config /media/sf_prax/praxvpn.conf

Öffnen Sie nun ein 2. Terminal (Rechtsklick auf das Terminalsymbol im Menü, dann New Window). Prüfen Sie mit folgendem ping-Befehl, ob Sie das Testziel in der VPN-Umgebung erreichen können:

root@kali:~# ping -c 4 10.8.0.8
PING 10.8.0.8 (10.8.0.8) 56(84) bytes of data.
64 bytes from 10.8.0.8: icmp_seq=1 ttl=64 time=24.4 ms
64 bytes from 10.8.0.8: icmp_seq=2 ttl=64 time=24.1 ms
64 bytes from 10.8.0.8: icmp_seq=3 ttl=64 time=23.5 ms
64 bytes from 10.8.0.8: icmp_seq=4 ttl=64 time=23.9 ms

--- 10.8.0.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 23.509/24.021/24.453/0.365 ms
root@kali:~#

Sollte die Ausgabe von ping dem obigen Beispiel ähneln, so sind Sie erfolgreich ins VPN eingeloggt. Wenn die Ausgabe bei Ihnen aber eher wie unten aussieht, dann ist etwas schief gegangen:

root@kali:~# ping -c 4 10.8.0.8
PING 10.8.0.8 (10.8.0.8) 56(84) bytes of data.

--- 10.8.0.8 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3062ms

root@kali:~#

Fall etwas schief ging: Prüfen Sie, ob Ihre Kali-VM Internetzugang hat, indem Sie den öffentlichen DNS-Server von Googlen pingen. Hier sollte die Ausgabe wie folgt aussehen (achten Sie insbesondere auf 0% packet loss).

root@kali:~# ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=63 time=15.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=63 time=15.3 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=63 time=14.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=63 time=15.0 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3011ms
rtt min/avg/max/mdev = 14.735/15.078/15.315/0.256 ms
root@kali:~#