Skip to content

robin1312/Modul300

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

M300 - LB1

Inhaltsverzeichnis

  • K1
    • VirtualBox
    • Vagrant
    • Visualstudio-Code
    • Git-Client
    • SSH-Key für Client erstellt
  • K2
    • Github oder Gitlab-Account ist erstellt
    • Git-Client wurde verwendet
    • Dokumentation ist als Mark Down vorhanden
    • Mark down-Editor ausgewählt und eingerichtet
    • Mark down ist strukturiert
    • Persönlicher Wissenstand
    • Wichtige Lernschritte sind dokumentiert
  • K3
    • Bestehende VM aus Vagrant-Cloud eingerichtet
    • Kennt die Vagrant-Befehle
    • Eingerichtete Umgebung ist dokumentiert
    • Andere, vorgefertigte vm auf eigenem Notebook aufgsetzt
    • Projekt mit Git und Mark Down dokumentiert
  • K4
    • Firewall eingrichtet inkl. Rules
    • Reverse-Proxy eingerichet
    • Benutzer- und Rechtevergabe ist eingerichtet
    • Zugang mit SSH-Tunnel abgesichert
    • Sicherheitsmassnahmen sind dokumentiert
    • Projekt mit Git und Mark Down dokumentiert
  • K5
    • Vergleich Vorwissen - Wissenzuwachs
    • Reflexion

K1

Virtualbox

Nun widmen wir uns der Virtualisierung von Computersystemen. Für den Betrieb von solchen Maschinen bzw. Computern stehen zahlreiche Virtualisierungsanwendungen zur Verfügung. Eine davon ist VirtualBox. In diesem Kapitel richten wir eine einfache VM (Virtuelle Maschine) mit VirtualBox ein. Also ganz traditionell und wie sich im späteren Verlauf zeigt, auch eine sehr aufwendige Arbeit.

Folgende Arbeiten müssen gemacht werden:

Software herunterladen & installieren


  1. Zuerst muss die VirtualBox-Anwendung installiert werden. Der Installer lässt sich hier herunterladen.
  2. Auf "Download VirtualBox 5.2" klicken und bei Abschnitt "VirtualBox 5.2.19 platform packages" dem OS X hosts Link folgen (Datei wird heruntergeladen)
  3. Die Installation erfolgt GUI-basiert, jedoch standard (ohne speziellen Anpassungen). Daher wird an dieser Stelle auf eine Erklärung verzichtet.
  4. Sobald der Vorgang abgeschlossen wurde, kann mit dem Herunterladen der ISO-Datei und der VM-Erstellung fortgefahren werden.

ISO-Datei herunterladen


Für das weitere Vorgehen wird eine System-Abbild-Datei benötigt. Dazu laden wir in unserem Fall das Image von Ubuntu Desktop 16.04.05 herunter. Wie das genau funktioniert, wird nachfolgend beschrieben:

  1. Das Systemabbild (ISO-Image) über diesen Link herunterladen
  2. Datei im gewünschten Verzeichnis ablegen (damit das Image wiederverwendet werden kann)
  3. Allen Anweisung in Abschnitt "VM erstellen" folgen

VM erstellen


  1. VirtualBox starten
  2. Links oben, innerhalb der Anwendung, auf Neu klicken
  3. Im neuen Fenster folgende Informationen eintragen:
    • Name: M300_Ubuntu_16.04_Desktop
    • Typ: Linux
    • Version: Ubuntu (64-bit)
    • Speichergrösse: 2048 MB
    • Platte: [X] Festplatte erzeugen
  4. Auf Erzeugen klicken
  5. Weiteres Fenster öffnet sich, folgende Informationen eintragen:
    • Dateipfad: standard
    • Dateigrösse: 10.00 GB
    • Dateityp der Festplatte: VMDK (Virtual Maschine Disk)
    • Storage on physical hard disk: dynamisch alloziert
  6. Ebenefalls auf Erzeugen klicken, dann im Hauptmenü die VM anwählen (blau markiert) und den Punkt Ändern aufrufen
  7. Im Abschnitt Massenspeicher den SATA-Controller anwählen und auf das CD+Symbol klicken
  8. Unter Medium auswählen das zuvor heruntergeladene Systemabbild (ISO-Datei) anwählen
  9. Alle Änderungen speichern und die VM starten
  10. Den Installationsanweisungen der OS-Installation folgen und anschliessend zu Abschnitt "VM einrichten" gehen

Vagrant

Vagrant sollte uns zeigen, dass das Bereitstellen virtueller Systeme in der konventionellen Art lange dauert und umständlich sein kann. Abhilfe bietet hier Vagrant. Vagrant ist eine freie Ruby-Anwendung zur Erstellung und Verwaltung virtueller Maschinen und ermöglicht einfache Softwareverteilung.

Nachfolgend sind einzelne Schritte zur Einrichtung von Vagrant dokumentiert:

Software herunteladen & installieren


  1. Die Anwendung in der Version 2.1.4 kann auf der offiziellen Webseite heruntergeladen werden.
  2. Die Installation erfolgt, wie alle anderen Anwendungen, GUI-basiert, jedoch standard (ohne speziellen Anpassungen). Daher wird an dieser Stelle ebenfalls auf eine Erklärung verzichtet.
  3. Sobald der Vorgang abgeschlossen wurde, kann mit dem Erstellen einer VM fortgefahren werden.

Virtuelle Maschine erstellen


  1. Terminal öffnen
  2. In gewünschtem Verzeichnis einen neuen Ordner für die VM anlegen:
      $ cd Wohin\auch\immer
      $ mkdir MeineVagrantVM
      $ cd MeineVagrantVM
  3. Vagrantfile erzeugen, VM erstellen und entsprechend starten:
      $ vagrant init ubuntu/xenial64        #Vagrantfile erzeugen
      $ vagrant up --provider virtualbox    #Virtuelle Maschine erstellen & starten
  4. Die VM ist nun in Betrieb (erscheint auch in der Übersicht innerhalb von VirtualBox) und kann via SSH-Zugriff bedient werden:
      $ cd Pfad\zu\meiner\Vagrant-VM      #Zum Verzeichnis der VM wechseln
      $ vagrant ssh                       #SSH-Verbindung zur VM aufbauen
    
      #Anschliessend können ganz normale Bash-Befehle abgesetzt werden:
    
      $ ls -l /bin  #Bin-Verzeichnis anzeigen
      $ df -h       #Freier Festplattenspeicher
      $ free -m     #Freier Arbeitsspeicher
  5. VM über VirtualBox-GUI ausschalten

Schlussfolgerung: Eine VM lässt sich mit Vagrant eindeutig schneller und unkomplizierter erstellen!

Virtuelle Maschine erstellen (mit Vagrant-Box auf Netzwerkshare)


  1. Terminal öffnen
  2. In gewünschtem Verzeichnis einen neuen Ordner für die VM anlegen:
      $ cd Wohin\auch\immer
      $ mkdir MeineVagrantVM
      $ cd MeineVagrantVM
  3. Vagrantfile erzeugen, VM erstellen und entsprechend starten:
      $ vagrant box add http://[HOST]/vagrant/ubuntu/xenial64.box --name ubuntu/xenial64  #Vagrant-Box vom Netzwerkshare hinzufügen
      $ vagrant init ubuntu/xenial64                                                      #Vagrantfile erzeugen
      $ vagrant up --provider virtualbox                                                  #Virtuelle Maschine erstellen & starten
  4. Die VM ist nun in Betrieb (erscheint auch in der Übersicht innerhalb von VirtualBox) und kann via SSH-Zugriff bedient werden:
      $ cd Pfad\zu\meiner\Vagrant-VM      #Zum Verzeichnis der VM wechseln
      $ vagrant ssh                       #SSH-Verbindung zur VM aufbauen
    
      #Anschliessend können ganz normale Bash-Befehle abgesetzt werden:
    
      $ ls -l /bin  #Bin-Verzeichnis anzeigen
      $ df -h       #Freier Festplattenspeicher
      $ free -m     #Freier Arbeitsspeicher
  5. VM über VirtualBox-GUI ausschalten

Schlussfolgerung: Keine erheblichen Unterschiede zum ersten Teil (ohne Share) und daher auch nicht wirklich kompliziert.

Visual Studio Code

Bis hierhin haben wir soweit alles aufgesetzt und installiert. Nun möchten wir für effizienteres Arbeiten eine "Entwicklungsumgebung" aufbauen, die es uns ermöglicht, alle lokalen Repositories an einem Ort zu verwalten und die dazugehörigen Dateien zu bearbeiten. Die Lösung hierzu ist: Visual Studio Code Dieser freie Quelltext-Editor von Microsoft, ermöglicht uns, unsere Workflows besser zu gestalten und damit die Arbeit um einiges leichter zu machen.

Ich habe jedoch nicht mit Visual Studio Code gearbeitet. Ich habe es direkt im Github Browser Code bearbeitet.

Software herunteladen & installieren


  1. Unter dieser Webseite lässt sich der Installer (Version 1.26.1) herunterladen.
  2. Auf "Download for Mac" klicken und warten, bis das Fenster zum Herunterladen erscheint. Anschliesend den Download des Installers starten
  3. Die Installation erfolgt auch hier GUI-basiert. Wiederum aber standard (ohne speziellen Anpassungen), sodass an dieser Stelle auf eine Erklärung ebenfalls verzichtet wird .
  4. Sobald der Vorgang abgeschlossen wurde, kann mit dem Herunterladen der ISO-Datei und der VM-Erstellung fortgefahren werden.

Git-Client

Account erstellen


Als erster Schritt muss ein GitHub-Account eingerichtet werden. Dieser dient uns später als "Cloud-Speicher" unserer Dokumentation und weiteren Dateien.

Folgende Arbeiten müssen gemacht werden:


  1. Auf www.github.com ein Benutzerkonto erstellen (Angabe von Username, E-Mail und Passwort)
  2. E-Mail zur Verifizierung des Kontos bestätigen und anschliessend auf GitHub anmelden

Repository erstellen

  1. Anmelden unter www.github.com
  2. Innerhalb der Willkommens-Seite auf Start a project klicken
  3. Unter Repository name einen Name definieren (z.B. M300)
  4. Optional: kurze Beschreibung eingeben
  5. Radio-Button bei Public belassen
  6. Haken bei Initialize this repository with a README setzen
  7. Auf Create repository klicken

SSH-Key für Client erstellt

SSH-Key wurde erstellt mit dem git-bash. Zusätzlich wurde auch ein Passwort hinterlegt. Ausserdem wurde es dem SSH-Agent hinzugefügt

  1. Terminal öffnen
  2. Folgenden Befehl mit der Account-E-Mail von GitHub einfügen:
      $  ssh-keygen -t rsa -b 4096 -C "beispiel@beispiel.com"
  3. Neuer SSH-Key wird erstellt:
      Generating public/private rsa key pair.
  4. Bei der Abfrage, unter welchem Namen der Schlüssel gespeichert werden soll, die Enter-Taste drücken (für Standard):
      Enter a file in which to save the key (~/.ssh/id_rsa): [Press enter]
  5. Nun kann ein Passwort für den Key festgelegt werden. Ich empfehle dieses zu setzen und anschliessend dem SSH-Agent zu hinterlegen, sodass keine erneute Eingabe (z.B. beim Pushen) notwendig ist:
      Enter passphrase (empty for no passphrase): [Passwort]
      Enter same passphrase again: [Passwort wiederholen]

SSH-Key hinzufügen


  1. Anmelden unter www.github.com
  2. Auf Benutzerkonto klicken (oben rechts) und den Punkt Settings aufrufen
  3. Unter den Menübereichen auf der linken Seite zum Abschnitt SSH und GPG keys wechseln
  4. Auf New SSH key klicken
  5. Im Formular unter Title eine Bezeichnung vergeben (z.B. MB SSH-Key)
  6. Den zuvor kopierten Key mit CTRL + V einfügen und auf Add SSH key klicken
  7. Der Schlüssel (SSH-Key) sollte nun in der übergeordneten Liste auftauchen

SSH-Key in Github hinzufügen


add key Der SSH-Key wurde in Github implementiert.

Repository klonen


Die Repository wird von Github auf den Client geklont.

Repository hochladen (Push)


  1. Terminal öffnen (nachdem Teile bzw. Dateien des lokalen Repositorys geändert wurden)
  2. In das entsprechende Verzeichnis des Repository gehen:
      $ cd Pfad\zu\meinem\Repository  
  3. Dateien dem Upload hinzufügen:
      $ git add -a.
  4. Den Upload commiten:
      $ git commit -m "Mein Kommentar"
  5. Schliesslich den Upload pushen:
      $ git push
  6. Nun sollte der Master-Branch des Repositorys ebenfalls aktualisiert sein

Übersicht "How to Push"


Dieser Abschnitt zeigt die Handhabung von Git-Befehlen auf. Mit den nachfolgenden Kommandos pusht man das (geänderte) Repository zu seinem GitHub-Repository.

Wichtig: Die Befehle müssen innerhalb des lokalen Repositorys ausgeführt werden!

$  cd Pfad\zu\meinem\Repository    # Zum lokalen GitHub-Repository wechseln

$  git status                      # Geänderte Datei(en) werden rot aufgelistet
$  git add -a                      # Fügt alle Dateien zum "Upload" hinzu
$  git status                      # Der Status ist nun grün > Dateien sind Upload-bereit (Optional) 
$  git commit -m "Mein Kommentar"  # Upload wird "commited" > Kommentar zu Dokumentationszwecken ist dafür notwendig
$  git status                      # Dateien werden nun als "zum Pushen bereit" angezeigt
$  git push                        #Upload bzw. Push wird durchgeführt

K2

Github oder Gitlab-Account ist erstellt

Ein GitHub-Account konnte ich problemlos erstellen.

Git-Client wurde verwendet

Mein Git-Client ist aktiv und mein repo wurde auch geklont.

Dokumentation ist als Markdown vorhanden, Editor ausgewählt und eingerichtet, strukturiert

Die ganze Dokumentation habe ich im GitHub Code Browser geschrieben.

Persönlicher Wissenstand im Bezug auf die wichtigsten Themen sind dokumentiert (Linux, VM, Vagrant, Git, .md, Sicherheit)

  • Linux:

    Ich habe im Geschäft schon mit Linux gearbeitet und in anderen Modulen. Daher hatte ich vor dem Projekt grundlegendes Basiswissen über Linux

  • Virtualisierung:

    In ÜKs und im Geschäft hatte ich sehr viel zu tun mit Virtualisierung, deswegen kenne ich mich mit VMs gut aus.

  • Vagrant:

    Ich Arbeite zum ersten Mal mit Vagrant.

  • Versionsverwaltung:

    Die Versionsverwaltung habe ich bis jetzt eigentlich nie verwendet.

  • Git & Markdown

    Mit Git und Markdown hatte ich bis jetzt nichts zu tun und ist daher Neuland für mich.

  • Systemsicherheit

    Mit Systemsicherheit hatte ich in der Vergangenheit zu tun z.B. in Modulen. Darum werde ich eine Firewall installieren und einen reverse Proxy, dazu werde ich noch später kommen. Da ich mein Netzwerk über den lokalen Laptop läuft ist es zuesätzlich sicher, da ich ein Antiviren Programm und eine Firewall habe.

K3

Bestehende vm aus Vagrant-Cloud einrichten

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.define "database" do |db|
    db.vm.box = "ubuntu/xenial64"
	db.vm.provider "virtualbox" do |vb|
	  vb.memory = "512"  
	end
    db.vm.hostname = "db01"
    db.vm.network "private_network", ip: "192.168.55.100"
    # MySQL Port nur im Private Network sichtbar
	# db.vm.network "forwarded_port", guest:3306, host:3306, auto_correct: false
  	db.vm.provision "shell", path: "db.sh"
  end
  
  config.vm.define "web" do |web|
    web.vm.box = "ubuntu/xenial64"
    web.vm.hostname = "web01"
    web.vm.network "private_network", ip:"192.168.55.101" 
	web.vm.network "forwarded_port", guest:80, host:8080, auto_correct: true
	web.vm.provider "virtualbox" do |vb|
	  vb.memory = "512"  
	end     
  	web.vm.synced_folder ".", "/var/www/html"  
	web.vm.provision "shell", inline: <<-SHELL
		sudo apt-get update
		sudo apt-get -y install debconf-utils apache2 nmap
		sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password admin'
		sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password admin'
		sudo apt-get -y install php libapache2-mod-php php-curl php-cli php-mysql php-gd mysql-client  
		# Admininer SQL UI 
		sudo mkdir /usr/share/adminer
		sudo wget "http://www.adminer.org/latest.php" -O /usr/share/adminer/latest.php
		sudo ln -s /usr/share/adminer/latest.php /usr/share/adminer/adminer.php
		echo "Alias /adminer.php /usr/share/adminer/adminer.php" | sudo tee /etc/apache2/conf-available/adminer.conf
		sudo a2enconf adminer.conf 
		sudo service apache2 restart 
	  echo '127.0.0.1 localhost web01\n192.168.55.100 db01' > /etc/hosts
SHELL
	end  
 end

Kennt die Vagrant-Befehle

Die wichtigsten Befehle:

befehle

Eingerichtete Umgebung

________________________________________________________________
|Notebook - Schulnetz 10.71.13.19 und Privates Netz 192.168.6.19|                 
|                                                               |	
|    ______________________          _______________________    |
|    | Apache Server      |          |DHCP Server          |    |       
|    | Host: apache       |          | Host: dhcp          |    |
|    | IP: 192.168.6.7    | 	     | IP: 192.168.6.5     |    |
|    | Port: 80           |          | Port: -             |    |
|    | Nat: 8080          |          |                     |    |
|    |____________________|          |_____________________|    |
|                                                               |
|                                                               |
|                                                               |
|                  _______________________                      |
|                  | FTP Server          |                      |
|                  | Host: ftp           |                      |
|                  | IP: 192.168.6.6     |                      |
|                  | Port 3306           |                      |
|                  |             	 |                      |
|                  |_____________________|                      |                                                           
|                                                               |
|	                                                        |
|_______________________________________________________________|

## Funktionsweise Testen

Um zum überprüfen ob der Webserver läuft wird: http://localhost:8080/ im Browser eingegeben und dann sollte der Apache Server auftauchen. 

Um die Database zu testen, gibt man im Browser die folgende URL ein: http://localhost:8080/adminer.php.

Um die Funktionsweise vom DHCP-Server zu testen muss man eine vm erstellen mit der gleichen Netzwerkkarte wie der DHCP-Server und dann die Einstellungen ändern unter DHCP. Danach erhählt diese VM eine IP vom erstellten DHCP-Server. 

## Andere, vorgefertige VM auf eigenem Notebook aufgesetzt
So habe ich mein Vagrant konfiguriert:

```SHELL
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  # Every Vagrant virtual environment requires a box to build off of.Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "private_network", ip:"169.254.57.183"
  config.vm.network "forwarded_port", guest:80, host:8080, auto_correct: true
  config.vm.synced_folder ".", "/var/www/html"
 config.vm.provider "virtualbox" do |vb|
  vb.memory = "512"
 end
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo apt-get install ufw -y
    sudo ufw allow from 10.0.2.2 to any port 22
    sudo ufw allow 80/tcp
    sudo ufw --force enable
    sudo apt-get install libapache2-mod-proxy-html -y
    sudo apt-get install libxml2-dev -y
    a2enmod proxy
    a2enmod proxy_html
    a2enmod proxy_http
    sed -i '$aServerName localhost' /etc/apache2/apache2.conf
    service apache2 restart
    cd /etc/apache2/sites-enabled
    wget https://pastebin.com/raw/GbjFC2ii
    cp GbjFC2ii 001-reverseproxy.conf
  SHELL
end

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!

#Virtualbox für DHCP
#Im ersten Abschnitt wird das Guest-OS der VM bestimmt.
Vagrant.configure(2) do |config|
  #config.ssh.username = "admin"
  #config.ssh.password = "admin"
  config.vm.define "dhcp" do |dhcp|
    dhcp.vm.box = "ubuntu/xenial64"
    dhcp.vm.hostname = "dhcp"
    dhcp.vm.network "private_network", ip:"192.168.6.5" 
    dhcp.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"  
    end     
    dhcp.vm.provision "shell", inline: <<-SHELL
        sudo apt-get update
        #Gruppe Myadmin erstellen
        sudo groupadd myadmin
        #User erstellen
        sudo useradd admin -g myadmin -m -s /bin/bash
        sudo useradd test -g myadmin -m -s /bin/bash
        #Password festlegen
        sudo chpasswd <<<admin:admin
        sudo chpasswd <<<test:test
        #DHCP Server installieren
        sudo apt-get -y install isc-dhcp-server
	#DHCP Config-File konfigurieren
        #Domainanme konfigurieren
        sudo sed -i 's/example.org/labor.local/g' /etc/dhcp/dhcpd.conf
        #DNS konfigurieren
        sudo sed -i 's/ns2.labor.local/8.8.8.8/g' /etc/dhcp/dhcpd.conf
        #DHCP Autorisierung aktiviert
        sudo sed -i 's/#authoritative/authoritative/g' /etc/dhcp/dhcpd.conf
        #DHCP Subnetz & Maske konfigurieren
        sudo sed -i '$asubnet 192.168.6.0 netmask 255.255.255.0 {' /etc/dhcp/dhcpd.conf
        #DHCP Range konfigurieren
        sudo sed -i '$arange 192.168.6.100 192.168.6.130;' /etc/dhcp/dhcpd.conf
        #DHCP Gateway konfigurieren
        sudo sed -i '$aoption routers 192.168.6.1;' /etc/dhcp/dhcpd.conf
        sudo sed -i '$a}' /etc/dhcp/dhcpd.conf
        #DHCP Server neustarten
	sudo service isc-dhcpd-server restart
        #Tastaturlayout anpassen
        sudo sed -i 's/XKBLAYOUT="us"/XKBLAYOUT="ch"/g' /etc/default/locale
        #Local Firewall installieren
        sudo apt-get -y install ufw gufw 
        sudo ufw allow from 10.0.2.2 to any port 22
        sudo ufw --force enable
SHELL
 end

#Virtualbox für FTP
#Im ersten Abschnitt wird das Guest-OS der VM bestimmt.
  config.vm.define "ftp" do |ftp|
    ftp.vm.box = "ubuntu/xenial64"
    ftp.vm.hostname = "ftp"
    ftp.vm.network "private_network", ip: "192.168.6.6"
    ftp.vm.network "forwarded_port", guest:3306, host:3306, auto_correct: true
    ftp.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"  
    end
    ftp.vm.provision "shell", inline: <<-SHELL
        sudo apt-get update
        #FTP Server installieren
        sudo apt-get -y install pure-ftpd-common pure-ftpd
        #FTP Server konfigurieren
        sudo groupadd ftpgroup
        sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
        sudo pure-pw useradd robin -u ftpuser -g ftpgroup -d /home/pubftp/robin -N 10
        #FTP Server neustarten
	#sudo service pure-ftpd-common pure-ftpd restart
        sudo /home/pubftp/robin restart
        #Tastaturlayout anpassen
        sudo sed -i 's/XKBLAYOUT="us"/XKBLAYOUT="ch"/g' /etc/default/locale
        #Local Firewall installieren
        sudo apt-get -y install ufw gufw 
        sudo ufw allow from 10.0.2.2 to any port 22
        sudo ufw --force enable
SHELL
 end        

#Im ersten Abschnitt wird das Guest-OS der VM bestimmt.
  config.vm.define "apache" do |apache|
    config.vm.box = "ubuntu/xenial64"
    config.vm.hostname = "apache"
    config.vm.network "private_network",ip:"192.168.6.7",netmask:"255.255.255.0",default_gateway:"192.168.6.1"
    config.vm.network "forwarded_port", guest:80, host:8080, auto_correct: true
    config.vm.synced_folder ".", "/var/www/html"
    config.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
    end
# Ab hier werden Services, die auf dem Server laufen sollen, und deren Einrichtung beschrieben
  config.vm.provision "shell", inline: <<-SHELL
      sudo apt-get update
      #Gruppe Myadmin erstellen
      sudo groupadd myadmin
      #User erstellen
      sudo useradd admin -g myadmin -m -s /bin/bash
      sudo useradd test -g myadmin -m -s /bin/bash
      #Password festlegen
      sudo chpasswd <<<admin:admin
      sudo chpasswd <<<test:test
      sudo apt-get -y install apache2
      sudo service apache2 restart
      #Tastaturlayout anpassen
      sudo sed -i 's/XKBLAYOUT="us"/XKBLAYOUT="ch"/g' /etc/default/locale
      #Local Firewall installieren
      sudo apt-get -y install ufw gufw 
      sudo ufw allow from 10.0.2.2 to any port 22
      sudo ufw --force enable
SHELL
    end  
 end

K4

Firewall eingerichtet inkl. Rules

Eine lokale Firewall wird installiert und anschliessend auch konfiguriert. Dabei öffnen man den Port 22 um via SSH darauf zuzugreifen. INFO-INPUT SSH Port 22 | TELNET Port 23

#Local Firewall installieren
sudo apt-get -y install ufw gufw 
sudo ufw allow from 10.0.2.2 to any port 22
sudo ufw --force enable    

Nun ist die DHCP-Part abgeschlossen. Man kann jetzt Clients VM erstellen und mit dem DHCP-Server innerhalb IP-Range IP-Adresse bekommen.

Reverse-Proxy eingerichtet

Im folgenden Schritt wird der Reverse-Proxy eingerichtet:

sudo ufw allow from 10.0.2.2 to any port 22
sudo ufw allow 80/tcp
	sudo ufw --force enable
	sudo apt-get install libapache2-mod-proxy-html -y
	sudo apt-get install libxml2-dev -y
	a2enmod proxy
	a2enmod proxy_html
	a2enmod proxy_http
	sed -i '$aServerName localhost' /etc/apache2/apache2.conf
	service apache2 restart
	cd 	/etc/apache2/sites-enabled
	wget https://pastebin.com/raw/GbjFC2ii
	cp GbjFC2ii 001-reverseproxy.conf

Benutzer- und Rechtevergabe ist eingerichtet

Im nächsten Schritt wird eine Gruppe, inklusive Benutzer mit Passwort erstellt. Dies geht wie folgt:

#Gruppe Myadmin erstellen
sudo groupadd myadmin
#User erstellen
sudo useradd admin -g myadmin -m -s /bin/bash
sudo useradd test -g myadmin -m -s /bin/bash
#Password festlegen
sudo chpasswd <<<admin:admin
sudo chpasswd <<<test:test

Zugang mit SSH-Tunnel abgesichert

Kontrolle ob der Zugang abgesichert ist

root@dhcp:~# cd /etc/ssh
root@dhcp:/etc/ssh# sudo nano sshd_config
root@dhcp:/etc/ssh#

K5

DHCP-Server


Die DHCP VM hat folgende Spezifikationen (Die Änderungen kann man im Vagrant-File vornehmen):

  • IP: 192.168.6.5
  • Hostname: dhcp
  • RAM: 1024 MB
  • VM Box: Ubuntu
config.vm.define "dhcp" do |dhcp|
  dhcp.vm.box = "ubuntu/xenial64"
  dhcp.vm.hostname = "dhcp"
  dhcp.vm.network "private_network", ip:"192.168.6.5" 
	dhcp.vm.provider "virtualbox" do |vb|
	  vb.memory = "1024"  
end  

Der erstes Schritt ist die Paketverzeichnis aktualisiert wird.

sudo apt-get update

Bei nächsten Schritt wird der DHCP Server installiert. Das Paket lautet: ISC-DHCP-SERVER.

sudo apt-get -y install isc-dhcp-server

Nach der Installation von DHCP-Server muss man die Konfiguration anpassen. Das Konfigurationfile vom DHCP Server befindet sich im Pfad /etc/dhcp/dhcpd.conf. Bei dem Konfigurationfile wird folgendes geändert:

  • Domainname
  • DNS
  • DHCP Scope

Der Domainname lautet Standardmässig example.org und will neu labor.local umändern.

#Domainanme konfigurieren
sudo sed -i 's/example.org/labor.local/g' /etc/dhcp/dhcpd.conf

Der DNS wird nun auf 8.8.8.8 (Google DNS) konfiguriert.

#DNS konfigurieren
sudo sed -i 's/ns2.labor.local/8.8.8.8/g' /etc/dhcp/dhcpd.conf

Im Bereich beim Scope hat folgende Parameter:

  • Subnet --> 192.168.6.0/24
  • Range --> 192.168.6.100 - 130
  • Gateway --> 192.168.6.1
#DHCP Autorisierung aktiviert
sudo sed -i 's/#authoritative/authoritative/g' /etc/dhcp/dhcpd.conf
#DHCP Subnetz & Maske konfigurieren
sudo sed -i '$asubnet 192.168.6.0 netmask 255.255.255.0 {' /etc/dhcp/dhcpd.conf
#DHCP Range konfigurieren
sudo sed -i '$arange 192.168.6.100 192.168.6.130;' /etc/dhcp/dhcpd.conf
#DHCP Gateway konfigurieren
sudo sed -i '$aoption routers 192.168.6.1;' /etc/dhcp/dhcpd.conf
sudo sed -i '$a}' /etc/dhcp/dhcpd.conf

Nach der Änderung des Konfigurationsfile wird der DHCP Service neu gestartet.

#DHCP Server neustarten
sudo service isc-dhcp-server restart

Die Tastaturlayout muss man noch auf Deutsch Schweiz anpassen.

#Tastaturlayout anpassen
sudo sed -i 's/XKBLAYOUT="us"/XKBLAYOUT="ch"/g' /etc/default/locale

FTP-Server

Die FTP VM hat folgende Spezifikationen (Die Änderungen kann man im Vagrant-File vornehmen):

  • IP: 192.168.6.6
  • Hostname: ftp
  • RAM: 1024 MB
  • VM Box: Ubuntu
config.vm.define "ftp" do |ftp|
  ftp.vm.box = "ubuntu/xenial64"
  ftp.vm.hostname = "ftp"
  ftp.vm.network "private_network", ip: "192.168.6.6"
  ftp.vm.network "forwarded_port", guest:3306, host:3306, auto_correct: true
  ftp.vm.provider "virtualbox" do |vb|
	 vb.memory = "1024"  
end

Der erstes Schritt ist erneut die Paketverzeichnis zu akualisieren.

sudo apt-get update

Bei nächsten Schritt wird der FTP Server installiert. Das Paket lautet: pure-ftpd

#FTP Server installieren
sudo apt-get -y install pure-ftpd-common pure-ftpd

Nach der Installation kann ich die FTP-Server konfigurieren. Bei meinem Fall sieht es so aus:

sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
sudo pure-pw useradd robin -u ftpuser -g ftpgroup -d /home/pubftp/robin-N 10

Nach der Änderung wird der FTP Service neu gestartet.

#FTP Server neustarten
sudo service pure-ftpd-common pure-ftpd restart
#sudo /home/pubftp/robin restart

Die Tastaturlayout muss man noch auf Deutsch Schweiz anpassen.

#Tastaturlayout anpassen
sudo sed -i 's/XKBLAYOUT="us"/XKBLAYOUT="ch"/g' /etc/default/locale

Am Ende wird noch eine lokale Firewall installiert und anschliessend auch konfiguriert. Dabei öffnen man den Port 22 um via SSH darauf zuzugreifen. INFO-INPUT SSH Port 22 | TELNET Port 23

#Local Firewall installieren
sudo apt-get -y install ufw gufw 
sudo ufw allow from 10.0.2.2 to any port 22
sudo ufw --force enable    

Nun ist die FTP-Part abgeschlossen.

Apache-Server

Die Apache VM hat folgende Spezifikationen (Die Änderungen kann man im Vagrant-File vornehmen):

  • IP: 192.168.6.7
  • Hostname: apache
  • RAM: 1024 MB
  • VM Box: Ubuntu
config.vm.define "apache" do |apache|
  config.vm.box = "ubuntu/xenial64"
  config.vm.hostname = "apache"
  config.vm.network "private_network",ip:"192.168.6.7",netmask:"255.255.255.0",default_gateway:"192.168.6.1"
  config.vm.network "forwarded_port", guest:80, host:8080, auto_correct: true
  config.vm.synced_folder ".", "/var/www/html"
  config.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
end

Der erstes Schritt ist ebenfalls erneut die Paketverzeichnis zu aktualisieren.

sudo apt-get update

Bei nächsten Schritt wird der Apache Server installiert und die Service wird neugestartet. Das Paket lautet: apache2

#Installation Apache2
sudo apt-get -y install apache2
#Apache2 Service neustarten
sudo service apache2 restart

Das Tastaturlayout wird noch auf Deutsch Schweiz angepasst:

#Tastaturlayout anpassen
sudo sed -i 's/XKBLAYOUT="us"/XKBLAYOUT="ch"/g' /etc/default/locale

Vergleich Vorwissen - Wissenszuwachs

Ich habe gelernt wie man mit einem VagrantFile eine VM erstellt nach seinen Bedürfnissen. Ausserdem habe ich mir sehr viel Fachwissen bezüglich Git, Markdown , Linux und Virtualisierung angeeignet. Zuerst war es für mich sehr schwierig aber mit der Zeit ging es dann. Vor dem Modul wusste ich eigentlich nichts, da ich aber nebenbei noch den Virtualisierungs ÜK hatte half mir das sehr. Ich verstehe nun schon sehr viel von der Virtualisierung und weiss wie man z.B. ein Container erstellt oder ein gesamtes Netzwerk virtualisiert.

Reflexion

Ich hatte noch nie etwas von Vagrant gehört. Deswegen hatte ich am Anfang noch viel Mühe. Eine VM zu erstellen mit einem Text-File nach seinen Bedürfnissen? Das ist sehr praktisch und zeitsparend. Was mir besonders gefiel war das Erarbeiten der Dokumentation, da ich bis anhin den Funktionsumfang von GitHub in Kombination mit Markdown nicht kannte. Da für mich alles sehr neu war, musste ich mich in einer ersten Phase erst einmal in die einzelnen Bereiche einarbeiten und Schritt für Schritt die Anweisungen befolgen. Grösstenteils hatte ich dabei keine Mühe und ich konnte bereits in geraumer Zeit einen Grossteil der Aufgaben abschliessen. Leider ging mein 1. Vagrantfile nicht richtig und ich habe mich entschieden ein anderes zu erstellen mit einem anderem Service.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages