EBKuS Virtuelle Maschine für VMware

Autor: Albrecht Schmiedel
EBKuS-VM:https://ebkus.org/downloads/ebkusvm/debian-10-ebkus-vm.zip
EBKuS-Homepage:http://www.ebkus.org
Datum: 2020-12-02

[Überschriften und Inhaltsverzeichnis sind gegenseitig verlinkt]

Inhalt

1   Was ist EBKuS-VM?

EBKuS-VM ist ein virtuelle Maschine (VM), auf dem sowohl ein Betriebssystem als auch die Anwendung EBKuS installiert sind. Nach dem Start der VM (Gastsystem) auf einem realen Rechner (Hostsystem) in einer geeigneten Virtualisierungsumgebung stehen die auf dem Gast installierten Anwendungen zur Verfügung. Die virtuelle Maschine verhält sich wie ein zusätzlicher Rechner im lokalen Netzwerk.

Die EBKuS-VM benötigt die VMware Virtualisierungsumgebung. Im einfachsten Fall steht diese in Form des VMware Player zur Verfügung, der kostenlos für Windows und GNU/Linux erhältlich ist:

Die VMware Virtualisierungsumgebung wird aber auch in Rechenzentren verwendet. So laufen sämtliche Berliner EBKuS-Installationen auf einer virtuellen Maschine wie hier beschriebenen, die vom IT-Service des Bezirksamts Friedrichshain-Kreuzberg gehostet wird.

Das Betriebssystem der EBKuS-VM ist Debian GNU/Linux 10 (buster).

Eine grafische Oberfläche gibt es nicht. Der Resourcenverbrauch ist entsprechend gering.

Im ZIP-Archiv befindet sich das Verzeichnis debian-10-ebkus-vm mit allen notwendigen Dateien, u.a.:

2   Schnellstart

Voraussetzung:

Schritte:

  1. VMware Player installieren.
  2. EBKuS-VM herunterladen und auspacken.
  3. Die im Ordner debian-10-ebkus-vm enthaltene Datei efbvm.vmx doppelklicken bzw. mit VMware Player öffnen.
  4. IP-Nummer der gestarteten EBKuS-VM ermitteln:
  • In das schwarze Fenster des Player hineinklicken und Return eingeben, bis die Aufforderung zum Login erkennbar ist.
  • Anmelden als Benutzer ebkus und dem Passwort ebkus.
  • ip a eingeben und mit Return abschicken. Die IP-Nummer erscheint im 2. Eintrag ens32 auf der dritten Zeile nach inet.
  • Durch gemeinsames Drücken der Steuerung- und Alt-Taste die VM-Konsole verlassen.
  1. In das Adressfeld des Firefox (oder auch des IE) folgende Adresse eintippen (<IP-Nummer> durch die ermittelte Nummer ersetzen!):

    https://<IP-Nummer>/ebkus/demo/cgi/do/login
    
  2. Der Browser beschwert sich, dass es sich nicht um eine sichere Verbindung handelt:

    • Chrome: "Dies ist keine sichere Verbindung"
    • Firefox: "Warnung: Mögliches Sicherheitsrisiko erkannt"
    • Edge: "Ihre Verbindung ist nicht privat"

    Dies liegt daran, dass EBKuS ein selbssigniertes SSL-Zertifikat verwendet. Sie müssen in jedem Fall "Erweitert" auswählen und das als unsicher deklarierte Ziel ansteuern. Beim nächsten Aufruf entfällt diese Warnung, da der Browser eine Ausnahme für diese Adresse speichert. Allerdings bleibt die optische Warnung in der Adresszeile des Browsers.

  3. Anmelden mit Benutzer test mit Passwort test bzw. Admin mit Passwort Admin.

  4. Enjoy!

3   Server Administration

3.1   Arbeiten auf der Kommandozeile

Grundsätzlich kann auf der EBKuS-VM nur mit der Kommandozeile gearbeitet werden, da keine grafische Oberfläche installiert ist.

Entweder man meldet sich direkt auf der virtuellen Konsole an (die einzige Möglichkeit, solange das Netzwerk nicht funktioniert), oder man verwendet ssh, was in der Regel komfortabler ist.

GNU/Linux:

ssh -l ebkus <IP-Nummer>

bzw.

ssh ebkus@<IP-Nummer>

Windows: Früher musste man das Programm putty als ssh-Client installieren, was auch heute noch möglich ist. Allerdings steht in aktuellen Windowssystemen ein OpenSSH-Client direkt zur Verfügung (muss eventuell in den Einstellungen aktiviert werden). Der Aufruf erfolgt genauso wie unter Linux.

In beiden Fällen erhält man nach der Anmeldung eine Konsole, in die man Befehle eingeben kann. Eine minimale Vertrautheit mit Befehlen wie ls, cd, rm, etc. wird vorausgesetzt.

Natürlich ist auch eine passwortlose Anmeldung möglich, wenn man die nötigen ssh-Schlüssel installiert.

Den Benutzer root für Operationen, die Administratorrechte erfordern, benötigt man nicht, da man jedem Befehl sudo voranstellen kann. Editieren einer Datei mit Administratorrechten:

sudo nano /etc/sshd_config

3.2   Benutzer und Passwort

Für die Arbeit mit EBKuS ist ein Benutzer ebkus eingerichtet. Das Passwort ist ebenfalls ebkus, das man mit dem Befehl passwd ändern kann.

Tip: Wenn man wiederum ein "einfaches" Passwort haben möchte, sollte man als Administrator das Passwort wechseln:

sudo passwd ebkus

Der Benutzer ebkus hat Administratorrechte, d.h. er kann Befehle durch voranstellen von sudo als Administrator ausführen, wobei er beim ersten Mal (in einer gewissen Zeitspanne) nach seinem eigenen Passwort gefragt wird.

3.3   Netzwerkkonfiguration

Für die regelmäßige Benutzung von EBKuS ist es unerlässlich, dass die EBKuS-VM immer dieselbe IP-Nummer hat. Ansonsten müsste man beim Zugriff über den Browser immer eine andere Adresse eintragen.

3.3.1   DHCP

Die VM ist so vorkonfiguriert, dass sie ihre IP-Adresse über einen vorhandenen DHCP-Server bezieht. Dies kann eine Weile dauern. Evt. erscheint der Login-Prompt der VM, bevor eine IP-Adresse zugewiesen ist.

Damit der DHCP-Server der VM immer dieselbe IP-Adresse zuweist, muss ein entsprechender Eintrag in die DHCP-Konfiguration vorgenommen werden. Dabei wird die Mac-Adresse der (virtuellen) Netzwerkkarte der EBKuS-VM verwendet. Ein solcher Eintrag ist bei vielen Routern möglich, auch bei solchen, die im privaten Bereich eingesetzt werden. Die Mac-Adresse des virtuellen Servers findet sich in der Datei efbvm.vmx in der Zeile:

ethernet0.generatedAddress = "00:0c:29:38:96:46"

3.3.2   Statische IP-Nummer

Die andere Möglichkeit besteht darin, direkt in der EBKuS-VM eine statische IP-Adresse zu konfigurieren. Dazu muss die Datei /etc/network/interfaces in der VM editiert werden (als Administrator, d.h. der Editor ist immer mit vorangestelltem sudo aufzurufen!).

Dynamische Konfiguration:

# The primary network interface
allow-hotplug ens32
iface ens32 inet dhcp

# auto ens32
# iface ens32 inet static
#     address 192.168.178.68
#     netmask 255.255.255.0
#     gateway 192.168.178.1
#     broadcast 192.168.178.255

Statische Konfiguration mit z.B. mit 192.168.178.68:

# The primary network interface
# allow-hotplug ens32
# iface ens32 inet dhcp

auto ens32
iface ens32 inet static
    address 192.168.178.68
    netmask 255.255.255.0
    gateway 192.168.178.1
    broadcast 192.168.178.255

Damit die Veränderungen in Kraft treten, muss das Netzwerk neu gestartet werden:

sudo systemctl restart networking.service

Die wirksame (dynamisch zugewiesene bzw. statische) IP-Adresse erfährt man mit dem Befehl ip a.

Nach der korrekten Installation und dem Start der VM muss auf dem Hostsystem (oder auf einem anderen Rechner im lokalen Netz) ping <IP-Nummer> funktionieren, wobei <IP-Nummer> die IP-Adresse der VM ist.

3.4   Shares

Auf EBKuS-VM ist eine Samba-Freigabe mit dem Namen ebkus für das Verzeichnis /home/ebkus ist vorkonfiguriert (/var/lib/samba/usershares/ebkus). Benutzer und Passwort ist ebkus. Dieses Verzeichnis lässt sich auf dem Hostsystem oder auf einem anderen Rechner im lokalen Netzwerk als Netzlaufwerk wie eine Windows-Freigabe einbinden:

  • Windows: im Explorer als Netzlaufwerk verbinden: \\<IP-Nummer>\ebkus

Auf einem anderen Linuxsystem muss das Paket cifs-utils installiert sein.

  • Ubuntu Linux: im Datei-Browser: Datei --> mit Server verbinden: smb://<IP-Nummer>/ebkus

  • Linux Kommandozeile: (<username> und <groupname> sind der lokale Benutzer und die lokale Gruppe, auf die gemapped werden soll):

    mount -t cifs //<IP-Nummer>/ebkus /mnt/ebkus -o username=ebkus,password=ebkus,workgroup=WORKGROUP,iocharset=utf8,uid=<username>,gid=<groupname>
    
  • Linux in /etc/fstab:

    //<IP-Nummer>/ebkus /mnt/ebkus cifs username=ebkus,password=ebkus,workgroup=WORKGROUP,iocharset=utf8,uid=<username>,gid=<groupname> 0 0
    

Das Passwort für die Freigabe kann man wie folgt ändern:

sudo smbpasswd ebkus
... [man wird 2x aufgefordert, das neue Passwort einzugeben]

Man kann auch auf der EBKuS-VM freigegebene Dateisystem von anderen Rechnern im lokalen Netzwerk einbinden, sowohl auf der Basis von Samba/Cifs als auch NFS. Beispiele find sich in der Datei /etc/fstab.

3.5   Dateien editieren

Auf der EBKuS-VM selbst gibt es nur die text-basierte Editoren emacs, vi und nano. Nano ist vollständig selbstdokumentierend und daher am einfachsten, wenn man die anderen nicht kennt.

3.6   Log-Dateien

Da verschiedene Dateien (insbesondere Log-Dateien) mit der Zeit sehr viel Platz einnehmen können, ist es für einen lange Zeit laufenden Server wichtig, dass automatisch und regelmäßig solche Dateien komprimiert und nach einer gewissen Zeit auch gelöscht werden. logrotate ist hierfür das einschlägige Programm auf einem GNU/Linux-System. Die EBKuS-VM ist so konfiguriert, dass sie ohne manuelle Wartung auf diesem Gebiet dauerhaft laufen kann.

Voraussetzung ist jedoch, dass die Maschine zu den Zeiten läuft, wo diese Wartungsprozesse aufgerufen werden. Diese Zeiten sind in der Datei /etc/crontab definiert:

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 17   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 17   * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 17   1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Die 17 in der zweiten Spalte unter h definiert die Stunde, in der die Wartungsskripte aufgerufen werden. Zu dieser Zeit müsste EBKuS-VM also laufen. Hier kann man eine genehme Stunde eintragen.

Im Notfall kann man auch gelegentlich per Hand das entsprechende Skript anstossen:

sudo logrotate  /etc/logrotate.conf

Die Log-Dateien der EBKuS-Instanzen (siehe unten) (/home/ebkus/ebkus_installation/ebkus/<Instanzname>/<Instanzname>.log) sind in das logrotate-Verfahren eingebunden (Konfigurationseinträge im Verzeichnis /etc/logrotate.d/). Log-Dateien für EBKuS-Instanzen werden 12 Wochen aufbewahrt, ehe sie gelöscht werden.

3.7   Updates

Ein gelegentliches:

sudo apt-get update

gefolgt von:

sudo apt-get upgrade

hält eine EBKuS-VM mit Internetzugang auf dem neuesten Stand, insbesondere was Sicherheitslücken betrifft. Unattended-upgrades sind nicht eingerichtet.

4   EBKuS-Administration

Obwohl das EBKuS-Handbuch hinsichtlich der Anwendung sich nicht auf dem neuesten Stand befindet, ist das Kapitel Installation nach wie vor aktuell. Alles, was dort für die GNU/Linux-Installation gesagt wird, gilt auch für die EBKuS-VM. Hier wird nur auf die Besonderheiten der EBKuS-VM eingegangen.

Das EBKuS-Handbuch findet man lokal als Datei unter:

/home/ebkus/ebkus_installation/ebkus/doc/EBKuS_Handbuch.html

bzw. über den Browser unter:

https://<IP-Nummer>/ebkus/doc/EBKuS_Handbuch.html

oder auch im Internet unter http://ebkus.org/doc/EBKuS_Handbuch.html

4.1   Verzeichnisse

Die gesamte EBKuS-Installation findet sich beim Benutzer ebkus unter /home/ebkus.

Verzeichnisse (siehe Handbuch Kapitel 5.3):

  • Installationsverzeichnis: /home/ebkus/ebkus_installation/
  • Homeverzeichnis: /home/ebkus/ebkus_installation/ebkus/
  • Backupverzeichnis: /home/ebkus/backups

4.2   Installierte EBKuS-Instanzen

Auf der VM sind vier EBKuS-Instanzen konfiguriert:

  • demo (mit Demodaten)
  • demo_berlin (mit Demodaten und dem Berliner Straßenkatalog)
  • demo_braunschweig (mit Demodaten und Braunschweiger Straßenkatalog)
  • test1 (ohne Demodaten)

Die Instanzen werden automatisch beim Hochfahren gestartet und sind auf dem Host-Rechner und im lokalen Netz unter folgender URL ansprechbar:

https://<IP-Nummer>/ebkus/<Instanzname>/

<IP-Nummer> ist die IP-Adresse der EBKuS-VM.

Anmelden bei den drei Demo-Instanzen:

  • als Administrator: Benutzer: Admin, Passwort: Admin
  • als Bearbeiter: Benutzer: test, Passwort: test

Anmelden bei der leeren Instanz test1 ist nur als Administrator möglich:

  • Benutzer: Admin, Passwort: Admin

Als Administrator können dann weitere Benutzer eingerichtet werden.

4.3   Instanzen starten/anhalten/Status abfragen

Zusätzlich zu den im Handbuch beschriebenen Verfahren gibt es ein Skript ebkusctl, mit dem sich die einzelnen EBKuS-Instanzen steuern lassen:

ebkusctl <Instanzname oder all> <start|restart|stop|status>

z.B.:

ebkusctl help
ebkusctl all stop
ebkusctl demo_berlin status

Alle Instanzen sind standardmäßig als Dienste eingerichtet, die beim Hochfahren des Systems automatisch gestartet und beim Herunterfahren automatisch angehalten werden. Zur Fehlersuche empfiehlt sich das im Handbuch beschriebene Verfahren, z.B. für die Instanz demo_berlin:

cd /home/ebkus/ebkus_installation/ebkus/demo_berlin
./status.py
./stop.py
./start.py --console

Eine auf diese Weise gestartete Instanz schreibt ihre Ausgabe auf die Konsole anstatt in die Log-Datei.

4.4   Einrichten einer neuen EBKuS-Instanz

Siehe im Handbuch besonders die Kapitel Konfiguration und configure.py.

  1. Mit einem Texteditor die neue Instanz in die Konfigurationsdatei eintragen:

    cd /home/ebkus/ebkus_installation/ebkus/
    nano ebkus.conf
    

    Zu beachten:

    • Wenn der Instanzname mit demo_ anfängt, werden automatisch Beispieldaten generiert. Eine solche Instanz ist für die Produktion ungeeignet.

    • Unbedingt eine noch nicht verwendete Port-Nummer für die neue Instanz vergeben!

    • Hinweise auf neue, im Handbuch noch nicht dokumentierte Konfigurationsvariablen finden sich in der Versionsgeschichte bzw. in der Datei:

      /home/ebkus/ebkus_installation/ebkus/VERSIONS_GESCHICHTE.html
      
  1. Das configure.py-Skript ausführen:

    cd /home/ebkus/ebkus_installation/ebkus/
    ./configure.py <Instanzname>
    
  2. Apache neu starten:

    sudo apache2ctl restart
    
  3. Instanz starten:

    ebkusctl <Instanzname> start
    

4.5   Löschen einer EBKuS-Instanz

Siehe im Handbuch das Kapitel uninstall.py.

  1. Instanz anhalten:

    ebkusctl <Instanzname> stop
    
  2. uninstall.py-Skript ausführen:

    cd /home/ebkus/ebkus_installation/ebkus/
    ./uninstall.py .. <Instanzname>
    
  3. Mit einem Texteditor die gelöschte Instanz aus der Konfigurationsdatei entfernen:

    cd /home/ebkus/ebkus_installation/ebkus/
    nano ebkus.conf
    
  4. Apache neu starten:

    sudo apache2ctl restart
    

4.6   Datenbank Passworte

Die Datenbank-Passworte für die EBKuS-Instanzen stehen in der Konfigurationsdatei ebkus.conf. Der Datenbank-Benutzer root hat kein Passwort. Ein Sicherheitsrisiko stellt das nicht dar, da die Datenbank so konfiguriert ist, dass sie nur lokal von der EBKuS-VM aus angesprochen werden kann.

Direkter shell-Zugriff auf die Datenbank:

mysql -uroot

4.7   Backups

Zusätzlich zu dem im Handbuchkapitel Datensicherung beschriebenen Verfahren gibt es das Skript ebkusdump, das z.B. so aufgerufen werden kann:

ebkusdump all /home/ebkus/backups

Damit wird für jede Instanz eine Datensicherung in das angegebene Backup-Verzeichnis geschrieben. Weitere Aufrufmöglichkeiten:

ebkusdump help
ebkusdump demo_berlin /home/ebkus

Wie im Handbuchkapitel Datensicherung beschrieben, kann man einen Cron-Job einrichten, der täglich automatisch ein Backup für alle Instanzen in das Backup-Verzeichnis durchführt. Im crontab für den Benutzer EBKuS stehen bereits die Zeilen:

# Jeden Tag 11:31h ausfuehren
#31 11 * * * $HOME/bin/ebkusdump all $HOME/backups &> /dev/null

Wenn man von der letzten Zeile das Kommentarzeichen entfernt, wird täglich 11:31 eine Sicherung aller Instanzen durchgeführt.

Crontab ansehen/verändern:

crontab -l
crontab -e

Wenn ein solches automatische Backup eingerichtet wird, ist natürlich dafür zu sorgen, dass die Backups auf ein physisch getrenntes Medium kopiert werden, was allerdings auch automatisiert werden könnte.

Weiterhin müssen im Backup-Verzeichnis alte Backups regelmäßig gelöscht werden, damit der Festplattenbedarf nicht ständig wächst. Das Verzeichnis /home/ebkus/backups ist nicht in logrotate-Verfahren eingebunden!