• debian.dedebian.de

Dieser Workshop richtet sich an interessierte Teilnehmer, die tiefer in das Betriebssystem Linux eintauchen möchten und besonders mit eigenen Fragen und Wünschen die Inhalte des Workshops erweitern.

Das Seminar soll die Informationen zum Thema "Linux" (siehe Modul des FITSN) vertiefen und weiter führen: Linux als Serversystem. Hierzu werden wir uns alle notwendigen Themen für diesen Einsatzzweck vornehmen und dann die Serverdienste implementieren und nutzen. Für den Einsatz als "Server" gibt es unterschiedliche Linux-Distributionen und wir werden uns den "Marktführer" vornehmen: Debian.

Mögliche Inhalte::

  • Linux im Netzwerk
  • Infrastruktur (DNS- / DHCP-Server / LDAP-Verzeichnisdienst)
  • Linux als File- und Printserver
  • Web-Applikationen (Apache2 / Postfix / FTP-Server)
  • Systemüberwachung und Network Monitoring

Hier die Rahmendaten unseres Seminars:

Ort: VHS Braunschweig, Raum 2.11
Zeiten: Mo, 02.11. bis Fr, 06.11.2015; jeweils 08.30 - 16.00 Uhr

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

 

Mo., 02.11.15

Montag, 02.11.15, 08.30 - 16.00 Uhr

  • Orientierungsphase, TN-Themen
    Installationsmedien (Wechselplatte und Debian 8.2 64-Bit DVD)
  • Linux (oder eigentlich GNU/Linux)
    freier Betriebssystemkern (hier: monolithisch, wobei aktuelle Entwicklungen nicht mehr nur starr monolithisch vs. Microkernel lauten; siehe Wikipedia-Artikel Link)
    engl.: Kernel (siehe Website für den Kern auf kernel.org - Lizenz GNU Public License
    erste öffentliche Erwähnung durch Linus Torvalds in Newsgroup comp.os.minix am 26. August 1991 (Wiki-Link L. Torvalds)
  • Distributionen
    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 wird Novell die Entwicklungspfade von SLES und openSUSE zusammenlegen (s.a.u. Versionen: 13.1 - 13.2 - 42.1)

    DistroAbleger der DistroPaketmanagement
    Red Hat
    (Link)
    Fedora, CentOS
    Kaufversion: RHEL
    RPM (Red Hat Package Management)
    Standardtool: rpm
    Novell (Suse)
    (Link)
    openSUSE (Link)
    Kaufversion: SLES
    RPM
    mit YaST2-SW-Verwaltung, zypper, yum
    Debian
    (Link)
    Ubuntu(s) DEB (Debian Pakete)
    Standardtool: dpkg (ohne Auflösung Abhängigkeiten)
    APT-Tools: apt-get, apt-cache, ... , aptitude

    Entscheidung für Debian wegen Marktführerschaft im Bereich Server Internet/Intranet und Konzentration auf Stabilität und Zuverlässigkeit - aber wie schon gesagt: gerne auch im Laufe der Woche alternative Linux-OS möglich. Mein "Roter Faden" aber wie gesagt "Debian"
    weitere Distributionen: ArchLInux, Linux Mint, Gentoo, Mandriva, ... - the list goes on and on (s. a. www.distrowatch.com

  • Debian Versionen
    8 - Jessie, 7 - Wheezy; 6 - Squeeze; 5 - Lenny; 4 - Etch (Charaktere aus Toy Story)
    Varianten: stable, testing, unstable (und oldstable)
    Versionen ab Squeeze (7.x) aktualisiert mit 7.1, 7.2, ... (statt früher 7.0.1, 7.0.2, ...)
    Unterschiedliche Quellen (Web/http, FTP-Server) und Download-Techniken (Bittorrent, jigdo)
  • Installation von Debain 8.2 / 64-Bit
    Install-Medium DVD an TN verteilt
    Anm.: Problem bei Netzwerktechnik wegen Ausfall des DHCP-Servers für Schulungsräume! Erkannt und Gebannt!
  • Debian Installation
    Installation von Debian 8.2 (amd64) auf Wechselplatten von Trainer und TN-PCs
    Stichworte: Grundinfos zu Partitionierung und Bootmanagement /dev/hda vs. /dev/sda
    Mountpoints (/, /home, /var, /usr, /tmp), LVM (Logical Volume Management); Grundinstallation (Abwahl Standardeinträge in tasksel plus SSH)
    Anm.: später dann gerne Nutzung der Installationen im "Runlevel Server: bei Debian also #2"
    Nachfrage/Hinweis: Nutzung von Virtuellen Maschinen zum Testen und Implementieren der Techniken und Netze (VirtualBox, VmWare, Hyper-V)
  • deb Paketmanagement
    *.deb (vs. *.rpm mit openSUSE YaST2-Tool, zypper, yum und Basistool rpm)
    Übersicht in Extra-Beitrag auf dieser Website: Paketmanagements RPM vs. DEB  
    Tool dpkg (Basistool)
    Achtung: dpkg löst keine Abhängigkeiten auf!
    Hinweis: Standard-Pager less (inklusive Suchfunktion;
    dpkg Aufrufe: (bitte genau auf Groß/Kleinschreibungen achten und Einsatz bei installierten bzw. nichtinstallierten 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 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"
    apt-cache search suchbegriff
    Installation inklusive Abhängigkeiten mittels Werkzeug apt-get
    apt-get install mc    # installiert auch gleiche mc-data
    
    apt-get remove <paketname> (Entfernen exkl. Konfigurationen; entspricht -r)
    apt-get --purge remove <paketname> (gründliches Entfernen; entspricht -P)
    Konfiguration von apt-get (Paketquellen) in Datei sources.list:  /etc/apt/sources.list
    System aktualisieren:
    apt-get update # (Paket-DB aktualisieren)
    apt-get upgrade # (Aktualisierung durchführen)
    
  • Konsole - Shell
    Prompt beachten: # für root und $ für user
    Homeverzeichnis durch ~ (Tilde) gekennzeichnet,
    pwd (print working directory) zeigt aktuelles Verzeichnis an
    Virtuelle Konsolen: Alt + F1 ... F6 (bzw. mit Grafik mittels Strg + Alt + Fx)
    Konsole "löschen": clear screen bzw. Strg + L
    System herunterfahren
    shutdown -h now
    
    erste Schritte in der Shell mit Befehlen cd, cat, more, less inklusive Piping (weiterleiten an nächsten Shell-Aufruf mit |)
  • Schrift in Konsole anpassen
    als root (SuperUser - UserID 0)
    dpkg-reconfigure console-setup
    eine Schriftart (Font) nach Wahl einstellen; hier für mich als Trainer wichtig, damit die "Terminals" am Beamer vernünftig erkennbar sind
  • Runlevel vs. Targets (Website mit Vergleich)
    Process 1 ist bei Systemen unterschiedlich
    hier: Debian 8.2 ("Jessie") nutzt systemd (mit Targets)
    klassisch: z.B. CentOS 6.7 mit SysV-init - also dem herkömmlichen init Prozess (mit Runleveln)
    die wichtigsten Runlevel besprochen (0 / 1,s,S / 2 / 3 / 5 / 6)
  • ssh (ein erster Test)
    unter Linux einfach in der Konsole direkt nutzen
    ssh username@<rechner-name-oder-ip>
    unter Windows brauchen wir natürlich einen Client:
    Putty (Link) oder WinSCP (Link) - Empfehlung: MobaXterm (Link)
  • Prozesse (ein erster Einblick)
    Tool: ps; Aufgabe: läuft der OpenSSH-Service?
    ps ax | grep sshd
    Urprozess/erster Prozess/init-Prozess: bei Debian systemd mit Prozess-ID 1
    Ordner:/proc  mit den Verzeichnisse für die Verwaltung der Prozess und Infodateien
    cat /proc/meminfo 
    zeigt uns die Speichernutzung; alternativ /proc/cpuinfo  (für Infos zur CPU)

 

  • ProzesseProzesse
  • Debian VersionenDebian Versionen
  • apt-cache searchapt-cache search
  • Midnight CommanderMidnight Commander
  • Font in ttyFont in tty
  • /etc/apt/sources.list/etc/apt/sources.list

 

Di., 03.11.15

Dienstag, 03.11.15, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
    Tool zu Prozessen: pstree -p  (zeigt die Prozesse als Baum inkl. Prozess IDs)
  • Runlevel vs. Targets
    Erläuterungen Online (Link 1 - Link 2)
    Vergleich der klassischen Runlevel mit Targets; gemeinsame Tools: init (bzw. telinit), runlevel
    aber: bei systemd (Targets) heißt das Haupttool systemctl (und nicht sysctl)
    Beispielaufrufe:
    systemctl isolate multi-user.target   # in Runlevel 2/3 wechseln - siehe init 2   
    systemctl get-default   # Standard anzeigen lassen  
    systemctl isolate graphical.target  # in Runlevel 5 wechseln - siehe init 5  
    Andere wichtige Aufrufe für systemctl: start, stop, enable, disable, ... (siehe man-Pages)
    Übersicht über die Services, die mit systemd verwaltet werden:
    systemctl --type=service  
    Standard-Target ("Default-Runlevel/Target") über das Neuanlegen der entsprechenden Symbolischen Links (siehe ln -s)
    Wichtig: bei systemd gibt es keine /etc/inittab mehr!
    systemd-Tools: einfach systemd TabTab führt z.B. systemd-analyze blame  (Analyse des Start-/Init-Vorgangs)
  • Hilfen (Online im System)
    man (Man-Pages mit unterschiedlichen Kategorien)
    Kategorien: 1 Benutzerkommandos; 2 Systemaufrufe (Systemcalls); 3 Bibliotheksaufrufe; 4 Spezielles (z.B. Geräte); 5 Formate Konfigurationsdateien / Konventionen
    6 Spiele; 7 Makropakete; 8 Systemadmininstrationskommandos; 9 Kernel
    siehe Verzeichnisstruktur /usr/share/man
    man -a <befehl> zeigt alle Kategorien an - oder einfach man man
    whatis (Kurzsuche in man-Pages); Tipp: whereis für Ort der Dateien im System (inkl. man-Pages)
    apropos (Suche inklusive Kurzbeschreibungen)
    info (GNU System basierend auf Hyperlinks)
    oder direkt in mit den Befehlen mittels befehl --help
  • Übung: Tool hwinfo nachinstallieren
    die apt-Tools weiter kennengelernt
    Hinweis: bei Debian gibt es Website für Paketverwaltungen und Infos zu Paketen (Link)
  • Verzeichnisstruktur (eine kurze Übersicht - siehe auch Wikipedia)
    /bin - Binaries, ausführbare Programme
    /boot - Kernel vmlinuz (komprimiert, mehrere Versionen mit Nummern), initrd (Ramdisk)
    /boot/grub - Bootmanger (hier nicht konfigurieren - Konfigurationen immer siehe /etc)
    /dev - Geräte (/dev/fd0, /dev/sr0, /dev/sda, /dev/sdb, /dev/null, /dev/urandom, ...)
    /etc - Konfigurationen (/etc/fstab, /etc/hosts, viele Konfigurations-Unterordner: /etc/skel, ...)
    /etc/X11 - der Ordner für den X-Server (Grundtechnik Grafikausgabe)
    /home - Benutzerprofile (/home/username)
    /lib - Programmbibliotheken (Libraries; siehe auch /lib64)
    /lost+found - bei journaling File Systems Daten für Fehlersuchen/Behebungen (siehe auch Toolreihe fsck)
    /media - klassischer Mountpoint für Wechselmedien (bei openSUSE nicht mehr vorhanden)
    /run/media/username - neuer Mountpoint für Wechselmedien
    /mnt - Mountpoint
    /opt - optionale Software (hier am Beispiel XAMPP Lamp Server - Link); auch: kommerzielle Software
    /proc - Prozesseverwaltung (siehe Ordner mit PID-Nummern)
    Übung: cat /proc/meminfo ; cat /proc/interrupts ; cat /proc/cpuinfo
    /root - Homedir für SuperUser root
    /sbin - Programme mit hohen Privilegien (SuperUser)
    /srv - Serverdienste (Verzeichnisse z.B. für Webserver - diese findet man gerne auch unter /var/www ;-)
    /tmp - Temporärer Ordner; gemeinschaftlich im System (später: besondere Zugriffsrechte)
    /usr - Großteil der installierten Software im System (Unix System Resources)
    /var - Variable Daten
  • Benutzer verwalten:
    Anmerkung: Debian erstellt standardmäßig für jeden Benutzer eine besondere Gruppe
    useradd <username>(neuen Benutzer anlegen)
    beispielhafter 2-Zeiler für Standarduser (siehe useradd -D  - zeigt die Defaults/Vorgaben für User) mit Home-Dir und Passwort:
    # useradd -m -c "Teilnehmer 01" -s /bin/bash tn01  
    # passwd tn01 
    Homedirs werden aus /etc/skel "geclont"
    Standardeinstellungen für neue User werden über /etc/default/useradd  konfiguriert!
    Anzeige der Standards für neue User mit useradd -D 
    Ändern der primären Gruppe mit usermod -g  (beachten: kleines g!)
    Andere Gruppen dann mit:
    usermod -G <group1>,<group2>
    /etc/passwd (Übersicht über User auf System)
    <username>:x:<uid>:<gid>:<Kommentar>:<homedir>:<shell>
    Anm.: die Shell(s) beachten
    /etc/shadow (Passworte und Richtlinien)
    Benutzer ändern: (usermod bei bereits existierendem user - s.o.)
    usermod -d /<neuesdir> <username> (muss vorher angelegt und mit Rechten versehen werden!)
    usermod -s <shellneu> <username> (andere Shell)
    usermod -L (Lock; Benutzer sperren)
    usermod -U (Unlock; Benutzer entsperren)
    Benutzer löschen:
    userdel <username> (nur Benutzerkonto löschen)
    userdel -r <username> (Benutzer inklusive Homedir)
    Gruppen erstellen:
    groupadd <group>
    groupadd -g <gid> <group>  (mit Vorgabe einer gid)
    Passwort erstellen:
    passwd <username> (siehe /etc/shadow)
    Kennwortrichtlinien:
    chage <username> (Richtlinien anzeigen)
    siehe auch Tools adduser, addgroup
    Workshop: Einrichten von Benutzern
    s.a. who, whoami, id, groups
  • Tools für Berechtigungen
    chown (auch als Ersatz für chgrp mit chown user:group)
    chmod (Rechte setzen mit Buchstaben oder oktal)
    Sonderrechte:
    Set-UID (siehe ls -l /usr/bin/passwd)
    so hat auch normaler User mit passwd die nötigen root-Rechte um /etc/shadow (Passworte) zu schreiben
    setzen mit z.B. chmod 4755 /usr/bin/passwd
    Set-GID (siehe chmod 2...)
    Sticky-Bit (siehe ls -ld /tmp; mit chmod 1777 /tmp)
  • Dateiberechtigungen
    in detaillierter Liste (ls -l  )die Berechtigungen r (read), w (write), x (eXecute)  für
    Benuzter/Besitzer (u - user), Gruppe (g - group) und "alle Anderen" (o - others) hergeleitet,
    Berechtigungen in der (oktalen) Form 755 oder 644 erläutert, Befehl chmod eingeführt und im Skript nachrecherchiert
    Ordner /home/mittwoch/Dokumente  mit Berechtigung 775 ausstatten, sodass auch Benutzer aus Gruppe "users" die Schreibmöglichkeiten für den Ordner "Dokumente" bekommen
    Befehl:  chmod 775 Dokumente   (als User mittwoch im Homedir von mittwoch)
    Für chmod (Change Modus) an Unterordnern muss -R (Achtung: hier großes R für --recursive) gesetzt werden.
    Spezielle Berechtigungen:
    SetUserID -  Beispiel: /usr/bin/passwd (zum Passwort-Wechseln/Erstellen) - chmod u+s - chmod 4644
    SetGroupID - chmod g+s - chmod 2644
    StickyBit - Beispiel Ordner /tmp - chmod o+t - chmod 1755
  • Benutzer- und Gruppenverwaltung (allgemein)
    Anzeige zu Benutzern mittels Befehlen whoami, who, id, groups
    Dateien der Benutzer/Gruppen: /etc/passwd, /etc/shadow, /etc/group
    Inhalte und Aufbau der Dateien erläutert und recherchiert; Rechte analysiert und Benutzer- und Gruppen-IDs kennen gelernt; weitere Benutzereigenschaften: Home-Dir-Pfad, Shell (Standard /bin/bash; speziell: siehe wwwrun: /bin/false), Sekundäre Gruppen
    Abschlussübung: neue Benutzer angelegt und angemeldet und getestet
    Tests mit gegenseitigen Zugriffen der Benutzer - hier ist "Lesen/Stöbern" in anderen Home-Dirs möglich
    Verhindern mit Berechtigung 700 (bzw. bei Debian auch 750) für Home-Dirs (Anm.: root schließt man nie aus)
    Tools für Benutzer- und Gruppenerstellungen / Anpassungen:
    useradd , usermod , userdel , groupadd , groupmod , groupdel 
    Übungen zu Benutzern durchgespielt
    Anm.: Perl-Skript adduser unter Debian verfügbar
  • Benutzer-"Wechsel" (eine Zusammenfassung)
    Switch User (su, su - mit Wechsel in das Home-Dir)
    sudo (quasi ein "Ausführen als") - muss extra konfiguriert werden (siehe Gruppe sudoers und Konfigurationen in /etc/sudo)

 

...Screenshots zum Seminartag folgen...

 

 

Mii., 04.11.15

Mittwoch 04.11.15, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
  • Netzwerk (eine Einführung / Vorarbeit für die weitere Vernetzung in der Woche)
    ifconfig (Netzkonfiguration anzeigen; bzw. flüchtig konfigurieren)
    route (Netzrouting anzeigen; bzw. flüchtig konfigurieren)
    ping -c 10 www.bahn.de (bitte mit -c Anzahl der Pings angeben)
    traceroute www.nytimes.com
    netstat -nr (zeigt Routingtabelle)
    netstat -a (zeigt Portbelegungen)
    hwinfo --netcard  (zeigt Zuordnung der Netzwerkadapter zu den Gerätekennungen eth0, eth1, ...)
  • Hostname (Name der Maschine - Hinweis: keine Netztechnik)
    geändert über Datei /etc/hostname
    Anzeige mittels
    cat /etc/hostname
    echo $HOSTNAME
    hostname
    Empfehlung: hier ausnahmsweise mal Neustart spendieren
  • Netzwerkkonfigurationen
    Übesiccht über die wichtigsten Ordner und Dateien::
    /etc/networks  (Netzwerke konfigurieren)
    /etc/hosts   (statische Namensauflösungen)
    Übung: lokale Rechner linux-01 bis linux-17 in die hosts-Dateien eingetragen
    /etc/resolv.conf   (DNS konfigurieren)
    a) Debian "Rohinstallation" (unser Server/Router -geplant als DHCP-Server und NAT-Router)
    Erklärung über Debian Wiki zur Netzwerkkonfiguration (Link)
    /etc/network/interfaces  (Konfiguration der Netzwerkadapter eth0, eth1 mit statischen oder DHCP Konfigurationen)
    Beispielhafte Installation am Rechnier debian-router gezeigt:
    Statische Adressen für die beiden Adapter:
    WAN: 192.168.0.250 / 24 mit Standard-Gateway (Router) 192.168.0.254 und DNS 192.168.0.254 (siehe /etc/resolv.conf)
    LAN: 10.0.0.1 / 8
    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)
  • Benutzerprofile mit der .bashrc
    Übung: für Benutzer root mittels seiner /root/.bashrc  die Konfigurationen zur Nutzung des Syntaxhighlighting auskommentieren und die vorbereiteten Aliase nutzen
    Empfehlung: beim root die Interaktivität (Nachfrage) für das Löschen mit rm aktivieren
    alias rm='rm -i'
    So erhält man immer eine Nachfrage bei Löschvorgängen
  • Drucken - eine kurze Praxis
    kurze Gegenüberstellung und Darstellung zu Begriffen Lokale Drucker, Netzwerkdrucker, Druckserver
    verschiedene Nutzungen und Installationen unter Linux
    1) lpd - Line Printer Daemon, der klassische Dienst zum Verwalten von Druckern, Druckjobs, Printqueues
    2) openSUSE YaST2 Modul Drucker  - zum Installieren oder Verwalten
    3) Desktopmanager Druckerkonfiguration (KDE, Gnome)
    meine Meinung: sind möglichst zu vermeiden und statt dessen:
    4) CUPS - Common Unix Printing Service (Apple) - der aktuelle Standard und Distro-unabhängig und per Weboberfläche verwaltbar: Webadresse (Browser) localhost:631  (also Port 631)
    5) HPLIP mit Tool hp-setup bei HP Druckern / Multifunktionsgeräten: HPLIP - HP Linux Imaging und Printing
    Beispielinstallation eines "HP Color 500 Laserjet (m551)" mit Hilfe der HP Linux Imaging and Printing Toolserie auf hplip.net Website; damit werden alle nötigen Dateien (Druckertreiber ppd) und Konfigurationen erstellt
    Anm.: bei Debian war bereits das Paket hplip installiert! Für die Nutzung der grafischen Setup-Routine musste man noch hplip-gui nachinstallieren!
    Empfohlene Einrichtung und Verwaltung aber mittels CUPS
  • VI (bzw. VIM - der VI improved) - Praxis für den Serveralltag
    unterschiedliche Modi: Einfügenmodus (z.B. mit Taste i), Kommandomodus (ESC)
    Kommando: :w (schreiben), ZZ (Schreiben und beenden; :q (Quit - mit :q! Beenden erzwingen)
    Tipp: vi test.txt (gleich Datei laden/erstellen); view test.txt (nur Lesen-Modus - view halt)
    Anmerkung: auch als Fensterprogramm verfügbar gvim (also eigentlich aus der Gnome-Ecke - Paket vim-gnome)
    Übung: siehe Extra-Teilbeitrag in diesem Beitrag unter der Karte "Vim - Special"

 

...Screenshots zum Seminartag folgen...

 

 

Do., 05.11.15

Donnerstag, 05.11.15, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
  • Komplettierung Übungen zum Vi
    Anleitungen aktualisiert und Erweiterung NERDTree installiert und gezeigt
    Hinweis auf vimtutor und eingebaute Hilfen
  • Netzwerkanalyse / Netzwerkplanung
    Daten über aktuelles Netz gesammelt und Plan für Vernetzung und Dienste (Services) für unsere "BU-Firma bu.local" erstellt
    Generell: Abkopplung des Seminarraum mit Hilfe eines Debian-basierten Routers (NAT-Routing)  und Implementierung von Netzwerkdiensten DHCP, NAT-Routing und DNS (Caching / Forwarding - eigene lokale Domäne)
    Basisbefehle für die Analyse von Routing und Gateway Konfigurationen
    # ip route show
    # route -n
    # netstat -rn
    Tipp: achten Sie auf das "G" für die Anzeige für die Gateways
    Für das Seminar wurde ein ausührliches Tafelbild mit ausführlichen Darstellungen zur Netztopologie und den genutzten Maschinen, Switches, Routern und den Netzwerkadaptern und deren Konfigurationen erstellt
  • DHCP Server (isc-dhcp-server)
    Paket: isc-dhcp-server
    systemctl restart isc-dhcp-server.service   # re-startet den DHCP-Server
    Konfiguration liegt natürlich wieder in /etc: /etc/dhcp/dhcp.conf
    Beispieleinträge / Konfigurationen
    option domain-name "bu.local";
    option domain-name-servers ns1.bu.local, ns2.example.org;
    ...
    subnet 10.0.0.0 netmask 255.0.0.0 {
      range 10.0.0.100 10.0.0.120;
      option routers 10.0.0.1;
      option domain-name-servers 192.168.0.254;
    }
    Hier wird noch die Konfiguration für den WAN-DNS des VHS Braunschweig Hauptrouters (192.168.0.254) zum Internet Service Provider (ISP) per DHCP verteilt!
    Kurzanleitungen im Web (Link) für Debian und den ISC DHCP Server
  • NAT-Routing (ip_forward, iptables)
    Tipp: für nachhaltige Einstellungen zu den iptables das Paket iptables-persistent nachinstallieren
    Für die folgenden Befehle beachten:
    eth1 : Nic für die WAN-Seite (192.168.0.250 / 24 ; StdGW: 192.168.0.254 ; DNS: 192.168.0.254)
    eth0 : Nic für die LAN-Seite (10.0.0.1 / 8)
    IP Forwarding für den Linux-Kernel aktivieren
    echo 1 > /proc/sys/net/ipv4/ip_forward
    bzw. persistent:in /etc/syctl.conf  einstellen (net.ipv4.ip_forward = 1 )
    Standard-Chains in /etc/iptables/rules.v4  einstellen (wird bei Debian automatisch geladen!)
    # einkommenden Traffic erlauben
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # Adapter Chains forward einstellen
    -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i eth0 -o eth1 -j ACCEPT
    in /etc/network/if-pre-up.d/iptables (neues Skript erstellen und mit chmod +x ausführbar machen)
    #!/bin/sh
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    Anm.: das sind nur sehr einfache Grundkonfigurationen, die bei weitem nicht alle Sicherheitsaspekte abdecken.
  • DNS (Teil 1 - Forwarding)
    Einrichtung DNS als Caching DNS und Forwarder
    Installation und Einrichtung gemäß Anleitung
    Achtung: da wir jetzt einen DNS-Server (host: debian-router; 10.0.0.1 / 8) haben - und auch nur diesen als DNS-Ansprechpartner haben wollen - müssen wir natürlich den DHCP Server anpassen (option routers 10.0.0.1  statt vorher 192.168.0.254)
    Ausschnitt der Konfiguration für den DNS-Server (hier: /etc/bind/named.conf.options )
    Als forwarders wurden die beiden DNS-Server 192.168.0.254 und der Google-DNS 8.8.8.8 eingetragen
    acl goodclients {
            10.0.0.0/8;
            localhost;
            localnets;
    };
    options {
            directory "/var/cache/bind";
            recursion yes;
            allow-query { goodclients; };
            forwarders {
                    192.168.0.254;
                    8.8.8.8;
            };
            forward only;
            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!
  • DNS (Teil 2 - lokale Zone bu.local)
    Beim Server debian-router (10.0.0.1) wichtig:
    für den DNS-Server selber bitte nicht die /etc/resolv.conf  vergessen und dort den nameserver 10.0.0.1 Eintrag vornehmen und testen
    Testbefehle: nslookup , dig
    Zweiteilige Anleitung (Jack Brennan . com)
    Part 1 - englisch - Grundkonfiguration - Testing
    Part 2 - englisch - Master DNS Zone mit Bind9
    die Vorgehensweise (2 Konfigurationen) in Kürze:
    in /etc/bind/named.conf.local
    eine neue Zone festlegen
    zone "bu.local" {
            type master;
            file "/etc/bind/db.bu.local";
    };
    mit einer Kopie von db.local  in /etc/bind/db.bu.local 
    die neue Master Zone bu.local definieren
    ;
    ; BIND data file for bu.local.
    ;
    $TTL    604800
    @       IN      SOA     bu.local. root.bu.local. (
                                  2         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      ns1.bu.local.
    @       IN      A       10.0.0.1
    @       IN      AAAA    ::1

    ns1     IN      A       10.0.0.1
    www     IN      A       10.0.0.1
    debian-router   IN      A       10.0.0.1
    linux-17        IN      A       10.0.0.100
    testserver      IN      A       10.0.0.5
    Einträge für die "Übungsfirma" eingerichtet und mit Tools (nslookup, dig) getestet
    Anm.: (noch) keine Revers-Lookup-Zone eingerichtet! Das wäre für alle Installationen "Mail Exchanger" aber notwendig!

 

 

...Screenshots zum Seminartag folgen...

 

 

Fr., 06.11.15

Freitag, 06.11.15, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
    To-Do-List Freitag: Reverse Lookup-Zone (wichtig für weitere Services wie Mailserver), Symbolic vs. Hardlinks, TAR nutzen, LAMP, Webmin, ...
  • DNS (Fortsetzung / Komplettierung mit Reverse Lookup Zone)
    Nutzung der Anleitung aus Do (Link) für die Implementierung einer Reverse Lookup Zone 10.in-addr.arpa.
    wegen der Netmask /8 müssen die Reverse IPs bei unserem Teilnetz 101.0.0 lauten
    Testen der Revers Lookup Zone mit nslookup oder dig -x 10.0.0.101
    Problemlösung für "ping debian-router" geht - aber "ping debian-router.bu.local" geht nicht auf unseren Linux-Clients!
    Grund ist der Avahi (mDNS) Dienst, der mittlerweile auf Desktop-Debian-Systemen standardmäßig läuft und für unsere TLD local die Auflösung "versaut"
    Lösung: in /etc/nsswitch.conf  müssen wir die Zeile für hosts (also unsere Auflösungen) anpassen
    Eintrag:  hosts:   files myhostname mdns4_minimal [NOTFOUND=return] dns  
    ändern in  hosts:  files dns mdns4_minimal mdns4  
    Auf dem debian-router funzte das also, weil da kein "AVAHI/mDNS"-Service läuft und somit Eintrag "hosts: files dns" lautet!
  • LAMP System installieren
    L(inux - Betriebssystem)
    A(pache - Webserver; Alternativen: lighttpd, Nginx)
    M(ysql - Datenbankserver; Alternativen: MariaDB, NoSQL, MSSQL)
    P(HP - serverseitige Skriptsprache)
    Standardinstallation auf den allermeisten Hosting-Angeboten
    Hinweis für freies System ohne Installation z.B. mittels XAMPP von apachefriends.org
  • Apache (Webserver)
    Kurzanleitung im Rahmen einer TYPO3-Schulung (Link)
    Hinweise auf LAMP System und Anleitungen im Web (z.B. Link)
    apt-get install apache2
    
    Hinweis auf vorgeschlagene Pakete:
    apache2-doc apache2-suexec apache2-suexec-commmon (alles erst einmal weglassen)
    Hinweis auf Module (Apache Module alias, autoindex, env, ...)
    Apache Version: apache-mpm-worker; Vergleich mit prefork http://tinyurl.com/o6mqmze
    Testen des Apache2 starts:
    ps ax | grep -i apache
    
    und natürlich die Ports:
    netstat -tulpn
    
    Port 80 hier für TCP6 was eben auch TCP4 einschließt
    Testen mit telnet (apt-get install telnet) und per "get" Befehl Request versuchen (Ergebnis 501-Seite)
    telnet localhost 80
    
    mit Browser testen "It works!"; Browser für die Konsole: w3m (oder auch lynx)
    Apache2 Struktur: /etc/apache2/apache2.conf und Unterordner/Linkstrukturen betrachten
    Benutzer für Apache2 analysiert: ps -aux | grep apache2  bzw. wichtige Konf-Datei: /etc/apache2/envars  (export-Einträge ansehen)
  • MySQL (Relationales Datenbank Management System - RDBMS - DB-Server)
    Insatallation (auch mysql-client und Co)
    apt-get install mysql-server
    
    hier wieder ein User root (jetzt aber DB-User)
    Installation testen:
    mysqlshow -p
    ps ax | grep mysql
    netstat tulpn 
    
    siehe Port 3306 und host 127.0.0.1
    telnet localhost 3306 ergibt nur Antwort ohne echte Client/Servernutzung
    DB-Übung:
    mysql -p  # (mit Passwort in DB)
    > SHOW DATABASES;
    > CREATE DATABASE bildungsurlaub;
    > USE bildungsurlaub;
    > SHOW tables;
    > CREATE TABLE testing (
      -> ID SMALLINT NOT NULL AUTO_INCREMENT,
      -> name CHAR(25) NOT NULL,
      -> vorname CHAR(25) NOT NULL,
      -> PRIMARY KEY (ID));
    > EXPLAIN testing;
    > INSERT INTO testing (name, vorname)
      ->VALUES ("Becker", "Boris");
    > SELECT * FROM testing;
    
    DB-Administration:
    mysqladmin -u root -p password <pass>
    DB-Sicherung: Analyse von /var/lib/mysql (/bu)
    msqldump -u root -p bu > backup-bu.sql
    mysql -u root -p bu < backup-bu.sql
    
    Analyse der Dump-Dateien; Hinweis auf Komprimierung durch GZip
  • PHP (serverseitige Skriptsprache)
    Installation durchführen:
    apt-get install libapache2-mod-php5
    
    automatisches Umschalten auf -prefork Apache Version; Jetzt könnte es losgehen s. Modul II CMSOD ;-)
    Testskript: /var/www/test.php: (Aufruf mit Browser-URL <ip-webserver>/test.php
    <?php
         phpinfo();
    ?>
    
    phpMyAdmin geht jetzt auch:
    apt-get install phpmyadmin
    
    siehe reloading apache2 - Aufruf:
    /etc/init.d/apache reload  bzw.  service apache2 reload  (Alternativen)
  • Webmin (Link)
    eine mögliche Administrationsoberfläche - aber: bitte immer daran denken, dass letztlich die tatsächlichen Konfigurationsdateien entscheidend sind und das man nicht über externe Verwaltungstools die Einstellungen durcheinander bringt!
    Installation gemäß Anleitung mit dpkg --install  für das Deb-Paket Webmin und Versuch der Nachinstallation fehlender Pakete und "Reparatur" und Komplettierung der Webmin Installation mittels apt-get -f install  (dann läuft der Webmin-Dienst auch)
    Nutzung des Webmin-Dienstes mittels Browser https://localhost:10000  bwz. über https://hostname:10000   (also Port 10000)
  • tar (Tape Archiver)
    Sammlung von Backup- und Archivierungstools, beispielhafte Nutzungen:
    tar cvzf  Dokumente-20151106.tar.gz Dokumente  
    (packt und zipped Ordner Dokumente in Archiv Dokumente.tar.gz)
    tar xvzf  Dokumente-20151106.tar.gz 
    (entpackt Archiv Dokumente im aktuellen Verzeichnis)
    Hinweise: z nutzt gzip (GNU Zip und Unzip - Packen und Entpacken), j würde bz2 als Komprimierungstechnik nutzen (Anm.: effizienter als zip aber auf Nicht-Linux-Systemen ohne geeignete Software nicht nutzbar), f (Angabe für File/Datei) muss immer am Ende stehen
    in Grafischer Oberfläche (über Dolphin): Ark
    Erstellen von Prüfsummen ("Fingerabdruck") mittels md5sum (oder sha256sum)
    komplette Partitionen oder Festplatten lassen sich mit dd sichern (Live-Medien nutzen - z.B. Anleitung)
    Grafisches Tool mit Bootmedium: Clonezilla (Link)
  • TN-Bescheinigungen, Feedback, letzte Fragen

 

...Screenshots zum Seminartag folgen...

 

 

vim Special

Jeder Server-Admin sollte einen leistungsfähigen Konsolen-Editor beherrschen. Da gibt es dann natürlich auch wieder 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!

Die Teilnehmer können (konnten) jedenfalls mit den folgenden Kurzanleitungen einen funktionsfähigen Einstieg in vim und dessen Erweiterungsmöglichkeiten erfahren.
Vorab eine kleine Übersicht / Linkliste mit Online-Infos und Quellen zum vim:

Für TN werden/wurden Ausdrucke (DinA4 einseitig) zum Vim bereitgestellt aus den freien Quellen zum Thema!

Für die folgende Installation von Emmet (siehe emmet.io) müssen die Pakete git und curl nachinstalliert werden:

apt-get install git curl

Jetzt kann es losgehen
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 Oriiginal 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) 

cd ~/.vim/bundle
git clone http://github.com/mattn/emmet-vim.git

Und schon steht emmet in vim zur Verfügung!
Test mit z.B. html:5 Tastenkombinationsfolge "Strg+y ," ergibt HTML5-Code; html:xt ergibt Grundgerüst für XHTML Code
Beachten: Standardtastenkombination ist Strg+y und danach noch , (Komma)

Weiteres PlugIn: NERDTree (PlugIn für ein Fenster im vim mit Dateimanagement)

cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git

Anleitung Kopieren und Einfügen:
(nur mit Tastatur - natürlich geht mit gpm auch markieren mit Maus und mittlere Maustaste fügt ein)

  • Kommandomodus v
  • Text mit Cursor markieren
  • mit y 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

Ok - ich gebe zu - ganz "normal" ist das nicht ;-) aber wenn man das erst einmal drin hat geht das alles rasend schnell und effizient.

Weitere kleine Beispiele: dd löscht Zeile ndd (mit n Anzahl Zeilen löscht gleich n Zeilen) ...

Viel Spaß mit dem vim!

 

 

Vielen Dank für Ihr überaus positives Feedback - viel Spaß weiterhin mit dem Server Linux.
Ihr Trainer Joe Brandes

 

P.S. Link zum Server Workshop mit Debian 7 ("Wheezy")

  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