Dieser Workshop richtet sich an interessierte Teilnehmer, die tiefer in das Betriebssystem Linux eintauchen möchten.

Das Seminar soll die Informationen zum Thema "Linux" (siehe Modul des FITSN) vertiefen und fortführen: Linux also als Serversysteme und Diensteanbieter in Netzwerken. Hierzu werden wir uns alle notwendigen Themen für diese Einsatzzwecke vornehmen und dann die Serverdienste implementieren und nutzen.

VMs linux aufbau sem 20181026 800px

Für den Einsatz in unserem (virtuellen) Firmennetzwerk und für die nötigen Infrastrukturen werden wir verschiedene Standard-Distributionen einsetzen:

  • openSUSE (Leap 15 - als: Client mit KDE)
  • Debian (Stretch 9.5 - als: NAT-Router, Server, Client)
  • centOS (7.5.1804 - als: Server, Client)
  • Windows 10 (1803 - nur als Client ;-)

Mögliche Inhalte::

  • Infrastruktur (DNS- / DHCP-Server / NAT-Routing)
  • Linux als File-, Print- oder LDAP-Verzeichnis-Server
  • Web-Applikationen (Apache2 / FTP-Server, LAMP)
  • Sicherheit / Firewalling (Netfilter/iptables)
  • Systemüberwachung und Network Monitoring

Hier die Rahmendaten unseres Seminars:

Ort: VHS Braunschweig, Raum 2.11
Zeiten: Mo, 29.10. bis Fr, 02.11.2018; jeweils mit TN koordiniert
(eigentliche Rahmenzeit: 08.30 - 16.00 Uhr)
Anm.: neuer Feiertag Mi. 31.10.2018 wird mit TN im Seminar koordiniert

Ich werde unser Seminar in diesem Beitrag wieder ausführlich begleiten...
Ihr Trainer Joe Brandes

 

Mo., 29.10.18

Montag, 29.10.18, 08.30 - 16.30 Uhr

  • Orientierungsphase, TN-Themen
    Zeitenkoordination wegen "neuem" Feiertag Mittwoch 31.10.2018!
  • Distributionen und Virtualisierungen
    Debian - Nummer 1 bei den Server-OS für Web-Services und Co
    Ableger: Ubuntu, Ubuntu-Varianten (Kubuntu, Edubuntu, Mythbuntu, ...)
    Red Hat - Firma mit Serverlizenzen Red Hat Enterprise Linux
    Ableger: Fedora mit den offenen/freien SW-Paketen, CentOS
    Novell - SLES Suse Linux Enterprise Server
    Ableger: openSUSE - freie Community-Variante (siehe de.opensuse.org) - mit Version 42.1 hat Novell die Entwicklungspfade von SLES und openSUSE zusammengelegt
    (Versionen: → 11.x → 12.x → 13.1 - 13.2 → Leap 42.1 - 42.2 - 42.3 → Leap 15.0)
    DistroAbleger der DistroPaketmanagement
    Red Hat
    (Link)
    Fedora (Desktop) bzw.
    CentOS (Red Hat Server)
    Kaufversion: RHEL
    RPM (Red Hat Package Management)
    Standardtool: rpm (ohne Auflösung Abhängigkeiten),
    yum
    Novell (Suse)
    (Link)
    openSUSE (Link)
    Kaufversion: SLES
    bzw. SLED
    RPM
    mit YaST2-SW-Verwaltung, zypper, yum
    Debian
    (Link)
    Ubuntu(s),
    Linux Mint
    DEB (Debian Pakete)
    Standardtool: dpkg (ohne Auflösung Abhängigkeiten)
    APT-Tools: apt, (klassisch: apt-get, apt-cache,
    aptitude, ...

    VirtualBox Host-OS: (Entscheidung für "Suse"-Distro als Host)
    recht gute Einbindung in Paketverwaltung und einfache Funktionalität "out-of-box"
    Entscheidung zum "Virtualisieren"
    + Jeder TN bekommt sein eigenes Netz / seine eigene Infrastruktur
    + Einfache Bereitstellung von Installmedien als Downloads/ISOs
    + TN können gesamtes "BU-Firmen-Netz" am Ende des Seminars mit nach Hause nehmen!

  • Installation von VirtualBox-Host: openSUSE Leap 15.0 (64-Bit)
    Install-Medien: (TN bekommen aktuelle Install-DVD)
    CD (Netzwerk-Install; aktuell ca. 100 MB; bei Installation werden alle Pakete aktuell nachgeladen: ca. 3-4 GB),
    DVD (auch als Live-DVD),
    Netzwerk-Quellen (FTP, HTTP, NFS, SMB/CIFS, PXE/TFTP);
    immer auch Quellen in 32- und 64-Bit und für andere Hardware (also nicht nur Intel x86 bzw. x86_64)
    Hinweis: Bereitstellung von Checksums (sha256) zur Verifizierung der Unversehrtheit und Originalität der Downloadarchive (Isos)
    Spezialität von openSUSE: YaST - Yet another Setup Tool (Installations- und Setup/Konfigurationswerkzeug)
  • Links zu openSUSE: (im Seminar dann auch für die anderen Distros)
    Portal: https://www.opensuse.org/  
    Wiki deutsch: https://de.opensuse.org/Hauptseite  
    Wiki Leap 42.3: https://de.opensuse.org/Portal:42.3    
    Leap Download: https://software.opensuse.org/distributions/leap   
    Documentation english: https://doc.opensuse.org/  
    Upgrades: https://de.opensuse.org/SDB:Distribution-UpgradeDistribution-Upgrade  
    (kürzer/besser: engl. Variante des Upgrade DB Eintrags)
    Tumbleweed rolling upgrades: https://software.opensuse.org/distributions/tumbleweed       
  • Partitionen
    Gerätenamen /dev/sda (für den ersten Datenträger - dann /dev/sdb, ...)
    eingerichtete Partitionen mit Nummern: /dev/sda1, /dev/sda2, ...
    Anm. bei MBR dann /dev/sda5 als erste logische Partition (log. LW) in einer erweiterten Partition
    früher bei EIDE-Geräten: /dev/hda; die sda-Bezeichner dann für SCSI, SATA und heute auch USB-Medien
    Alternativ: Verwendung von Geräten-ID-Bezeichnern (siehe später GRUB oder auch /etc/fstab )
    Aktuelle Distributionen: UUID als eindeutige Bezeichner für die Partitionen/Datenträgerbereiche
    Vorteil: dann werden die Datenträgerbereich auch sauber gemountet, wenn diese mal statt auf /dev/sda2  auf /dev/sdb1 liegen sollten!
    heutige Installation mit folgenden Partitionen angelegt: (ein Screenshot für eine beispielhafte Installation ist unten angefügt)

    Abweichung von openSUSE-Install-Vorschlag für den VirtualBox-Host:
    openSUSE würde gerne BtrFs als Dateisystem für das System ( Ordner /  bzw. auch  /boot)  und xfs für die Daten (siehe /home ) vorschlagen, aber wir wollen hier die "klassischen" Ext-Dateisysteme Ext4 in sehr einfacher Partitionierung zur optimalen Nutzung unserer 120 GB Wechsel-SSDs nutzen.

    btrfs partitionierung os 150

    Kurze Erinnerung an Dateisysteme:
    ext2, ext3 (ist ext2 mit journaling FS), ext4 (klassisches Linux-Standard-FS), xfs, BtrFS, ReiserFS, Fat16, Fat32 (VFat), NTFS
    grobe Einteilung/Partitionierung:
    hier im Seminar: GPT Verwaltung der SSD mit UEFI (Anm./Erinnerung: bei MBR gibt es die 4 klassischen primären/erweiterten Partitionen):
    Anleitung für Systempartitionen in diesem Seminar:
    os leap vbox host partitions 800px
    Bereitgestellte Wechsel-SSD: 120 GB bzw. 111,8 GiB (per UEFI/GPT)

    MountNutzungEigenschaften
    /boot/efi EFI-Partition Größe: 500 MiB  (siehe ggf. Meldung YaST)
    eig. min. 100 - 250 MiB (nach UEFI-Norm empfohlen)
    Filesystem: FAT32  (auch als VFat bezeichnet)
    Gerät: /dev/sda1  (ESP - EFI System Partition)
    Bootflag und möglichst Anfang der Partitionen
    Anm.: Windows EFI kann mitgenutzt werden!
    / Root-Partition Größe: 105 GiB
    Gerät: /dev/sda2 (Root Partition)
    Filesystem: ext4
    swap Auslagerungspartition,
    VMM Virtual Memory Management
    Größe: ca. +6 GiB
    Gerät: /dev/sda3 (Swap Partition)
    Filesystem: swap
    Erste Analyse und Tools rund um unsere Partitionen:
    lsblkfdisk -l /dev/sda , gdisk (siehe GPT) , cfdisk 
    möglicherweise Problem bei Darstellungen mit Konsolentools *disk:
    Tipp: falls Umlaute und Sonderzeichen falsch dargestellt werden: env LANG=C cfdisk  
    Erklärung: in Umgebung (env) wird als Sprache C eingestellt, was der Sprache/Kodierung des Programms entspricht (hier "englisch")
  • openSUSE System aktualisiert
    (Anm.: im Seminar: DVD von August 2018 -> ca. 100 Pakete zu aktualisieren plus neuer/aktualisierter Kernel ...)
    Aktualisierungs-Gadget" (Package-Kit) aus der Kontrollleiste - Anm.: Kollision mit Shell-Tools möglich, da dieselbe Bibliothek (libzypp) genutzt wird!
    Vorgriff auf Befehlszeile: Aktualisierung mit Tool zypper (siehe libzypp Unterstützung; zypper update )
    Anm.: "stabile" Desktop-Umgebungen (KDE5 Plasma) manchmal erst nach Neustarts (siehe auch Installation Nvidia-Treiber Dozent-PC 17);
    Screenshots: Alternative "Spactacles" in openSUSE KDE installiert (Anm.: KSnapshot für Bildschirmfotos mit Druck-Taste wurde in 42.1 in Rente geschickt - removed)
    Grundkonfiguration: automatische Bildschirmfoto-Dateien mit Umschalten + Druck
  • Netzwerk-Analyse
    Erste Netzwerkanalyse mit Linux:
    IP-KonfigurationShellaufrufe
    IPv4-/IPv6-Adresse
    Subnetmask
    ip address show   (zeigt immer alle NICs)
    ip a s   (kurze Variante)
    Tool ifconfig nicht mehr standardmäßig installiert:
    /sbin/ifconfig
    Standardgateway
    (bzw. Router)
    /sbin/route -n  
    hier: in Spalte Flags das G suchen - dann Spalte Router
    ip route show
    ip r s   (kurze Variante
    DNS-Server cat /etc/resolv.conf
    hier: Zeile mit nameserver analysieren
    aber: Datei wird von den Netzwerkkonfigurations-Diensten
    Wicked (bzw. NetworkManager) manipuliert
    keine manuelle Änderung gewünscht!
    Natürlich gibt es auch diverse Tools/Skripte, die diese Aufgaben/Aufrufe zusammenlegen, aber wir wollen auch immer die Basics bemühen und "Linux" verstehen.
  • Topologien und Firmennetz planen
    Enwurf mit TN skizziert (siehe LibreOffice Draw Entwurf)
    Wichtig: Suffix/Prefix für Techniken mit Hilfe der PC-Platznummern (siehe Dozentenarbeitsplatz: 17)
    Beispiel:
    geplante Domain (FQDN): firma17.local 
    Rechnernamen: router17 , server17 
    Firmennetz (IPv4): 192.168.17.0 / 24  
    plan topologie dom 2018 800px
    Anm.: im Laufe des Seminars erarbeitet und aktualisiert.
  • Netzwerkkonfigurationen (eine Übersicht)
    Übersicht über die wichtigsten Ordner und Dateien::
    /etc/networks  (Netzwerke konfigurieren)
    /etc/hosts   (statische Namensauflösungen)
    /etc/resolv.conf   (DNS; Inhalt gibt Aufschluss über Konfigurationstechnik)
    a) Debian "Rohinstallation"
    Erklärung über Debian Wiki zur Netzwerkkonfiguration (Link)
    /etc/network/interfaces  (Konfiguration der Netzwerkadapter /dev/eth0, eth1 bzw. enp0s3, ... mit statischen oder DHCP Konfigurationen)
    b) Debian "Komplettinstallation" (also inkl. Desktop Gnome) nutzt den NetworkManager
    hier übernimmt die Konfiguration ein (Gnome-)Tool als Grafisches Frontend und der Daemon NetworkManager
    /etc/NetworkManager  (Hauptverzeichnis für Konfigurationen)
    /etc/NetworkManager/system-connections/verbindungsdatei   (Datei mit Konfiguration z.B. Wired Connection 1)
    c) Speziell bei openSUSE:
    Neu seit openSUSE 13.2: Wicked Service als Standardinstallation auf Desktop-Systemen
    (Anm.: bei Notebooks weiterhin NetworkManager als Standard)
    d) netconfig  (bei RHEL 5.5 oder eben auch ab openSUSE 42.1 Serverminimalinstallation)
    Konfigurationen in /etc/sysconfig/network-scripts  in Dateien wie ifcfg-eth0ifcfg-eth1, ...  (beispielhafte Installation)
    entweder manuell bearbeiten, oder entsprechende Tools der Linux-OS nutzen - hier also natürlich gerne auch wieder YaST bei Suse nutzen
  • VirtualBox Host
    ... auf openSUSE Leap 15 System bereitgestellt/installiert.
    Host-NIC: eth0 (IP: 10.100.211.117 / 19 ; StdGW / DNS: 10.100.200.1 )
    Installation über Standardpaketquellen (aktuell: VirtualBox 5.2.18)
    Standarduser in Gruppe "vboxusers" aufnehmen (und natürlich den User neu anmelden ;-)
    Praxis: Installation von Debian Stretch 9.5 Betriebssystemen mit Hilfe einer aktuellen "NetInstall-ISO"
    Für die Installationen nutzen wir bei tasksel (Paketauswahl bei Debian) nur die Systemwerkzeuge ohne weitere Installationen (nur 130 Pakete!).
    Tipp/Hinweis: am Seminarende lässt sich die gesamte virtuelle Übungsfirma mit allen Maschienen als ein Ordner mit nach Hause nehmen.
  • Debian - Grub und Terminalauflösungen
    in /etc/default/grub  eintragen:
    ...
    GRUB_GFXMODE=1024x768
    GRUB_GFXPAYLOAD_LINUX=keep
    ...
    dann mit update-grub  die Grubkonfiguration erneuern und reboot  .
    Auf Trainer-VMs kann für die bessere Lesbarkeit am Beamer noch mit dpkg-reconfigure console-setup  noch eine massigere Schrift für die Konsole definiert werden.
  • VM: Router (Debian Stretch 9.5 Minimalinstallation)
    installiert, aktualisiert und konfiguriert.
    Hostname: router17
    Netzwerkadapter (hier für Router natürlich zwei Adapter):
    WAN-NIC (am VHS BS Netz per Netzwerkbrücke):
    enp0s3  (IP: 10.100.200.231 / 19 ; StdGW / DNS: 10.100.200.1 )
    LAN-NIC (per Internem VM-Netz "intnet"):
    enp0s8  (IP: 192.168.17.1 / 24 - statisch konfiguriert)
  • VM: Server (Debian Stretch 9.5 Minimalinstallation) 
    per NAT als VM installiert, aktualisiert und konfiguriert.
    Hostname: server17 
    Netzwerkadapter auf VM-Netz "intnet" geändert und statisch zu Testzwecken konfiguriert
    enp0s3  (IP: 192.168.17.10 / 24)
    Anm.: nur Netzwerken im "VM-Netz 192.168.17.0 / 24" möglich - keinerlei Routing durch router17 in Richtung "WAN / Internet"
  • Übungen: Netzwerktechnik manuell/klassisch konfigurieren
    Konfiguration der Debian-Systeme auf klassische statische Konfigurationen mit Hilfe der
    Konfigurationsdatei /etc/network/interfaces
    hier Auszug aus der Konfiguration: (Anm.: die Zeile auto ... ist heute oft verschwunden)
    ...
    auto enp0s3
    allow-hotplug enp0s3
    iface enp0s3 inet static
    address 192.168.17.10
    netmask 255.255.255.0
    gateway 192.168.17.1
    ...
    Für die Konfiguration mittels DHCP ist es:
    ...
    auto enp0s3
    allow-hotplug enp0s3
    iface enp0s3 inet dhcp
    ...
    Für diese Netze bitte auch Tools kennen: ifup, ifdown 
    Beachten: bei Verwendung von NetworkManager (z.B. unter Gnome-Desktop) oder netconfig dann bitte abweichende Konfigurationsdateien beachten!
    Über die /etc/resolv.conf  Kommentare kann man recht schnell die genutzte Technik erkennen.
  • DHCP (Paket: isc-dhcp-server)
    Installation auf router17  - wichtig: an richtigem Adapter (LAN-Seite) zur Verfügung stellen!
    Vorbereitungen (s.o.) - Konfiguration des Routers auf statische LAN-IP: 192.168.17.1 / 24  
    Installation mittels apt install isc-dhcp-server  - die Installation quittiert am Ende Fehler, da saubere Konfigurationen des DHCP-Servers noch fehlen.
    Wir beginnen mit der Konfiguration des NIC-Adapters für DHCP:
    /etc/default/isc-dhcp-server   (hier: lanseitiger enp0s8 von router17)
    Die eigentliche Konfiguration liegt in Standardverzeichnis:
    /etc/dhcp/dhcp.conf
    Beispieleinträge / Konfigurationen (wurden vorher sauber bei Entwurf geplant)
    option domain-name "firma17.local";
    option domain-name-servers 8.8.8.8, 10.100.200.1;
    ...
    subnet 192.168.17.0 netmask 255.255.255.0 {
      range 192.168.17.100 192.168.17.150;
      option routers 192.168.17.1;
    }
    Kurzanleitungen im Web (Link) für Debian und den ISC DHCP Server
    Der DHCP-Daemon lässt sich mit den üblichen Target/Runlevel Tools analysieren:
    systemctl status|restart|stop|enable|disable isc-dhcp-server   (Target/Dienst status|...)
    journalctl -u isc-dhcp-server   (Journal / Logging auslesen - Anm.: nicht persistent!)
    Übersicht zu Releases des DHCP-Servers:
    /var/lib/dhcp/dhcpd.releases   (alle Infos inkl. MACs oder Lease-Times)
    Übung: nach DHCP-Server Implementierung Test mit server17 und Analyse der IP-Konfigurationen

 

  • Debian Stretch 9.5Debian Stretch 9.5
  • VirtualBoxVirtualBox
  • VM-Net intnetVM-Net intnet
  • VM mit NAT-AdapterVM mit NAT-Adapter
  • DHCP KonfigurationenDHCP Konfigurationen
  • DHCP ScopeDHCP Scope

 

Di., 30.10.18

Dienstag, 30.10.18, 08.30 - 17.30 Uhr

  • Rekapitulation, TN-Fragen
    Ausführliche Rekapitulation von Tag 01!
  • Diskussion: Aktualisierung des VirtualBox openSUSE Leap 15 Host
    (zufällig) aktuell ein Update für die VirtualBox von 5.2.18 auf 5.2.20 verfügbar - wir entscheiden keine Aktualisierung durchzuführen, ohne vorherige Tests oder Absicherungen (Images / Backups)
  • Tipps & Tricks & Anm. (über den Tag)
    root-Bash: auskommentieren von /root/.bashrc  Zeilen für Syntaxhighlighting/Colors in Shell
    Schriftgröße (bei CentOS, openSUSE) in Terminal mit setfont sun12x22  manuell vergrößern
    Schriftgröße (bei Debian) in Terminal mit dpkg-reconfigure console-setup  umstellen (persistent)
    Art der Netzwerkkonfiguration anhand der /etc/resolv.conf  erkennen
    CD/DVD-ISO: mit dd if=/dev/sr0 of=/tmp/suse-dvd.iso  (Gerätebez. per lsblk analysieren)
    Bücher: s. Rheinwerk Verlag (Linux) - Linux Server Handbuch ab 23.11.2018, R. Spenneberg "Linux-Firewalls" (2011), Eric Amberg "Linux Server mit Debian 7 Wheezy" (2014)
  • NAT-Routing mit Netfilter / iptables
    Eigentliche Technik ist Netfilter: eine im Kernel implementierte Softwareschicht
    Mit iptables kann man Regelsätze / Konfigurationen für verschiedene Tabellen erzeugen: filter, nat, mangle, raw
    Die Tabellen können mit Richtlinien (Policies) zum Behandeln von Paketen versehen werden und haben Ketten (chains) für die Paketvermittlungen.
    Wir interessieren uns beim NAT-Routing für die Tabelle filter (chain FORWARD) und die Tabelle nat (chain POSTROUTING):
    netfilter iptables 20181031 800px
    Wir arbeiten erst einmal mit einfachen manuellen Inbetriebnahmen der nötigen NAT-Routing-Regeln
    Für die folgenden Befehle bitte die richtigen Router-NICs beachten:
    (Beachten: hier allgemeine Konfigurationsdaten - nicht die aus dem Seminar!)
    eth1 : NIC für die WAN-Seite (192.168.3.201 / 24 ; StdGW: 192.168.3.1; DNS: 192.168.3.1)
    eth0 : NIC für die LAN-Seite (10.0.0.1 / 8)
    1) Forwarding für den Linux-Kernel aktivieren - der Kernel denkt sonst gar nicht daran, Pakete zwischen den Adaptern weiterzuleiten:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    bzw. persistent - also nachhaltig - in /etc/syctl.conf  einstellen:
    Zeile:  net.ipv4.ip_forward = 1  auskommentieren (Logik/Reihenfolge wie in /proc/sys/... mit Punkten getrennt)
    und Rechner neustarten
    2) Forwarding von Paketen in "table filter" für beide Richtungen (LAN -> WAN und WAN -> LAN):
    Anm.: Angabe von -t filter kann als Standardtabelle auch weggelassen werden!
    iptables -t filter -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A FORWARD -i eth0 -o eth1 -j ACCEPT
    Die Einstellung -m state bezieht sich auf die Fähigkeit der Netfilter-Kernel-Technik mittels Modul conntrack (Connection Tracking) Pakete auf Grund Ihrer Verbindungseigenschaften (hier: "in Beziehung" und "etabliert") akzeptiert werden können, ohne weiter untersucht zu werden!
    3) Für die Anbindung eines LAN mit mehreren Hosts müssen wir jetzt noch das NAT-Routing (Masquerading - Kohnle - Masquerading - Erklärung) ermöglichen:
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    Anm.: das sind nur sehr einfache Grundkonfigurationen, die bei weitem nicht alle Sicherheitsaspekte abdecken. (Einblick z.B. bei Red Hat Doku)
    Löschen von Tabellen: iptables -F  bzw. iptables -F -t nat 
    Übung: Umsetzung der Regeln gerne als Skript: (touch nat-routing.sh und chmod u+x nat-routing.sh )
    #!/bin/bash
    IPTABLES="$(which iptables)"
    WANNIC="enp0s3"
    LANNIC="enp0s8"
    $IPTABLES -t filter -A FORWARD -i $WANNIC -o $LANNIC -m state --state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -t filter -A FORWARD -i $LANNIC -o $WANNIC -j ACCEPT
    $IPTABLES -t nat -A POSTROUTING -o $WANNIC -j MASQUERADE
    Tipp: iptables Regelsätze auch nach Neustarts und ohne Skriptverwaltungen mit Hilfe von iptables-persistent Paket!
    Nach der Installation:  apt install iptables-persistent 
    kann man mittels: iptables-save > /etc/iptables/rules.v4 
    die Regeln nachhaltig machen (persistieren)!
  • deb Paketmanagement
    *.deb (vs. *.rpm mit openSUSE YaST2-Tool, zypper, yum und Basistool rpm)
    Übersicht in Extra-Beitrag auf dieser Website: Paketmanagements RPM/yum/zypper vs. DEB/apt-Tools  oder Wiki Ubuntuusers 
    Tool dpkg (Basistool)
    Achtung: dpkg löst keine Abhängigkeiten auf - dpkg kann diese nur erkennen!!
    dpkg Aufrufe: (bitte genau auf Groß/Kleinschreibungen achten und Einsatz bei installierten bzw. nicht-installierten Paketen)
    dpkg -i  # Install-Infos für installierte Pakete bzw. installieren
    dpkg -I # Install-Infos für nichtinstallierte Pakete
    dpkg -c # Dateien für nichtinstalliertes Paket
    dpkg -s # Infos über installiertes Programm
    dpkg -L # Dateien für installiertes Paket
    Paket entfernen:
    dpkg -r <paketname>  # Konfigurationen bleiben
    dpkg -P <paketname> #ALLES inkl. Konfiguration entfernen
    Pakete auf System auflisten:
    dpkg -l
    dpkg -l | less
    dpkg -l | grep openssh
    Pakete suchen auf System:
    dpkg -S mount  # (als Beispiel)
    Gegenbeispiel (weil es abhängige Pakete gibt, die eben gerade fehlen - hier eine Bibliothek libpcap0.8):
    apt-get -d install tcpdump
    dpkg -i tcpdumpTAB führt dann also zu Fehler bei Abarbeitung der Installation;
    Empfehlung:
    besser also die folgenden APT-Tools nutzen, die uns gleich auch noch die Abhängigkeiten auflösen und automatisieren
  • APT-Tools
    Suchen im "Cache" (ehemals Tool apt-cache )
    apt search suchbegriff
    Installation inklusive Abhängigkeiten (Vorgänger: apt-get )
    apt install mc    # installiert auch gleiche mc-data
    apt remove <paketname> # (Entfernen exkl. Konfigurationen; entspricht -r)
    apt --purge remove <paketname> # (gründliches Entfernen; entspricht -P inkl. Konfigurationen)
    Konfiguration von apt (Paketquellen) in Datei sources.list:  /etc/apt/sources.list
    Empfehlung: neue/eigene sources.list in Ordner
    /etc/apt/sources.list.d/vscode.list   (Beispiel für Microsoft Visual Studio Code on Linux)
    System aktualisieren:
    apt update # (Paket-DB aktualisieren)
    apt upgrade # (Aktualisierung durchführen)
    apt dist-upgrade # (Distro upgraden - von Debian 8.6 auf Debian 9)
    Weiteres Tool aus der APT-Toolfamilie: aptitude , synaptic  (können einfach nachinstalliert werden)
  • rpm / yum - Red Hat Package Management (hier: CentOS 7)
    Beispielinstallation CentOS 7.5 (1804) als Minimalinstallation
    Prüfsummen für CentOS-ISOs diskutiert: PGP signierte SHA256 Hash Infos zu den ISOs (Tool: sha256sum )
    Beachten: Netzwerk mit NetworkManager (siehe: /etc/sysconfig/network-scripts/* ) statt klassisch (Datei /etc/network/interfaces)
    und hier läuft ein Firewall-Daemon (firewalld) mit voreingestellten iptables für Tabellen filter und nat!
    siehe wieder ausführliche Tabelle Paketmanagements RPM/yum/zypper vs. DEB/apt-Tools
    Konfigurationen für YUM-Repositories: /etc/yum.repos.d/*.repo  (hier wie bei APT eigene Repos definieren)
    Tipp: Nachinstallation von EPEL-Repo (Extra Packages for Enterprise Linux): yum install epel-release 
    erzeugt neues Repo /etc/yum.repos.d/epel.repo (und epel-testing.repo - inaktiv) und sollte mit yum update gelesen/aktualisiert werden (siehe yum install cowsay  ;-)
    Auch in diesem System mehrere Anpassungen an der /etc/default/grub  vorgenommen, damit wir eine "1024x768"-Konsole erhalten.
    Hier gibt es kein Debian-artiges update-grub-Tool! Man muss den eigentlichen Grub-Config-Aufruf nutzen:
    grub-mkconfig -o /boot/grub2/grub.cfg  (und dann Neustart)

 

  • DHCP - ReservierungDHCP - Reservierung
  • iptables - table filteriptables - table filter
  • ip_forward=1ip_forward=1
  • CentOS (Red Hat)CentOS (Red Hat)
  • CentOS InstallationCentOS Installation
  • /etc/apt/sources.list.d/etc/apt/sources.list.d

 

Do., 01.11.18

Donnerstag, 01.11.18, 08.30 - 17.30 Uhr

  • Rekapitulation, TN-Fragen (PXE/TFTP Boot von Fedora mit NFS)
  • DHCP Server (Forts.)
    VM centos17 auf reservierte IP 192.168.17.50 / 24  konfigurieren;
    host centos17 {
    hardware ethernet 08:00:20:A4:89:C1;
    fixed-address 192.168.17.50;
    }
    und natürlich wieder testen!
  • DNS mit dem BIND9 (Berkeley Internet Name Daemon - Link)
    Umsetzung hier auf einem Debian System mit Standardeinstellungen nach diversen Anleitungen (z.B. Debian Wiki oder Debian Handbook - DNS )
    Installation auf Debian mit apt install bind9 bind9-doc  ; diverse Utilities/Tools mit Paket dnsutils 
    Die Konfigurationen des BIND befinden sich in:
    /etc/default/bind9   (allgemeine Konfigurationsdatei - bei systemd Nutzung bitte hinterfragen ob aktiv)
    /etc/bind/  - Haupt-Konfigurationsordner mit zentraler Datei /etc/bind/named.conf  
    named.conf inkludiert drei weitere conf-Dateien, die ihrerseits die Konfigurationen enthalten:
    include  named.conf.options - Einstellungen/Optionen für den DNS-Server
    include  named.conf.local - hier werden Zonen erstellt, deren Definitionen dann in db.* Dateien (Aufruf mittels file) ausgelagert werden (siehe db.firma17.local und 17.168.192.in-addr.arpa für unsere Übungsumgebung)
    include  named.conf.default-zones - Standard-Zonen: localhost (db.local) oder 127.in-addr.arpa (db.127)
    Die Inbetriebnahme / Konfigurationen erfolgen in drei Phasen:
    - Caching / Forwarding
    - Forward Lookup Zone
    - Reverse Lookup Zone
    Während der Umsetzungen sollte der "Firmenplan" (die Doku) genau beachtet und aktualisiert werden.
  • DNS (Teil 1 - Caching / Forwarding)
    Analyse der Konfigurationen in /etc/bind  - Organisationsstruktur studieren (includes) und Vorlagen
    Hier: Einrichtung DNS als Caching DNS und DNS-Forwarder
    Installation und Einrichtung z.B. gemäß Anleitung
    Achtung: da wir jetzt einen DNS-Server (host: server17 -  192.168.17.10 / 24) haben - und auch nur diesen als DNS-Ansprechpartner haben wollen - müssen wir natürlich die Konfiguration für den DHCP Server anpassen (option domain-name-servers 192.168.17.10, 8.8.8.8)
    Ausschnitt der Konfiguration für den DNS-Server (hier: /etc/bind/named.conf.options )
    Als DNS-forwarder wurde der Google-DNS 8.8.8.8 eingetragen; (alternativ) auch der Firmen/VHS DNS denkbar:
    acl goodclients {
            192.168.17.0/24;
            localhost;
            localnets;
    };
    options {
            directory "/var/cache/bind";
            recursion yes;
            allow-query { goodclients; };
            forwarders {
                    8.8.8.8;
            };
            forward only; # ggf. später auskommentieren!
            dnssec-validation auto;
            auth-nxdomain no;    # conform to RFC1035
            listen-on-v6 { any; };
    };
    Anm.: nur Auszug aus der Konfiguration; Ausführliche Tests der Konfiguraiton im Netzwerk auf Client und Server
    Vor dem Neustarten des DNS-Servers ( service bind9 restart ) bitte vorher named-checkconf  durchführen!
    Grund: die Konfigurationen sind sehr empfindlich und man kann sich schnell mal vertippen oder ein ";" vergessen!
  • DNS (Teil 2 - lokale Forward Zone firma17.local)
    Beim DNS-Server server17 (192.168.17.10) wichtig: für den DNS-Server selber bitte nicht die /etc/resolv.conf  vergessen und dort manuell den "nameserver 192.168.17.10" Eintrag vornehmen und testen!
    Anm.: das gilt generell für alle statisch konfigurierten Maschinen (Server)!
    Testbefehle: nslookup , dig  , host  (Nachinstallation Paket dnsutils/Debian, bind-utils/CentOS)
    die Vorgehensweise für die beteiligten Konfigurationsdateien in Kürze:
    in /etc/bind/named.conf.local  eine neue Zone festlegen:
    zone "firma17.local" {
            type master;
            file "/etc/bind/db.firma17.local";
    };
    mit einer Kopie von /etc/bind/db.local in /etc/bind/db.firma17.local 
    die neue Master Zone firma17.local definieren
    ;
    ; BIND data file for firma17.local
    ;
    $TTL    604800
    @       IN      SOA     firma17.local. root.firma17.local. (
                         2018103100         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      server17.firma17.local.
    @       IN      A       192.168.17.10

    router17     IN      A       192.168.17.1
    server17     IN      A       192.168.17.10
    centos17    IN      A       192.168.17.50
    gnome17      IN      A       192.168.17.101

    ns1 IN      CNAME   server17
    www IN CNAME server17
    Erinnerung: ggf. noch in den BIND-Optionen (/etc/bind/named.conf.options) den Eintrag "forward only;" auskommentieren!
    Einträge für die "Übungsfirma" eingerichtet und mit Tools (nslookup, host, dig) getestet
    Anm.: (noch) keine Revers-Lookup-Zone eingerichtet! Das wäre für alle Installationen "Mail Exchanger" aber notwendig!
  • DNS (Teil 3 - lokale Reverse Zone 17.168.192.in-addr.arpa)
    Jetzt also noch für unsere lokale Firma "firma17.local" im Netz 192.168.17.0 / 24 eine Reverse Lookup Zone definieren!
    in /etc/bind/named.conf.local  eine neue Zone unterhalb der Forward Lookup Zone "firma17.local" festlegen:
    zone "17.168.192.in-addr.arpa" {
            type master;
            notify no;
            file "/etc/bind/db.192.168.17";
    };
    Und jetzt noch die Reverse Lookup Zonen Datei /etc/bind/db.192.168.17 
    (Tipp: Kopie aus /etc/bind/db.127 erstellen)
    ; BIND reverse data file for LAN-Subnet
    ;
    $TTL    604800
    @       IN      SOA     firma17.local. root.firma17.local. (
                         2018103100         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      server17.firma17.local.
    1 IN      PTR     router17.firma17.local.
    10    IN      PTR     server17.firma17.local.
    50 IN      PTR     centos17.firma17.local.
    101 IN      PTR     gnome17.firma17.local.
    Alles natürlich wieder mit Tools nslookup , host und dig testen!
    Aufrufe: (Anm.: hier nur Standardaufrufe - gerne Manpages nutzen)
    nslookup (hier auch interaktive Konsole möglich),
    host server17 bzw. host -a 192.168.17.10 und
    dig router17 bzw. dig -x 192.168.17.50  
    Hinweis zu Reverse Lookup Zonen und den richtigen Einträgen der Reverse-IPs:
    bei Subnetz 10.0.0.0 / 8 haben wir Rechner von 10.0.0.1 ... 10.18.19.20 ... 10.255.255.254 (ca. 16 Mio Hosts)
    die passenden Einträge in der Reverse-Zone 10.in-addr.arpa müssten lauten:
    1.0.0          IN      PTR     router17.firma17.local.
    20.19.18    IN      PTR     server17.firma17.local.
    254.255.255 IN      PTR     centos17.firma17.local.
    Reverse halt ;-)
    Hinweis zu openSUSE-DNS-Client-Technik: Suse hat in der /etc/nsswitch.conf  eine ungünstige Auflösungsreihenfolge für die "hosts" eingestellt:
    hosts:    files  mdns_minimal [NOTFOUND=return]  dns
    ändern in:
    hosts:    files  dns  mdns_minimal [NOTFOUND=return]  
    dann stimmt die Reihenfolge bei der Auflösung von Hosts mit FQDN wie server17.firma17.local
    Anm.: mdns geht in Richtung Avahi/ZeroConf/APIPA und hilft bei der Auflösung von Namen "ohne echtes DNS"
  • Grafik-Desktop-Systeme nachinstalliert
    zu Test und Konfigurationsübungen: openSUSE 15.0 mit KDE und Debian Stretch 9 mit Gnome

 

  • Übung: fixed-addressÜbung: fixed-address
  • /etc/hosts/etc/hosts
  • openSUSE 15 KDEopenSUSE 15 KDE
  • DNS ForwarderDNS Forwarder
  • lokale Forward Zonelokale Forward Zone
  • 17.168.192.in-addr.arpa17.168.192.in-addr.arpa

 

Fr., 02.11.18

Freitag, 02.11.18, 08.30 - 17.30 Uhr

  • Rekapitulation, TN-Fragen (pxe/tftp fedora live via nfs ... schauen wir mal)
  • To-Do / Themen: NFS, SSH (ssh, scp, sftp), LAMP (php7.2), VIm (pathogen, emmett, nerdtree)
  • NFSv4 (Network File System)
    hier in Version 4; Vorteile von v4 vs. v3: verbessertes Filelocking, besseres Caching, Unterstützung Kerberos, UTF-8 (one Anspruch auf Vollständigkeit)
    Installationen:
    Debian-Pakete: nfs-kernel-server , nfs-common
    Suse, CentOS: nfs-kernel-server  
    Tests der Installationen und Dienststatus mit systemctl , ggf. Eintrag in Runlevel/Target checken: läuft Service nach Neustart?
    NFSv4 arbeitet mit einem Pseudodateisystem, in welches die eigentlichen Daten-Ordner eingebunden werden:
    Pseudodateisystem: mkdir -m 1777 /nfs4root    (Rechte mit erzeugen; hier: Sticky-Bit)
    Im Pseudodateisystem-Rootordner erstellt man dann die eigentlichen "Freigaben":
    im Ordner /nfs4root# mkdir -m 1777 daten   und noch  mkdir -m 1777 home  
    Wir wollen also einmal einen Datenordner und dann noch den Home-Ordner des NFSv4-Servers freigeben.
    Hier eine mögliche Übersicht der beteiligten Ordner:
    NFSOrdner
    /nfs4root/daten drwxrwxr-x  root  buchhaltung  /daten   
    /nfs4root/home drwxr-xr-x  root  root         /home 
    Die gezeigten Ordner und Berechtigungen sind entsprechend vorzubereiten.
    Tests Einbindungen (Aufrufe hier im Ordner /nfs4root# ):
    mount --bind /daten daten/   und mount --bind /home home/  
    Wenn das funktioniert (siehe Aufruf mount für eingehängte Verzeichnisse), dann fest in die /etc/fstab eintragen:
    /daten  /nfs4root/daten   none   rw,bind    0   0
    /home /nfs4root/home none rw,bind 0 0
    Server neustarten und Mounts wieder checken!
    Konfigurationsdatei: /etc/exports 
    Jetzt also wir die NFSv4-Exporte definieren ("NFS-Freigaben"):
    # Pseudodateisystem
    /nfs4root 192.168.17.0/24(ro,sync,insecure,root_squash,no_subtree_check,fsid=0)
    # Freigaben
    /nfs4root/daten 192.168.17.0/24(rw,sync,insecure,root_squash,no_subtree_check)
    /nfs4root/home 192.168.17.0/24(rw,sync,insecure,no_root_squash,no_subtree_check)
    Ein paar (kurze) Erläuterungen zu den NFS-Optionen:
    192.168.17.0/24 - Zugriffe aus diesem Subnetz möglich
    ro , rw - read only bzw. read and write
    sync - Verhalten des NFS-Servers beim Speichern (alternativ: async)
    insecure - NFS-Requests müssen nicht von Ports kleiner 1024 (Well-know-Ports) stammen (Standard: secure)
    root_squash , no_root_squash - Rechte von lokalem User root auf Client an Freigaben: root_squash macht root quasi zu nobody (User auf Server)
    Die Änderungen an /etc/exports  können mit einem Reload aktualisiert werden:
    systemctl reload nfs-kernel-server.service 
    Testen der NFSv4-Dienste mit: rpcinfo -p localhost  
    Testen der Freigaben mit: exportfs -v 
    An den Clients kann man die Exports/Freigaben dann mounten, wenn die Unterstützung von Mount-Typ nfs4 installiert ist.
    mount -t nfs4 server17:/daten /daten   (Mountpoint hier Ordner /daten auf Client-Maschiene)
    mount -t nfs4 server17:/home /home-fs  
    Man kann auch die Wurzel angeben und so alle Freigaben auf einmal einhängen
    mount -t nfs4 server17:/ /alles 
    Nach erfolgreichem Mount-Tests kann man die Freigaben dann fest in den /etc/fstab  auf den Clients eintragen:
    #NFSv4
    server17:/daten /daten nfs4 rw 0 0
    server17:/home /home-fs nfs4 rw 0 0
    server17:/ /alles nfs4 rw 0 0
    Und natürlich wie immer: Testen!
  • LAMP (Linux - Apache - MySQL/MariaDB - PHP; hier: PHP 7.2)
    die am meisten verbreitete Technik-Kombo für Web-/DB-Services im Internet/Intranet
    gewünschte Installation: Debian Stretch (9.5) mit aktuellen Apache2, MariaDB und PHP 7.2 (!)
    für die aktuelle PHP Version 7.2 benötigen wir ein entsprechendes Repository für Debian
    Beispielhafte Installationsanleitung: Colin O'Dell Blog    
    Die folgenden Zeilen stellen ein PHP 7.2 Repo bereit und installiert zu Testzwecken die "PHP 7.2 - Command Line Version":
    apt install apt-transport-https lsb-release ca-certificates
    wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
    apt update
    apt install php7.2-cli
    php --version
    Es folgt die Installation des Apache:
    apt install apache2
    Jetzt stellen wir die MariaDB Server- und Client-Technik
    apt install mariadb-server mariadb-client
    mysql_secure_installation
    Und testen den Zugang zum MariaDB-Server mit einem mariadb/mysql-Client:
    mysql -u root -h localhost -p  
    Im Seminar wurden einige kleine Tests im MySQL-Client durchgeführt!
    Vervollständigung der PHP 7.2 Installation:
    apt install php7.2 php7.2-mysql libapache2-mod-php7.2 php7.2-curl php7.2-gd php7.2-mbstring php7.2-xml php7.2-soap curl php-gettext php-pear
    Und beispielhafte Erweiterung der Apache2 Umgebung: Module aktivieren (z.B. für CMS wie TYPO3):
    a2enmod expires
    a2enmod rewrite
    Diese Apache2-Modifikationen benötigen ein Reload: systemctl reload apache2  
    Jetzt noch ein paar Konfigurationen für die PHP-Umgebung:  /etc/php/apache2/php.ini  
    Übung: max_execution_time = 240   (statt 30 Sekunden Standard) und bitte Apache2 reloaden/restarten
    Test der Apache2-PHP-Konfiguration mit einem kleinen PHP-Skript phpinfo.php in /var/www/html 
    <?php
        echo "Hallo Welt!";
        phpinfo();
    ?>
    Aufruf mittels URL server17/phpinfo.php 
  • VIm (VI improved - vim.org)
    Der Konsolen-Editor für jede Linux/Unix-Umgebung - und natürlich auch gerne unter Windows (gvim portable)
    Jeder Server-Admin sollte einen leistungsfähigen Konsolen-Editor beherrschen. Da gibt es dann natürlich auch alte "Fehden" zwischen den emacs-Usern und den vi-Fanatics.Hier möchte ich eine kurze Einführung in vim darstellen, die natürlich keinesfalls den Anspruch auf Vollständigkeit (;-) erhebt!
    Vorab eine kleine Übersicht / Linkliste mit Online-Infos und Quellen zum VIm:
    Home: http://www.vim.org
    PDF: http://swaroopch.com/notes/Vim/#Download
    Video: http://vimcasts.org/
    Tipps/Tricks:
    http://www.catswhocode.com/blog/130-essential-vim-commands
    http://www.fprintf.net/vimCheatSheet.html
    http://wiki.ubuntuusers.de/VIM
    http://vimcheatsheet.com (preview: https://cdn.shopify.com/s/files/1/0165/4168/files/preview.png )
    http://www.refining-linux.org/archives/20/13-Printable-vim-cheat-sheets/

    Für die folgende Installationen (siehe emmet.io) sollten die Pakete git und curl nachinstalliert werden:
    apt-get install git curl

    Jetzt kann es losgehen mit den Erweiterungen mit Hilfe von Pathogen...
    Pathogen (Vim Plugin Verwaltungs- und Automatisierungs-Tool für vim-Ordner bundle) bereitstellen:
    Anm.: die folgenden Schritte jeweils für den gewünschten User durchführen!
    (Anleitungen im Original bei Github User tpope - https://github.com/tpope/vim-pathogen )

    mkdir -p ~/.vim/autoload ~/.vim/bundle
    curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

    Konfigurationsdatei vim für den User bereitstellen und mit nötigen Zeilen ausstatten: vim ~/.vimrc  
    Minimalkonfiguration für den Vim:
    (Aufruf für Pathogen, Syntaxhighlights on und Dateityperkennung und Einrückungen)

    execute pathogen#infect()
    syntax on
    filetype plugin indent on

    Für Vim-PlugIns jetzt einfach in den ~/.vim/bundle Ordner positionieren und per git das *.vim bzw. *.git holen
    Beispiel: Emmet (Vim Plugin - früher Zencoding)
    (Anleitungen im Original bei Github User mattn - https://github.com/mattn/emmet-vim )

    cd ~/.vim/bundle
    git clone http://github.com/mattn/emmet-vim.git   
    Und schon steht emmet im VIm zur Verfügung!
    Test mit neuer HTML-Datei: vim index.html:
    html:5 Tastenkombinationsfolge "Strg+y ," ergibt komplettes HTML5-Code-Grundgerüst
    Beachten: Standardtastenkombination ist Strg+y und dann noch , (Komma) drücken!
    Beispiel: NERDTree (PlugIn für ein Fenster im VIm mit Dateimanagement)
    (Anleitungen im Original bei Github User scrooloose - https://github.com/scrooloose/nerdtree )
    cd ~/.vim/bundle
    git clone https://github.com/scrooloose/nerdtree.git

    Anleitung Kopieren und Einfügen:
    (nur mit Tastatur - natürlich geht mit Paket gpm auch markieren mit Maus und mittlere Maustaste einfügen)
    Kommandomodus/Visualmodus v
    Text mit Cursor markieren
    mit y (yank) in Puffer (Zwischenablage) einfügen
    an Stelle positionieren zum Einfügen (z.B. O für neue Zeile)
    Einfügemodus (ESC)
    mit p einfügen
    Weitere kleine Beispiele: dd löscht Zeile ndd (mit n Anzahl Zeilen löscht gleich n Zeilen) ...
    Viel Spaß mit dem VIm!

  • Sicherungen / Backup der Workshop VM-Umgebungen,
    Screenshots; hier nochmals unsere / meine Übungsumgebung
    plan topologie dom 2018 800px
    Hier mit einem Win10Pro Rechner erweitert und so in einer Windows-VBox-Umgebung bei mir in der Büro-Umgebung umgesetzt!
  • Weiterführende Themen - im Seminar erwähnte Techniken und Anmerkungen:
    ThemaFortführende Inhalte
    Virtualisierung / VirtualBox Netzwerke, Tool: vboxmanage, KVM / qemu
    Partitionierungen LVM (Logical Volume Management), BtrFS
    Netfilter / iptables Firewalling, Port-Forwarding (DNAT), DMZ
    Shell: Bash  Konfigurationen (bashrc, profile), Skripting / Automatisierung
    Linux-Software  Installation aus Sources / Tar-Balls, alternative Paketmanager
    DHCP / DNS DDNS (Dynamic DNS), Sekundäre Zonen
    NFSv4 UIDs mappen (imapd), Performance optimieren,
    Firewall-Einstellungen, Kerberos-Authentifizierungen
    LAMP weitere Konfigurationen, VHosts, CMS-Installationen
    Aus diesen Topics lassen sich allerdings locker auch eigene Seminare zaubern ;-) !
  • TN-Bescheinigungen, Feedback-Bögen, letzte TN-Fragen

 

  • Übung: NFSv4Übung: NFSv4
  • ssh - scpssh - scp
  • secureFTP (SSH)secureFTP (SSH)
  • LAMP mit PHP 7.2LAMP mit PHP 7.2
  • a2enmod (Apache)a2enmod (Apache)
  • VIM erweitertVIM erweitert

 

Vielen Dank für Ihre tollen Feedbacks
Ihr Trainer Joe Brandes

  Privates

... zu Joe Brandes

Sie finden auf dieser Seite - als auch auf meiner privaten Visitenkarte joe-brandes.de einige Hintergrundinformationen zu mir und meinem Background.
Natürlich stellt die IT einen Schwerpunkt in meinem Leben dar - aber eben nicht nur ...

joe brandes 600px

Private Visitenkarte / Technik: HTML & CSS /
  joe-brandes.de

  Jobs

... IT-Trainer & Dozent

Ich erarbeite und konzipiere seit über 20 Jahren IT-Seminare und -Konzepte. Hierfür stehen der "PC-Systembetreuer / FITSN" und der "CMS Online Designer / CMSOD". Ich stehe Ihnen gerne als Ansprechpartner für Ihre Fragen rund um diese und andere IT-Themen zur Verfügung!

becss 600px

BECSS Visitenkarte / Technik: HTML & CSS /
  becss.de

  Hobby

... Snooker & more

Wer einmal zum Snookerqueue gegriffen hat, der wird es wohl nicht wieder weglegen. Und ich spiele auch immer wieder gerne eine Partie Billard mit den Kumpels und Vereinskameraden. Der Verein freut sich über jeden, der einmal in unserem schicken Vereinsheim vorbeischauen möchte.

bsb 2011 600px

Billard Sport BS / Joomla 3.x /
  billard-bs.de

PC Systembetreuer ist J. Brandes - IT seit über 35 Jahren - Technik: Joomla 3.4+, Bootstrap 3.3.4 und "Knowledge"

© 2018 - Websitedesign und Layout seit 07/2015 - Impressum - Datenschutzerklärung
Nach oben