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 / FTP-Server)
- Systemüberwachung und Network Monitoring
Hier die Rahmendaten unseres Seminars:
Ort: VHS Braunschweig, Raum 2.03
Zeiten: Mo, 07.11. bis Fr, 11.11.2016; jeweils 08.30 - 16.00 Uhr
Ich werde unser Seminar in diesem Beitrag wieder ausführlich begleiten...
Ihr Trainer Joe Brandes
Mo., 07.11.16
Montag, 07.11.16, 08.30 - 16.00 Uhr
- Orientierungsphase, TN-Themen
Installationsmedien: Wechselplatten und Debian 9 Stretch/Sid 64-Bit DVD - Technikprobleme Raum 2.03 (bzw. 2.11) VHS BS Infrastruktur - erkannt, diskutiert und gelöst:
Problem 1) DHCP der VHS BS Infrastruktur war für Seminarräume 2.03 und 2.11 ausgefallen!
Lösung: Admin VHS BS rekonfigurierte und startete DHCP-Server neu
Problem 2) Reborn-Card der Rechner in Raum 2.03 "schützen" den MBR der Festplatten/Wechselplatten
Lösung: Bootloader GRUB unserer Installationen nicht in MBR (/dev/sda) sondern in erste primäre Partition /dev/sda1 - 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 - die Nummer 1 bei den Server-Betriebssystemen für Web-Services und Co
Ableger: Ubuntu, Ubuntu-Varianten (Derivate: Kubuntu, Edubuntu, Mythbuntu, Xubuntu, Lubuntu, ...)
Red Hat - Firma mit Serverlizenzen Red Hat Enterprise Linux (RHEL)
Ableger: CentOS (Community Enterprise Operating System) oder für Privat-Anwender auch Fedora mit den offenen/freien SW-Paketen
Novell - SLES Suse Linux Enterprise Server (SLES)
Ableger: openSUSE - freie Community-Variante (siehe de.opensuse.org)
mit Version 42.1 hat Novell die Entwicklungspfade von SLES und openSUSE zusammengelegt (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 "Debian"
weitere Distributionen: ArchLInux, Linux Mint, Gentoo, Mandriva, ... - the list goes on and on (s. a. - Debian Versionen
9 - Stretch (aktuell noch Testing: Sid)
8 - Jessie, 7 - Wheezy; 6 - Squeeze; 5 - Lenny; 4 - Etch (Charaktere aus Toy Story)
Varianten: stable, testing, unstable (und oldstable)
Versionen ab Wheezy (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)
Download wöchentlicher Testing-Variante http://cdimage.debian.org/cdimage/weekly-builds/
Download aktuelle Stable Version Debian 8.6 Jessie http://cdimage.debian.org/debian-cd/8.6.0/amd64/iso-dvd/ - Installation von Debian 9 Stretch / 64-Bit
Wechselplatten und Install-Medium DVD an TN verteilt
Anm.: Problem bei Netzwerktechnik wegen Ausfall des DHCP-Servers für Schulungsräume!
Erkannt und Gebannt!
Stichworte: Grundinfos zu Partitionierung und Mountpoints/,/home,/var,/usr,/tmp
und Bootmanagement/dev/hdavs./dev/sda
Installation GRUB in/dev/sda1(statt sonst klassisch /dev/sda - also MBR der Platte)
siehe Problem: Rechner mit neuen Reborn-Karten in Raum 2.03 "schützen" den MBR von HDDs
LVM (Logical Volume Management); Grundinstallation
Paketauswahl (tasksel): Abwahl Standardeinträge in tasksel und Aktivierung ssh Service
Anm.: Nutzung der Installationen im "Runlevel für Server: bei Debian also #2"
Nachfrage/Hinweis: Nutzung von Virtuellen Maschinen zum Testen und Implementieren der Techniken und Netze (VirtualBox, VmWare, Hyper-V) - Netzwerkkonfigurationen
Übersicht über die wichtigsten Ordner und Dateien::/etc/networks(Netzwerke konfigurieren)/etc/hosts(statische Namensauflösungen)
Übung: lokale Rechner debian-01 bis debian-17 in die hosts-Dateien eingetragen/etc/resolv.conf(DNS konfigurieren)
a) Debian "Rohinstallation"
Erklärung über Debian Wiki zur Netzwerkkonfiguration (Link)/etc/network/interfaces(Konfiguration der Netzwerkadapter/dev/eth0,eth1bzw.enp0s25, ... 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)
Hinweis: Trainer hat "debian-15" entsprechend installiert/bereitgestellt
c) Speziell bei openSUSE:
NEU seit openSUSE 13.2: Wicked Service als Standardinstallation auf Desktop-Systemen (Anm.: bei Notebooks weiterhin NetworkManager als Standard)
Nachtrag von Mittwoch / Tag 03:
d) netconfig (bei RHEL 5.5 oder eben auch aktuell unter openSUSE 42.1 Serverminimalinstallation)
Konfigurationen in /etc/sysconfig/network-scripts in Dateien wie ifcfg-eth0 , ifcfg-eth1, ... (beispielhafte Installation)
entweder manuell bearbeiten, oder entsprechende Tools der Linux-OS nutzen - hier also natürlich gerne auch YaST nutzen - Netzwerk (eine erste Einführung / Vorarbeit für die weitere Vernetzung in der Woche)
ifconfig(Netzkonfiguration anzeigen; bzw. flüchtig konfigurieren)ip address show(oder kurz: ip a s; Tipp: besser als ifconfig, da Befehl ip auch ohne Netzwerkkonfigurationen für die Adapter klarkommt und somit gerade bei problematischen Installationen auskunftsfreudiger ist)route(Netzrouting anzeigen; bzw. flüchtig konfigurieren)ip route show(oder kurz: ip r s)ping-c 10 www.bahn.de (bitte mit -c Anzahl der Pings angeben)traceroutewww.nytimes.com (Routing der Pakete zu Ziel anzeigen)netstat-nr (zeigt Routingtabelle)netstat-a (zeigt Portbelegungen - gerne auch der Klassiker:)netstat-tulpen (lässt sich gut merken - oder?)lspci-v (zeigt Geräte - dann nach Ethernet suchen)hwinfo--netcard (zeigt Zuordnung der Netzwerkadapter zu den Gerätekennungen; Paket: hwinfo) - Netzwerkanalyse / Netzwerkplanung
Daten über aktuelles Netz gesammelt und Plan für Vernetzung und Dienste (Services) für spätere BU-Firma erstellt
Genereller Plan: (Anm.: wird morgen weiter ausgearbeitet)
Abkopplung des Seminarraum mit Hilfe eines Debian-basierten Routers (NAT-Routing)
und Implementierung von Netzwerkdiensten DHCP, NAT-Routing und DNS (Caching / Forward Lookup Zone / Reverse Lookup Zone - 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
Erinnerung: DNS wird mit/etc/resolv.confkonfiguriert! - Hostname (Name der Maschine - Hinweis: keine Netztechnik)
geändert über Datei/etc/hostname
Anzeige mittels
# cat /etc/hostname
Empfehlung: hier dann ausnahmsweise mal Neustart spendieren!
# echo $HOSTNAME
# hostname - 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)
Anm.: in Debian Server/Rohinstallation nicht an Bord! - 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
Übung: die Install-DVD aus der sources.list deaktiviert (auskommentiert), dabei man sauber Software aus den Online-Quellen installieren/aktualisieren kann!
System aktualisieren: (besonders auch nach einer Änderung an der sources.list !)
apt-get update # (Paket-DB aktualisieren) apt-get upgrade # (Aktualisierung durchführen)
apt-get install mc # (Installation Midnight Commander) - 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 Grafikoberflächen/GUIs mittels Strg + Alt + Fx)
Konsole "löschen": clear screen bzw. Strg + L
ans Ende mit Strg + E, an den Anfang mit Strg + A
Löschen der Zeile ab Cursor: Strg + K
System herunterfahren
shutdown -h now # oder
erste Schritte in der Shell mit Befehlen cd, cat, more, less inklusive Piping (weiterleiten an nächsten Shell-Aufruf mit |)
poweroff - 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 - Benutzerprofile mit der ~/.bashrc
Übung: für Benutzer root mittels seiner/root/.bashrcdie Konfigurationen zur Nutzung des Syntaxhighlighting auskommentieren und die vorbereiteten Aliase nutzen
zum Beispiel: beim root die Interaktivität (Nachfrage) für das Löschen mit rm aktivierenalias rm='rm -i'
So würde man immer eine Nachfrage bei Löschvorgängen erhalten - Hilfen in Shell (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 Verzeichnisstrukturen:/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 - ssh (ein erster Test und Überblick)
unter Linux einfach in der Konsole direkt nutzenssh username@<rechner-name-oder-ip>
unter Windows brauchen wir natürlich einen ssh-Client:
# Dienststatus ssh abfragen:
systemctl status sshd.service
Klassiker Putty (Link) oder WinSCP (Link) -
Empfehlung: MobaXterm (Link)
Di., 08.11.16
Dienstag, 08.11.16, 08.30 - 16.00 Uhr
- Ausführliche Rekapitulation zu Tag 01 - Plan für die Woche weiter spezifieren (s. a. Netzplan), TN-Fragen
Übungen zu ssh von Windows und Linux Rechnern aus
Empfehlung: MobaXterm - ssh (Fortsetzung)
unter Linux einfach in der Konsole direkt nutzenssh -X username@<rechner-name-oder-ip> # ssh-Verbindung mit X-Server - also grafische Fenster möglich!
unter Windows brauchen wir aber einen ssh-Client mit X-Server:
MobaXterm nutzen oder Installation von Umgebungen wie Cygwin - Übung Netzwerktechnik
Konfiguration der Debian-Systeme auf klassische statische Konfigurationen mit Hilfe der
Konfigurationsdatei/etc/network/interfaces
hier Auszug aus der Konfiguration:
...
Für die Konfiguration mittels DHCP war es:
auto enp0s25
allow-hotplug enp0s25
iface enp0s25 inet static
address 192.168.3.117
netmask 255.255.255.0
gateway 192.168.3.1
...
...
Für diese Netze bitte auch Tools beachten:
auto enp0s25
allow-hotplug enp0s25
iface enp0s25 inet dhcp
...ifup,ifdown
Beachten: bei Verwendung von NetworkManager (z.B. unter Gnome-Desktop) dann bitte abweichende Konfigurationsdateien beachten, die häufig auch möglichst nicht manuell bearbeitet werden sollten (siehe:/etc/NetworkManager/system-connections/Wired connection 1)
In der Übung auch gleich die Rechnernamen / Hostnames in Ordung gebracht (bu-debian-XY- XY=Platznummer 2-stellig) und die/etc/hostsaktualisiert/korrigiert - 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!
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
Paket entfernen:
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 Paketdpkg -r <paketname> # Konfigurationen bleiben
Pakete auf System auflisten:
dpkg -P <paketname> #ALLES inkl. Konfiguration entfernendpkg -l
Pakete suchen auf System:
dpkg -l | less
dpkg -l | grep opensshdpkg -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"apt-cache search suchbegriff
Installation inklusive Abhängigkeiten mittels Werkzeug apt-get
apt-get install mc # installiert auch gleiche mc-data
Konfiguration von apt-get (Paketquellen) in Datei sources.list:
apt-get remove <paketname> # (Entfernen exkl. Konfigurationen; entspricht -r)
apt-get --purge remove <paketname> # (gründliches Entfernen; entspricht -P inkl. Konfigurationen)/etc/apt/sources.list
System aktualisieren:
apt-get update # (Paket-DB aktualisieren) apt-get upgrade # (Aktualisierung durchführen)
Weiteres Tool aus der APT-Toolfamilie:
apt-get dist-upgrade # (Distro upgraden - von Debian 8.6 auf Debian 9)aptitude(kann einfach nachinstalliert werden) - Prozesse (ein erster Einblick)
Tool:ps;
Aufgabe: läuft der OpenSSH-Service? Besser später dann mit den systemd-Tools...
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)
Tool zu Prozessen:pstree -p(zeigt die Prozesse als Baum inkl. Prozess IDs)
Übung: Nachinstallation mittels Recherche mit APT-Tools ergibt Paketinstallation psmisc - 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 Haupttoolsystemctl(und nicht sysctl)
Beispielaufrufe:systemctl isolate multi-user.target# in Runlevel 2/3/4 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)
Mehr Aufrufe und Vergleich mit SysVinit mit Linux-Befehlsreferenz auf diesem Portal - Installation
bu-routerdurch Trainer
ein openSUSE 42.1 Konsolensystem für Darstellungen mit RPM und wegen Hardwarekompatibilität
Router-PC besitzt zwei NIC (Network Interface Card)
Mi., 09.11.16
Mittwoch, 09.11.16, 08.30 - 16.00 Uhr
- Rekapitulation, TN-Fragen
- Benutzer verwalten:
Anmerkung: Debian erstellt standardmäßig für jeden Benutzer eine besondere Gruppe gleichen Namens
Grundbefehl: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
Homedirs werden aus Verzeichnis
# passwd tn01/etc/skelmit Parameter -m "geclont / make Homedir"
Standardeinstellungen für neue User werden über/etc/default/useraddkonfiguriert!
Anzeige der Standards für neue User mituseradd -D
Ändern der primären Gruppe mitusermod -g(beachten: kleines g!)
Andere Gruppen dann mit:usermod -G <group1>,<group2>
Benutzerdatei:/etc/passwd
Übersicht über User auf System:<username>:x:<uid>:<gid>:<Kommentar>:<homedir>:<shell>
Anm.: die Shell(s) am Ende beachten
Passwort- und Benutzereigenschaften:/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!)
Benutzer löschen:
usermod -s <shellneu> <username> # (andere Shell)
usermod -L # (Lock; Benutzer sperren)
usermod -U # (Unlock; Benutzer entsperren)userdel <username> # (nur Benutzerkonto löschen)
Gruppen erstellen:
userdel -r <username> # (Benutzer inklusive Homedir)groupadd <group>
Passwort erstellen:
groupadd -g <gid> <group> # (mit Vorgabe einer gid)passwd <username> # (siehe /etc/shadow)
Kennwortrichtlinien:chage<username> (Richtlinien anzeigen)
siehe auch Tools adduser, addgroup (nicht bei allen Linux-Distros vorhanden - bitte mal schauen; techn.: Perl-Skript)
Workshop/Übungen: Einrichten von Benutzern; s.a. who, whoami, id, groups - Tools für Berechtigungen
chown(auch als Ersatz fürchgrpmit chown user:group)chmod(Rechte setzen mit Buchstaben oder oktal) - 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 nachrecherchiert
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
so hat auch normaler User mit Tool passwd die nötigen root-Rechte um /etc/shadow (Passworte) zu schreiben
SetGroupID - chmod g+s - chmod 2644
StickyBit - Beispiel Ordner /tmp - chmod o+t - chmod 1755 - Übungen zu Dateien und Ordnern in der Konsole
Befehle:cd,ls,mkdir,mv,cp,ln,rm
Symbolische bzw. Softlinks mit ln -s (Verknüpfungen zu Dateien oder Ordnern)
Hardlinks ohne den Schalter -s (Verweis auf Datei; funktioniert nur auf demselben Blockgerät - also der selben Partition!)
Hinweis auf Datenträgerverwaltung mittel Inodes: ls -ali
so klären sich auch die Zahlen in der Spalter für "User / Gruppe": 3 bedeutet, dass es eben 3 Harte Links also Verweise auf dieselbe "Speicherstelle/Inodenummer" im Datenträgerverwaltungssystem gibt
Tipp: alle Dateieinträge (Hardlinks auf dieselbe Inodenummer) finden und löschen:find /home/ -inum 262862 2> /dev/null -exec rm -f {} \;Hier: smarte Ausblendung von Zugriffs-/Berechtigungsproblemen (z.B. Nachbarordner oder lost+found): Fehlermeldungen werden mittels 2> ins Nichts umgelenkt - 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 www-data: /bin/false), Sekundäre Gruppen
Abschlussübung: neue Benutzer angelegt und angemeldet und getestet
Tests mit gegenseitigen Zugriffen der Benutzer - 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 - Netzwerkanalyse / Netzwerkplanung
Daten über aktuelles Netz gesammelt und Plan für Vernetzung und Dienste (Services) für unsere spätere "BU-Firma" erstellt
Generell:
Abkopplung des Seminarraum mit Hilfe eines Linux-basierten Routers (NAT-Routing) und dann
Implementierung von Netzwerkdiensten DHCP und DNS (Caching / Forwarding - eigene lokale Domäne)
Hinweis Netzwerktechnik auf Router bu-router wegen verwendeter openSUSE 42.1 Serverinstallation:netconfig
Erläuterung wurde bei Seminartag 01 in den Abschnitt "Netzwerkkonfigurationen" mit aufgenommen! - NAT-Routing mit Netfilter/iptables
Hinweis: SUSE-Systeme wollen eigentlich die SuseFirewall2 nutzen, diese Suse-FW haben wir nicht installiert, sondern nutzen den Standard mit Netfilter/iptables
Tipp: für spätere nachhaltige Einstellungen zu den iptables das Paket iptables-persistent (bzw. netfilter-persistent) nachinstallieren
Wir arbeiten erst einmal mit einfachen manuellen Inbetriebnahmen der nötigen FW-Regeln
Für die folgenden Befehle bitte die richtigen Router-NICs beachten: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.confeinstellen (net.ipv4.ip_forward = 1 )
2) Forwarding von Paketen in "table filter" für beide Richtungen (LAN -> WAN und WAN -> LAN):
Anm.: Angabe von -t filter kann als Standard weggelassen werden!iptables -t filter -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -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!
iptables -t filter -A FORWARD -i eth0 -o eth1 -j ACCEPT
3) Für die Anbindung eines LAN mit mehreren Hosts müssen wir jetzt noch das NAT-Routing (Masquerading - Animation mit 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)
Do., 10.11.16
Donnerstag, 10.11.16, 08.30 - 16.00 Uhr
- Rekapitulation, TN-Fragen
Wiederholung zu Netfilter/iptables auf Maschine bu-router: "NAT-Routing" für das LAN - Netfilter/iptables (Forts. / Überlegungen zu Filterregeln / nachhaltige Konfiguration nach Reboots)
Grundeinstellung der NAT-Routing Lösung diskutiert und erläutert (siehe Do)
Bereitstellung der Konfiguration für Maschine bu-router mittels
a) Firewall Skript (kann später automatisch beim Systemstart ausgeführt werden - chmod +x nicht vergessen!) oder aber mittels
b) iptables-persistent (bzw. netfilter-persisten) Paket/Software für die iptables
Die persistent-Lösung arbeitet mit Befehlen iptables-save und iptables-restore und Dateien /etc/iptables/rules.v4.
Wir haben im Netz unterschiedliche praktische Umsetzungen recherchiert und begutachtet.
Theorie/Darstellung im Web zum Thema SNAT/Masquerading - DHCP Server (isc-dhcp-server)
Vorbereitung: Konfiguration des Servers auf statische IP: 10.0.0.100/8 inkl. Kontrolle/Anpassung von StdGW/DNS
Bitte checken:/etc/default/isc-dhcp-server(Konfiguration des NIC für DHCP)
Paket: isc-dhcp-server
systemctl restart isc-dhcp-server.service # re-startet den DHCP-Server
Die eigentliche Konfiguration liegt natürlich wieder in /etc:/etc/dhcp/dhcp.conf
Beispieleinträge / Konfigurationenoption domain-name "firma.bulocal";
Kurzanleitungen im Web (Link) für Debian und den ISC DHCP Server
option domain-name-servers 10.0.0.100;
...
subnet 10.0.0.0 netmask 255.0.0.0 {
range 10.0.0.200 10.0.0.250;
option routers 10.0.0.1;
}
Nach DHCP-Server Implementierung Tests der Clients und Renew der IP-Konfigurationen - Anmerkung zu Namen und Adressen
manche Maschine hätte man im "Nachhinein" andere Hostnames verpassen können, aber das wird natürlich über eine Vorplanung der Netzstruktur und Syntax für die beteiligten Maschinen im Netz vorher festgelegt!
Wir haben das im Seminar einfach während der verschiedenen technischen Umsetzungen eingeführt und/oder so gelassen! - DNS (Teil 1 - Caching / Forwarding)
Einrichtung DNS als Caching DNS und Forwarder
Installation und Einrichtung gemäß Anleitung
Achtung: da wir jetzt einen DNS-Server (host: bu-debian-17 - 10.0.0.100 / 8) haben - und auch nur diesen als DNS-Ansprechpartner haben wollen - müssen wir natürlich den DHCP Server anpassen (option domain-name-servers 10.0.0.100 statt vorher 192.168.3.1)
Ausschnitt der Konfiguration für den DNS-Server (hier:/etc/bind/named.conf.options)
Als forwarders wurde 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 {
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 gerne vorhernamed-checkconfdurchführen! Grund: die Konfigurationen sind sehr empfindlich und man kann sich schnell mal vertippen oder ein ";" vergessen! - DNS (Teil 2 - lokale Forward Zone firma.bulocal)
Beim DNS-Server bu-debian-17 (10.0.0.100) wichtig:
für den DNS-Server selber bitte nicht die/etc/resolv.confvergessen und dort den nameserver 10.0.0.100 Eintrag vornehmen und testen!
Anm.: das gilt generell für alle statisch konfigurierten Maschinen (Server)
Testbefehle:nslookup,dig(Nachinstallation Paket dnsutils)
Zweiteilige Anleitung (Jack Brennan . com)
Part 1 - englisch - Grundkonfiguration - Testing
Part 2 - englisch - Master DNS Zone mit Bind9
die Vorgehensweise (2 Konfigurationsdateien) in Kürze:
in/etc/bind/named.conf.local
eine neue Zone festlegenzone "firma.bulocal" {mit einer Kopie von db.local in
type master;
file "/etc/bind/db.firma.bulocal";
};/etc/bind/db.firma.bulocal
die neue Master Zone firma.bulocal definieren
;
Einträge für die "Übungsfirma" eingerichtet und mit Tools (nslookup, dig) getestet
; BIND data file for bu.local.
;
$TTL 604800
@ IN SOA firma.bulocal. root.firma.bulocal. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.firma.bulocal.
@ IN A 10.0.0.100
@ IN AAAA ::1
ns1 IN A 10.0.0.100
www IN A 10.0.0.100
bu-router IN A 10.0.0.1
bu-debian-13 IN A 10.0.0.200
bu-debian-02 IN A 10.0.0.205
Anm.: (noch) keine Revers-Lookup-Zone eingerichtet! Das wäre für alle Installationen "Mail Exchanger" aber notwendig! - DNS (Teil 3 - lokale Reverse Zone 10.in-addr.arpa)
Jetzt also noch für unsere lokale Firma "firma.bulocal" im Netz 10.0.0.0/8 eine Reverse Lookup Zone
in/etc/bind/named.conf.local
eine neue Zone unterhalb der Forward Lookup Zone "firma.bulocal" festlegen:
zone "10.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.10";
};
Und jetzt noch die Reverse Lookup Zonen Datei/etc/bind/db.10(Tipp: Kopie aus db.127 erstellen); BIND reverse data file for LAN-Subnet
Alles natürlich wieder mit nslookup und dig testen!
;
$TTL 604800
@ IN SOA firma.bulocal. root.firma.bulocal. (
060520139 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS bu-debian-17.test.local.
100.0.0 IN PTR pc.test.local.
1.0.0 IN PTR bu-router.firma.bulocal.
200.0.0 IN PTR bu-debian-13.bufirma.bulocal.
205.0.0 IN PTR bu-debian-02.bufirma.bulocal. - Hinweis auf Screenshots zum Seminar
Vorgriff auf Morgen: Freigaben im Linux-Netz mit NFS
Firewall Skript
/etc/default/isc-dhcp-server
/etc/bind
/var/lib/dhcp/dhcpd.leases
Zone firma.bulocal
dig - Reverse Lookup
Fr., 11.11.16
Freitag, 11.11.16, 08.30 - 16.00 Uhr
- Rekapitulation, TN-Fragen (hier: Virtualisierungen)
Plan/To-Do-List:
Nachtrag Netfiter/iptables, Bibliothek Linux (aktuelle Serverliteratur), NFS, Backup (tar, dd), LAMP-Systeme auf TN-PCs, ...
Wichtig: Raum 2.03 "umswitchen" (Netzwerkkabel, Wechsel-HDDs) - Netfilter/iptables (Rekapitulation zu Do/Tag 04 und Fortsetzung)
Beispielhafte iptables Aufrufe in einem Skript und Nutzung der iptables-persistent Technik (hier nur v4)
#!/bin/bash
Hinweis: bei Rechnern im "Netz" bitte iptables-Tests direkt auf den Maschinen und nicht per ssh, sonst kann man sich sehr schnell "aussperren"!
### SSH Verbindungen erlauben
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
### Alle nicht erlaubten eingehenden Verbindungen verbieten
iptables -P INPUT DROP
### Webserverbindungen erlauben
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
### Etablierte Verbindungen erlauben
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# FERTIG - Nicht vergessen die Regeln zu persistieren wenn diese funktionieren.
echo "iptables-save > /etc/iptables/rules.v4"
echo "ip6tables-save > /etc/iptables/rules.v6" - Bibliothek "Linux - Server" (Link PCSYS-Portal)
Hinweise auf Rheinwerk-Verlag "Linux Server - Das umfassende Handbuch" (Diverse Autoren)
und "Linux-Server" (Eric Amberg; Ausgabe zu Debian 8 Erscheinungstermin 31.12.16)
Zeitschriften: Linux-Magazin, LinuxUser - DNS (Teil 4 - Rekapitulation)
eine wiederholende Zusammenfassung mittels der dargestellten Zonen von gestern
Einträge von neuen Werten in Forward- und Reverse-Lookup-Zonen;
Erhöhen der "serial"-Werte und Reload des DNS-Dienstes mitsystemctl reload bind9und
Anzeige der der genutzten serial beisystemctl status bind9
Übungen mitnslookupunddigTools - Virtualisierungen (kurze Darstellung; z.B. auch für Testumgebungen Linux Services)
eine kurze Übersicht:
Hyper-V: Microsoft Windows Server und ab Windows Pro Client-Lizenzen
VirtualBox: heute Oracle; für diverse Gastgeber (Host) Betriebssysteme verfügbar; kostenlos
KVM / qemu: Kernel-based Virtual Machine, also eine Infrastruktur ab Linux-Kernels 2.6.20+; QEMU (Quick Emulator) für die "virtuelle HW"; Canonical (Ubuntu), Red Hat und Suse haben von Xen ("veraltet") auf KVM gewechselt (siehe YaST-Modul für Virtualisierung/Hypervisor Konfiguration); siehe hierzu OVA Open Virtualization Alliance
VMware: kommerzielle Virtualisierung mit kostenlosen Tools (z.B. VMware Player); VMware Sphere Profivirtualisierung für Rechenzentren
OpenVZ / Virtuozzo: auf Linux Systeme spezialisiert; OpenVZ seit 2005 auf Basis von Virtuozzo als Open Source
Docker: Anwendungen mit OS-Virtualisierung in Containern bereitstellen; sehr schlank und schnell; bei Linux kann man sofort ein Virtuelles Betriebssystem (Virtuelle Anwendungen) als Container bereitstellen; bei Windows (oder auch MacOS) benötigt man hierfür noch einen Virtualisierer, also z.B. VirtualBox
Praxis mit VirtualBox 5.x auf einem Windows 10 Pro Rechner gezeigt:
Installation mit Hilfe eines Debian-9-ISO (Tipp: CDBurnerXP für ISO-Erstellung aus CD/DVD)
Netzwerkkonfigurationen: NAT, NAT-Netzwerk, Bridged, Internes Netz (intnet), Host-Only (nur Netz zwischen Host und Gast) - NFS - Network File System
Kurzanleitung vom Wiki-Ubuntuusers zur einfachen Installation und Nutzung (ro - read only) von NFS-Freigaben (exports) praktisch in kleinen Gruppen durchgeführt
bei Debian/Ubuntu: Pakete nfs-kernel-server und nfs-common (Tools und NFS-Client) installieren;
die Datei/etc/exports
enthält die Konfigurationen für die Freigaben:# Freigabe gilt für alle IPs in 10.0.0.0/8, mit Leserechten:
Nicht vergessen den NFS-Server neu zu starten oder die mit
/pfad/zur/freigabe 10.0.0.0/255.0.0.0(ro,async,no_subtree_check)exportfs -radiese neu einzulesen
Anzeige der NFS-Freigaben auf einem entfernten NFS-Server:showmount -e <Name-oder-IP-Adresse>
Auf der Client-Seite dann entweder manuell mit:mount 10.0.0.100:/nfsfreigabe /mnt/nfszeug
oder durch Eintrag in die/etc/fstab
die Freigabe ins System mounten# Beispiel für den Eintrag in die /etc/fstab:
Alles natürlich sauber testen. Spätestens mit Wünschen nach RW (read write) wird es komplizierter.
10.0.0.100:/nfsfreigabe /mnt/nfszeug nfs rw 0 0 - LAMP System (1-2-3-Anleitung)
Linux, Apache (Webserver), MariaDB (MySQL - Datenbank), PHP (Serverseitige Skriptsprache)
Kurzanleitung gemäß diverser Anleitungen im Netz; hier Vorgabe: PHP 7 als Version gewünscht
Webserver Apache installieren:apt-get install apache2
und testen: Webclient (Browser) auf Adresse/Name der Install-Maschine - also:http://10.0.0.100
Datenbank-Server MariaDB installieren:apt-get install mariadb-server mariadb-client
und mit Aufruf des Toolsmysql_secure_installation
mit DB-root-Zugangskennwort und diversen anderen Eigenschaften versehen. Trainer hat den beispielhaften Zugriff über die Client-Konsole mysql kurz gezeigt und dargestellt:mysql -u root -h localhost - p # mit mysql-Client Verbindung zu Server aufnehmen
PHP 7.0.x mit einigen Zusatztools/Paketen installieren:
> show databases;
> use mysql;
> quit;apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-mcrypt php7.0-curl php7.0-gd php7.0-mbstring php7.0-xml php7.0-soap curl php-gettext php-pear
Anm.: die wichtigsten PHP-Install-Pakete wurden hervorgehoben; diese Basisinstallation richtet sich an den empfohlenen Installationsumgebungen eines späteren TYPO3-Webservers aus.
Alternativ würden die PHP 5.6 Installationen (aktuell mit Jessie - Debian 8)apt-get install php5 php5-mysql libapache2-mod-php5
lauten. Das "recommended Setup" für eine TYPO3-Umgebung verlang auch noch nach folgenden Apache2-Modulen: mod_rewrite und mod_expires
Die Installationen erfolgen mit:a2enmod expires
und nachfolgendem Apache2-restart z.B. mit:service apache2 restart
Die Install-Umgebung von Apache2 und PHP lässt sich mit einem kleinen PHP-Skript analysieren, das wir im WWW-Root-Ordner des Servers ( /var/www/html )
erstellen:cd /var/www/html
und mit folgendem PHP-Skript füllen:{code lang:php showtitle:false lines:true hidden:false}<?php
touch info.php
phpinfo();
?>{/code}Nach Aufruf des phpinfo-Skripts über seine URL <Name-IP-Adresse>/info.php kann man die Umgebung von Apache2 / PHP analysieren.
Die zuständige PHP-Konfigurationsdatei ist/etc/php/7.0/apache2/php.ini
Wir nehmen ein paar abschließende PHP-Konfigurationen vor:memory_limit = 256M # statt vorher 128M
Jetzt müssten noch ein paar Tools installiert werden (z.B. imagemagick bzw. graphicsmagick) und wir könnten uns mit der VirtualHost Konfiguration für einen Apache2-Webserver beschäftigen.
max_execution_time = 300 # statt vorher 30 Sekunden - TN-Bescheinigungen, Feedback-Bögen, letzte TN-Fragen
Vielen Dank für Ihre überaus freundlichen und positiven Feedbackbögen und die "Stimmung" in der Seminarwoche.
Ihr Trainer Joe Brandes