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)
Distro Ableger der Distro Paketmanagement Red Hat
(Link)Fedora, CentOS
Kaufversion: RHELRPM (Red Hat Package Management)
Standardtool: rpmNovell (Suse)
(Link)openSUSE (Link)
Kaufversion: SLESRPM
mit YaST2-SW-Verwaltung, zypper, yumDebian
(Link)Ubuntu(s) DEB (Debian Pakete)
Standardtool: dpkg (ohne Auflösung Abhängigkeiten)
APT-Tools: apt-get, apt-cache, ... , aptitudeEntscheidung 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 nutzenssh 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 Infodateiencat /proc/meminfo
zeigt uns die Speichernutzung; alternativ /proc/cpuinfo (für Infos zur CPU)
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 2systemctl get-default# Standard anzeigen lassensystemctl 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 (sieheuseradd -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/useraddkonfiguriert!
Anzeige der Standards für neue User mituseradd -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, Befehlchmodeingeführt und im Skript nachrecherchiert
Ordner/home/mittwoch/Dokumentemit 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 Befehlenwhoami, 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-Skriptadduserunter 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 mittelscat /etc/hostname
Empfehlung: hier ausnahmsweise mal Neustart spendieren
echo $HOSTNAME
hostname - 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 aktivierenalias 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 Toolhp-setupbei 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ügbargvim(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
Tipp: achten Sie auf das "G" für die Anzeige für die Gateways
# route -n
# netstat -rn
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 / Konfigurationenoption domain-name "bu.local";
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!
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;
}
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 aktivierenecho 1 > /proc/sys/net/ipv4/ip_forward
bzw. persistent:in/etc/syctl.confeinstellen (net.ipv4.ip_forward = 1 )
Standard-Chains in/etc/iptables/rules.v4einstellen (wird bei Debian automatisch geladen!)# einkommenden Traffic erlauben
in /etc/network/if-pre-up.d/iptables (neues Skript erstellen und mit chmod +x ausführbar machen)
-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#!/bin/sh
Anm.: das sind nur sehr einfache Grundkonfigurationen, die bei weitem nicht alle Sicherheitsaspekte abdecken.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE - 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 eingetragenacl goodclients {Anm.: nur Auszug aus der Konfiguration
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; };
};
Ausführliche Tests der Konfiguraiton im Netzwerk auf Client und Server
Vor dem Neustarten des DNS-Servers (service bind9 restart) bitte vorhernamed-checkconfdurchfü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.confvergessen 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 festlegenzone "bu.local" {mit einer Kopie von db.local in
type master;
file "/etc/bind/db.bu.local";
};/etc/bind/db.bu.local
die neue Master Zone bu.local definieren
;
Einträge für die "Übungsfirma" eingerichtet und mit Tools (nslookup, dig) getestet
; 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
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.confmüssen wir die Zeile für hosts (also unsere Auflösungen) anpassen
Eintrag:hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns
ändern inhosts: 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 apache2bzw. 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/apachereload 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 mitdpkg --installfür das Deb-Paket Webmin und Versuch der Nachinstallation fehlender Pakete und "Reparatur" und Komplettierung der Webmin Installation mittelsapt-get -f install(dann läuft der Webmin-Dienst auch)
Nutzung des Webmin-Dienstes mittels Browserhttps://localhost:10000bwz. ü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") mittelsmd5sum(odersha256sum)
komplette Partitionen oder Festplatten lassen sich mitddsichern (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:
- Home:
http://www.vim.org - PDF:
http://swaroopch.com/notes/Vim/#Download - Video:
http://vimcasts.org/ - Tipps/Trick:
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 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


