Dieser Workshop richtet sich an interessierte Teilnehmer, die tiefer in das Betriebssystem Linux eintauchen möchten.
Das Seminar soll die Informationen zum Thema "Linux" (siehe Modul des FITSN) vertiefen und fortführen: Linux also als Serversysteme und Diensteanbieter in Netzwerken. Hierzu werden wir uns alle notwendigen Themen für diese Einsatzzwecke vornehmen und dann die Serverdienste implementieren und nutzen.
Für den Einsatz in unserem (virtuellen) Firmennetzwerk und für die nötigen Infrastrukturen werden wir verschiedene Standard-Distributionen einsetzen:
- openSUSE (Leap 15 - als: Client mit KDE)
- Debian (Stretch 9.5 - als: NAT-Router, Server, Client)
- centOS (7.5.1804 - als: Server, Client)
- Windows 10 (1803 - nur als Client ;-)
Mögliche Inhalte::
- Infrastruktur (DNS- / DHCP-Server / NAT-Routing)
- Linux als File-, Print- oder LDAP-Verzeichnis-Server
- Web-Applikationen (Apache2 / FTP-Server, LAMP)
- Sicherheit / Firewalling (Netfilter/iptables)
- Systemüberwachung und Network Monitoring
Hier die Rahmendaten unseres Seminars:
Ort: VHS Braunschweig, Raum 2.11
Zeiten: Mo, 29.10. bis Fr, 02.11.2018; jeweils mit TN koordiniert
(eigentliche Rahmenzeit: 08.30 - 16.00 Uhr)
Anm.: neuer Feiertag Mi. 31.10.2018 wird mit TN im Seminar koordiniert
Ich werde unser Seminar in diesem Beitrag wieder ausführlich begleiten...
Ihr Trainer Joe Brandes
Mo., 29.10.18
Montag, 29.10.18, 08.30 - 16.30 Uhr
- Orientierungsphase, TN-Themen
Zeitenkoordination wegen "neuem" Feiertag Mittwoch 31.10.2018! - Distributionen und Virtualisierungen
Debian - Nummer 1 bei den Server-OS für Web-Services und Co
Ableger: Ubuntu, Ubuntu-Varianten (Kubuntu, Edubuntu, Mythbuntu, ...)
Red Hat - Firma mit Serverlizenzen Red Hat Enterprise Linux
Ableger: Fedora mit den offenen/freien SW-Paketen, CentOS
Novell - SLES Suse Linux Enterprise Server
Ableger: openSUSE - freie Community-Variante (siehe de.opensuse.org) - mit Version 42.1 hat Novell die Entwicklungspfade von SLES und openSUSE zusammengelegt
(Versionen: → 11.x → 12.x → 13.1 - 13.2 → Leap 42.1 - 42.2 - 42.3 → Leap 15.0)
Distro Ableger der Distro Paketmanagement Red Hat
(Link)Fedora (Desktop) bzw.
CentOS (Red Hat Server)
Kaufversion: RHELRPM (Red Hat Package Management)
Standardtool: rpm (ohne Auflösung Abhängigkeiten),
yumNovell (Suse)
(Link)openSUSE (Link)
Kaufversion: SLES
bzw. SLEDRPM
mit YaST2-SW-Verwaltung, zypper, yumDebian
(Link)Ubuntu(s),
Linux MintDEB (Debian Pakete)
Standardtool: dpkg (ohne Auflösung Abhängigkeiten)
APT-Tools: apt, (klassisch: apt-get, apt-cache,
aptitude, ...VirtualBox Host-OS: (Entscheidung für "Suse"-Distro als Host)
recht gute Einbindung in Paketverwaltung und einfache Funktionalität "out-of-box"
Entscheidung zum "Virtualisieren"
+ Jeder TN bekommt sein eigenes Netz / seine eigene Infrastruktur
+ Einfache Bereitstellung von Installmedien als Downloads/ISOs
+ TN können gesamtes "BU-Firmen-Netz" am Ende des Seminars mit nach Hause nehmen! - Installation von VirtualBox-Host: openSUSE Leap 15.0 (64-Bit)
Install-Medien: (TN bekommen aktuelle Install-DVD)
CD (Netzwerk-Install; aktuell ca. 100 MB; bei Installation werden alle Pakete aktuell nachgeladen: ca. 3-4 GB),
DVD (auch als Live-DVD),
Netzwerk-Quellen (FTP, HTTP, NFS, SMB/CIFS, PXE/TFTP);
immer auch Quellen in 32- und 64-Bit und für andere Hardware (also nicht nur Intel x86 bzw. x86_64)
Hinweis: Bereitstellung von Checksums (sha256) zur Verifizierung der Unversehrtheit und Originalität der Downloadarchive (Isos)
Spezialität von openSUSE: YaST - Yet another Setup Tool (Installations- und Setup/Konfigurationswerkzeug) - Links zu openSUSE: (im Seminar dann auch für die anderen Distros)
Portal: https://www.opensuse.org/
Wiki deutsch: https://de.opensuse.org/Hauptseite
Wiki Leap 42.3: https://de.opensuse.org/Portal:42.3
Leap Download: https://software.opensuse.org/distributions/leap
Documentation english: https://doc.opensuse.org/
Upgrades: https://de.opensuse.org/SDB:Distribution-UpgradeDistribution-Upgrade
(kürzer/besser: engl. Variante des Upgrade DB Eintrags)
Tumbleweed rolling upgrades: https://software.opensuse.org/distributions/tumbleweed -
Partitionen
Gerätenamen/dev/sda
(für den ersten Datenträger - dann/dev/sdb, ...
)
eingerichtete Partitionen mit Nummern:/dev/sda1, /dev/sda2, ...
Anm. bei MBR dann/dev/sda5
als erste logische Partition (log. LW) in einer erweiterten Partition
früher bei EIDE-Geräten:/dev/hda
; die sda-Bezeichner dann für SCSI, SATA und heute auch USB-Medien
Alternativ: Verwendung von Geräten-ID-Bezeichnern (siehe später GRUB oder auch/etc/fstab
)
Aktuelle Distributionen: UUID als eindeutige Bezeichner für die Partitionen/Datenträgerbereiche
Vorteil: dann werden die Datenträgerbereich auch sauber gemountet, wenn diese mal statt auf/dev/sda2
auf/dev/sdb1
liegen sollten!
heutige Installation mit folgenden Partitionen angelegt: (ein Screenshot für eine beispielhafte Installation ist unten angefügt)Abweichung von openSUSE-Install-Vorschlag für den VirtualBox-Host:
openSUSE würde gerne BtrFs als Dateisystem für das System ( Ordner/
bzw. auch/boot
) und xfs für die Daten (siehe/home
) vorschlagen, aber wir wollen hier die "klassischen" Ext-Dateisysteme Ext4 in sehr einfacher Partitionierung zur optimalen Nutzung unserer 120 GB Wechsel-SSDs nutzen.Kurze Erinnerung an Dateisysteme:
ext2, ext3 (ist ext2 mit journaling FS), ext4 (klassisches Linux-Standard-FS), xfs, BtrFS, ReiserFS, Fat16, Fat32 (VFat), NTFS
grobe Einteilung/Partitionierung:
hier im Seminar: GPT Verwaltung der SSD mit UEFI (Anm./Erinnerung: bei MBR gibt es die 4 klassischen primären/erweiterten Partitionen):
Anleitung für Systempartitionen in diesem Seminar:
Bereitgestellte Wechsel-SSD: 120 GB bzw. 111,8 GiB (per UEFI/GPT)Mount Nutzung Eigenschaften /boot/efi EFI-Partition Größe: 500 MiB (siehe ggf. Meldung YaST)
eig. min. 100 - 250 MiB (nach UEFI-Norm empfohlen)
Filesystem: FAT32 (auch als VFat bezeichnet)
Gerät:/dev/sda1
(ESP - EFI System Partition)
Bootflag und möglichst Anfang der Partitionen
Anm.: Windows EFI kann mitgenutzt werden!/ Root-Partition Größe: 105 GiB
Gerät:/dev/sda2
(Root Partition)
Filesystem: ext4swap Auslagerungspartition,
VMM Virtual Memory ManagementGröße: ca. +6 GiB
Gerät:/dev/sda3
(Swap Partition)
Filesystem: swaplsblk
,fdisk -l /dev/sda
,gdisk
(siehe GPT) ,cfdisk
möglicherweise Problem bei Darstellungen mit Konsolentools *disk:
Tipp: falls Umlaute und Sonderzeichen falsch dargestellt werden:env LANG=C cfdisk
Erklärung: in Umgebung (env) wird als Sprache C eingestellt, was der Sprache/Kodierung des Programms entspricht (hier "englisch") - openSUSE System aktualisiert
(Anm.: im Seminar: DVD von August 2018 -> ca. 100 Pakete zu aktualisieren plus neuer/aktualisierter Kernel ...)
Aktualisierungs-Gadget" (Package-Kit) aus der Kontrollleiste - Anm.: Kollision mit Shell-Tools möglich, da dieselbe Bibliothek (libzypp) genutzt wird!
Vorgriff auf Befehlszeile: Aktualisierung mit Toolzypper
(siehe libzypp Unterstützung;zypper update
)
Anm.: "stabile" Desktop-Umgebungen (KDE5 Plasma) manchmal erst nach Neustarts (siehe auch Installation Nvidia-Treiber Dozent-PC 17);
Screenshots: Alternative "Spactacles" in openSUSE KDE installiert (Anm.: KSnapshot für Bildschirmfotos mitDruck
-Taste wurde in 42.1 in Rente geschickt - removed)
Grundkonfiguration: automatische Bildschirmfoto-Dateien mitUmschalten + Druck
- Netzwerk-Analyse
Erste Netzwerkanalyse mit Linux:
IP-Konfiguration Shellaufrufe IPv4-/IPv6-Adresse
Subnetmaskip address show
(zeigt immer alle NICs)ip a s
(kurze Variante)
Tool ifconfig nicht mehr standardmäßig installiert:/sbin/ifconfig
Standardgateway
(bzw. Router)/sbin/route -n
hier: in Spalte Flags das G suchen - dann Spalte Routerip route show
ip r s
(kurze VarianteDNS-Server cat /etc/resolv.conf
hier: Zeile mit nameserver analysieren
aber: Datei wird von den Netzwerkkonfigurations-Diensten
Wicked (bzw. NetworkManager) manipuliert
keine manuelle Änderung gewünscht! - Topologien und Firmennetz planen
Enwurf mit TN skizziert (siehe LibreOffice Draw Entwurf)
Wichtig: Suffix/Prefix für Techniken mit Hilfe der PC-Platznummern (siehe Dozentenarbeitsplatz: 17)
Beispiel:
geplante Domain (FQDN):firma17.local
Rechnernamen:router17
,server17
Firmennetz (IPv4):192.168.17.0 / 24
Anm.: im Laufe des Seminars erarbeitet und aktualisiert. - Netzwerkkonfigurationen (eine Übersicht)
Übersicht über die wichtigsten Ordner und Dateien::/etc/networks
(Netzwerke konfigurieren)/etc/hosts
(statische Namensauflösungen)/etc/resolv.conf
(DNS; Inhalt gibt Aufschluss über Konfigurationstechnik)
a) Debian "Rohinstallation"
Erklärung über Debian Wiki zur Netzwerkkonfiguration (Link)/etc/network/interfaces
(Konfiguration der Netzwerkadapter/dev/eth0
,eth1
bzw.enp0s3
, ... mit statischen oder DHCP Konfigurationen)
b) Debian "Komplettinstallation" (also inkl. Desktop Gnome) nutzt den NetworkManager
hier übernimmt die Konfiguration ein (Gnome-)Tool als Grafisches Frontend und der Daemon NetworkManager/etc/NetworkManager
(Hauptverzeichnis für Konfigurationen)/etc/NetworkManager/system-connections/verbindungsdatei
(Datei mit Konfiguration z.B. Wired Connection 1)
c) Speziell bei openSUSE:
Neu seit openSUSE 13.2: Wicked Service als Standardinstallation auf Desktop-Systemen
(Anm.: bei Notebooks weiterhin NetworkManager als Standard)
d) netconfig (bei RHEL 5.5 oder eben auch ab openSUSE 42.1 Serverminimalinstallation)
Konfigurationen in/etc/sysconfig/network-scripts
in Dateien wieifcfg-eth0
,ifcfg-eth1
, ... (beispielhafte Installation)
entweder manuell bearbeiten, oder entsprechende Tools der Linux-OS nutzen - hier also natürlich gerne auch wieder YaST bei Suse nutzen - VirtualBox Host
... auf openSUSE Leap 15 System bereitgestellt/installiert.
Host-NIC: eth0 (IP: 10.100.211.117 / 19 ; StdGW / DNS: 10.100.200.1 )
Installation über Standardpaketquellen (aktuell: VirtualBox 5.2.18)
Standarduser in Gruppe "vboxusers" aufnehmen (und natürlich den User neu anmelden ;-)
Praxis: Installation von Debian Stretch 9.5 Betriebssystemen mit Hilfe einer aktuellen "NetInstall-ISO"
Für die Installationen nutzen wir bei tasksel (Paketauswahl bei Debian) nur die Systemwerkzeuge ohne weitere Installationen (nur 130 Pakete!).
Tipp/Hinweis: am Seminarende lässt sich die gesamte virtuelle Übungsfirma mit allen Maschienen als ein Ordner mit nach Hause nehmen. - Debian - Grub und Terminalauflösungen
in/etc/default/grub
eintragen:...
dann mit
GRUB_GFXMODE=1024x768
GRUB_GFXPAYLOAD_LINUX=keep
...update-grub
die Grubkonfiguration erneuern undreboot
.
Auf Trainer-VMs kann für die bessere Lesbarkeit am Beamer noch mitdpkg-reconfigure console-setup
noch eine massigere Schrift für die Konsole definiert werden. - VM: Router (Debian Stretch 9.5 Minimalinstallation)
installiert, aktualisiert und konfiguriert.
Hostname:router17
Netzwerkadapter (hier für Router natürlich zwei Adapter):
WAN-NIC (am VHS BS Netz per Netzwerkbrücke):
enp0s3 (IP: 10.100.200.231 / 19 ; StdGW / DNS: 10.100.200.1 )
LAN-NIC (per Internem VM-Netz "intnet"):
enp0s8 (IP: 192.168.17.1 / 24 - statisch konfiguriert) - VM: Server (Debian Stretch 9.5 Minimalinstallation)
per NAT als VM installiert, aktualisiert und konfiguriert.
Hostname:server17
Netzwerkadapter auf VM-Netz "intnet" geändert und statisch zu Testzwecken konfiguriert
enp0s3 (IP: 192.168.17.10 / 24)
Anm.: nur Netzwerken im "VM-Netz 192.168.17.0 / 24" möglich - keinerlei Routing durchrouter17
in Richtung "WAN / Internet" - Übungen: Netzwerktechnik manuell/klassisch konfigurieren
Konfiguration der Debian-Systeme auf klassische statische Konfigurationen mit Hilfe der
Konfigurationsdatei/etc/network/interfaces
hier Auszug aus der Konfiguration: (Anm.: die Zeile auto ... ist heute oft verschwunden)
...
Für die Konfiguration mittels DHCP ist es:
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.17.10
netmask 255.255.255.0
gateway 192.168.17.1
...
...
Für diese Netze bitte auch Tools kennen:
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet dhcp
...ifup
,ifdown
Beachten: bei Verwendung von NetworkManager (z.B. unter Gnome-Desktop) oder netconfig dann bitte abweichende Konfigurationsdateien beachten!
Über die/etc/resolv.conf
Kommentare kann man recht schnell die genutzte Technik erkennen. - DHCP (Paket: isc-dhcp-server)
Installation aufrouter17
- wichtig: an richtigem Adapter (LAN-Seite) zur Verfügung stellen!
Vorbereitungen (s.o.) - Konfiguration des Routers auf statische LAN-IP: 192.168.17.1 / 24
Installation mittelsapt install isc-dhcp-server
- die Installation quittiert am Ende Fehler, da saubere Konfigurationen des DHCP-Servers noch fehlen.
Wir beginnen mit der Konfiguration des NIC-Adapters für DHCP:/etc/default/isc-dhcp-server
(hier: lanseitiger enp0s8 von router17)
Die eigentliche Konfiguration liegt in Standardverzeichnis:/etc/dhcp/dhcp.conf
Beispieleinträge / Konfigurationen (wurden vorher sauber bei Entwurf geplant)
option domain-name "firma17.local";
Kurzanleitungen im Web (Link) für Debian und den ISC DHCP Server
option domain-name-servers 8.8.8.8, 10.100.200.1;
...
subnet 192.168.17.0 netmask 255.255.255.0 {
range 192.168.17.100 192.168.17.150;
option routers 192.168.17.1;
}
Der DHCP-Daemon lässt sich mit den üblichen Target/Runlevel Tools analysieren:systemctl status|restart|stop|enable|disable isc-dhcp-server
(Target/Dienst status|...)journalctl -u isc-dhcp-server
(Journal / Logging auslesen - Anm.: nicht persistent!)
Übersicht zu Releases des DHCP-Servers:/var/lib/dhcp/dhcpd.releases
(alle Infos inkl. MACs oder Lease-Times)
Übung: nach DHCP-Server Implementierung Test mit server17 und Analyse der IP-Konfigurationen
Di., 30.10.18
Dienstag, 30.10.18, 08.30 - 17.30 Uhr
- Rekapitulation, TN-Fragen
Ausführliche Rekapitulation von Tag 01! - Diskussion: Aktualisierung des VirtualBox openSUSE Leap 15 Host
(zufällig) aktuell ein Update für die VirtualBox von 5.2.18 auf 5.2.20 verfügbar - wir entscheiden keine Aktualisierung durchzuführen, ohne vorherige Tests oder Absicherungen (Images / Backups) - Tipps & Tricks & Anm. (über den Tag)
root-Bash: auskommentieren von/root/.bashrc
Zeilen für Syntaxhighlighting/Colors in Shell
Schriftgröße (bei CentOS, openSUSE) in Terminal mitsetfont sun12x22
manuell vergrößern
Schriftgröße (bei Debian) in Terminal mitdpkg-reconfigure console-setup
umstellen (persistent)
Art der Netzwerkkonfiguration anhand der/etc/resolv.conf
erkennen
CD/DVD-ISO: mitdd if=/dev/sr0 of=/tmp/suse-dvd.iso
(Gerätebez. perlsblk
analysieren)
Bücher: s. Rheinwerk Verlag (Linux) - Linux Server Handbuch ab 23.11.2018, R. Spenneberg "Linux-Firewalls" (2011), Eric Amberg "Linux Server mit Debian 7 Wheezy" (2014) - NAT-Routing mit Netfilter / iptables
Eigentliche Technik ist Netfilter: eine im Kernel implementierte Softwareschicht
Mit iptables kann man Regelsätze / Konfigurationen für verschiedene Tabellen erzeugen: filter, nat, mangle, raw
Die Tabellen können mit Richtlinien (Policies) zum Behandeln von Paketen versehen werden und haben Ketten (chains) für die Paketvermittlungen.
Wir interessieren uns beim NAT-Routing für die Tabelle filter (chain FORWARD) und die Tabelle nat (chain POSTROUTING):
Wir arbeiten erst einmal mit einfachen manuellen Inbetriebnahmen der nötigen NAT-Routing-Regeln
Für die folgenden Befehle bitte die richtigen Router-NICs beachten:
(Beachten: hier allgemeine Konfigurationsdaten - nicht die aus dem Seminar!)eth1
: NIC für die WAN-Seite (192.168.3.201 / 24 ; StdGW: 192.168.3.1; DNS: 192.168.3.1)eth0
: NIC für die LAN-Seite (10.0.0.1 / 8)
1) Forwarding für den Linux-Kernel aktivieren - der Kernel denkt sonst gar nicht daran, Pakete zwischen den Adaptern weiterzuleiten:
echo 1 > /proc/sys/net/ipv4/ip_forward
bzw. persistent - also nachhaltig - in/etc/syctl.conf
einstellen:
Zeile:net.ipv4.ip_forward = 1
auskommentieren (Logik/Reihenfolge wie in /proc/sys/... mit Punkten getrennt)
und Rechner neustarten
2) Forwarding von Paketen in "table filter" für beide Richtungen (LAN -> WAN und WAN -> LAN):
Anm.: Angabe von -t filter kann als Standardtabelle auch weggelassen werden!iptables -t filter -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
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 - Kohnle - Masquerading - Erklärung) ermöglichen:iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Anm.: das sind nur sehr einfache Grundkonfigurationen, die bei weitem nicht alle Sicherheitsaspekte abdecken. (Einblick z.B. bei Red Hat Doku)
Löschen von Tabellen:iptables -F
bzw.iptables -F -t nat
Übung: Umsetzung der Regeln gerne als Skript: (touch nat-routing.sh
undchmod u+x nat-routing.sh
)#!/bin/bash
Tipp: iptables Regelsätze auch nach Neustarts und ohne Skriptverwaltungen mit Hilfe von iptables-persistent Paket!
IPTABLES="$(which iptables)"
WANNIC="enp0s3"
LANNIC="enp0s8"
$IPTABLES -t filter -A FORWARD -i $WANNIC -o $LANNIC -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -t filter -A FORWARD -i $LANNIC -o $WANNIC -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $WANNIC -j MASQUERADE
Nach der Installation:apt install iptables-persistent
kann man mittels:iptables-save > /etc/iptables/rules.v4
die Regeln nachhaltig machen (persistieren)! - deb Paketmanagement
*.deb (vs. *.rpm mit openSUSE YaST2-Tool, zypper, yum und Basistool rpm)
Übersicht in Extra-Beitrag auf dieser Website: Paketmanagements RPM/yum/zypper vs. DEB/apt-Tools oder Wiki Ubuntuusers
Tool dpkg (Basistool)
Achtung: dpkg löst keine Abhängigkeiten auf - dpkg kann diese nur erkennen!!
dpkg Aufrufe: (bitte genau auf Groß/Kleinschreibungen achten und Einsatz bei installierten bzw. nicht-installierten Paketen)dpkg -i # Install-Infos für installierte Pakete bzw. installieren
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" (ehemals Toolapt-cache
)
apt search suchbegriff
Installation inklusive Abhängigkeiten (Vorgänger:apt-get
)
apt install mc # installiert auch gleiche mc-data
Konfiguration von apt (Paketquellen) in Datei sources.list:
apt remove <paketname> # (Entfernen exkl. Konfigurationen; entspricht -r)
apt --purge remove <paketname> # (gründliches Entfernen; entspricht -P inkl. Konfigurationen)/etc/apt/sources.list
Empfehlung: neue/eigene sources.list in Ordner
/etc/apt/sources.list.d/vscode.list
(Beispiel für Microsoft Visual Studio Code on Linux)
System aktualisieren:
apt update # (Paket-DB aktualisieren) apt upgrade # (Aktualisierung durchführen)
Weiteres Tool aus der APT-Toolfamilie:
apt dist-upgrade # (Distro upgraden - von Debian 8.6 auf Debian 9)aptitude , synaptic
(können einfach nachinstalliert werden) - rpm / yum - Red Hat Package Management (hier: CentOS 7)
Beispielinstallation CentOS 7.5 (1804) als Minimalinstallation
Prüfsummen für CentOS-ISOs diskutiert: PGP signierte SHA256 Hash Infos zu den ISOs (Tool:sha256sum
)
Beachten: Netzwerk mit NetworkManager (siehe:/etc/sysconfig/network-scripts/*
) statt klassisch (Datei /etc/network/interfaces)
und hier läuft ein Firewall-Daemon (firewalld) mit voreingestellten iptables für Tabellen filter und nat!
siehe wieder ausführliche Tabelle Paketmanagements RPM/yum/zypper vs. DEB/apt-Tools
Konfigurationen für YUM-Repositories: /etc/yum.repos.d/*.repo (hier wie bei APT eigene Repos definieren)
Tipp: Nachinstallation von EPEL-Repo (Extra Packages for Enterprise Linux):yum install epel-release
erzeugt neues Repo /etc/yum.repos.d/epel.repo (und epel-testing.repo - inaktiv) und sollte mityum update
gelesen/aktualisiert werden (siehe yum install cowsay ;-)
Auch in diesem System mehrere Anpassungen an der/etc/default/grub
vorgenommen, damit wir eine "1024x768"-Konsole erhalten.
Hier gibt es kein Debian-artiges update-grub-Tool! Man muss den eigentlichen Grub-Config-Aufruf nutzen:grub-mkconfig -o /boot/grub2/grub.cfg
(und dann Neustart)
Do., 01.11.18
Donnerstag, 01.11.18, 08.30 - 17.30 Uhr
- Rekapitulation, TN-Fragen (PXE/TFTP Boot von Fedora mit NFS)
- DHCP Server (Forts.)
VMcentos17
auf reservierte IP192.168.17.50 / 24
konfigurieren;
host centos17 {
und natürlich wieder testen!
hardware ethernet 08:00:20:A4:89:C1;
fixed-address 192.168.17.50;
} - DNS mit dem BIND9 (Berkeley Internet Name Daemon - Link)
Umsetzung hier auf einem Debian System mit Standardeinstellungen nach diversen Anleitungen (z.B. Debian Wiki oder Debian Handbook - DNS )
Installation auf Debian mitapt install bind9 bind9-doc
; diverse Utilities/Tools mit Paket dnsutils
Die Konfigurationen des BIND befinden sich in:/etc/default/bind9
(allgemeine Konfigurationsdatei - bei systemd Nutzung bitte hinterfragen ob aktiv)/etc/bind/
- Haupt-Konfigurationsordner mit zentraler Datei/etc/bind/named.conf
named.conf
inkludiert drei weitere conf-Dateien, die ihrerseits die Konfigurationen enthalten:
includenamed.conf.options
- Einstellungen/Optionen für den DNS-Server
includenamed.conf.local
- hier werden Zonen erstellt, deren Definitionen dann in db.* Dateien (Aufruf mittels file) ausgelagert werden (siehe db.firma17.local und 17.168.192.in-addr.arpa für unsere Übungsumgebung)
includenamed.conf.default-zones
- Standard-Zonen: localhost (db.local) oder 127.in-addr.arpa (db.127)
Die Inbetriebnahme / Konfigurationen erfolgen in drei Phasen:
- Caching / Forwarding
- Forward Lookup Zone
- Reverse Lookup Zone
Während der Umsetzungen sollte der "Firmenplan" (die Doku) genau beachtet und aktualisiert werden. - DNS (Teil 1 - Caching / Forwarding)
Analyse der Konfigurationen in /etc/bind - Organisationsstruktur studieren (includes) und Vorlagen
Hier: Einrichtung DNS als Caching DNS und DNS-Forwarder
Installation und Einrichtung z.B. gemäß Anleitung
Achtung: da wir jetzt einen DNS-Server (host: server17 - 192.168.17.10 / 24) haben - und auch nur diesen als DNS-Ansprechpartner haben wollen - müssen wir natürlich die Konfiguration für den DHCP Server anpassen (option domain-name-servers 192.168.17.10, 8.8.8.8)
Ausschnitt der Konfiguration für den DNS-Server (hier:/etc/bind/named.conf.options
)
Als DNS-forwarder wurde der Google-DNS 8.8.8.8 eingetragen; (alternativ) auch der Firmen/VHS DNS denkbar:
acl goodclients {
Anm.: nur Auszug aus der Konfiguration; Ausführliche Tests der Konfiguraiton im Netzwerk auf Client und Server
192.168.17.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
forwarders {
8.8.8.8;
};
forward only; # ggf. später auskommentieren!
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Vor dem Neustarten des DNS-Servers (service bind9 restart
) bitte vorhernamed-checkconf
durchführen!
Grund: die Konfigurationen sind sehr empfindlich und man kann sich schnell mal vertippen oder ein ";" vergessen! - DNS (Teil 2 - lokale Forward Zone firma17.local)
Beim DNS-Server server17 (192.168.17.10) wichtig: für den DNS-Server selber bitte nicht die/etc/resolv.conf
vergessen und dort manuell den "nameserver 192.168.17.10" Eintrag vornehmen und testen!
Anm.: das gilt generell für alle statisch konfigurierten Maschinen (Server)!
Testbefehle:nslookup
,dig
,host
(Nachinstallation Paket dnsutils/Debian, bind-utils/CentOS)
die Vorgehensweise für die beteiligten Konfigurationsdateien in Kürze:
in/etc/bind/named.conf.local
eine neue Zone festlegen:zone "firma17.local" {
mit einer Kopie von /etc/bind/db.local in
type master;
file "/etc/bind/db.firma17.local";
};/etc/bind/db.firma17.local
die neue Master Zone firma17.local definieren
;
Erinnerung: ggf. noch in den BIND-Optionen (/etc/bind/named.conf.options) den Eintrag "forward only;" auskommentieren!
; BIND data file for firma17.local
;
$TTL 604800
@ IN SOA firma17.local. root.firma17.local. (
2018103100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS server17.firma17.local.
@ IN A 192.168.17.10
router17 IN A 192.168.17.1
server17 IN A 192.168.17.10
centos17 IN A 192.168.17.50
gnome17 IN A 192.168.17.101
ns1 IN CNAME server17
www IN CNAME server17
Einträge für die "Übungsfirma" eingerichtet und mit Tools (nslookup, host, dig) getestet
Anm.: (noch) keine Revers-Lookup-Zone eingerichtet! Das wäre für alle Installationen "Mail Exchanger" aber notwendig! - DNS (Teil 3 - lokale Reverse Zone 17.168.192.in-addr.arpa)
Jetzt also noch für unsere lokale Firma "firma17.local" im Netz 192.168.17.0 / 24 eine Reverse Lookup Zone definieren!
in/etc/bind/named.conf.local
eine neue Zone unterhalb der Forward Lookup Zone "firma17.local" festlegen:zone "17.168.192.in-addr.arpa" {
Und jetzt noch die Reverse Lookup Zonen Datei
type master;
notify no;
file "/etc/bind/db.192.168.17";
};/etc/bind/db.192.168.17
(Tipp: Kopie aus /etc/bind/db.127 erstellen); BIND reverse data file for LAN-Subnet
Alles natürlich wieder mit Tools
;
$TTL 604800
@ IN SOA firma17.local. root.firma17.local. (
2018103100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS server17.firma17.local.
1 IN PTR router17.firma17.local.
10 IN PTR server17.firma17.local.
50 IN PTR centos17.firma17.local.
101 IN PTR gnome17.firma17.local.nslookup
,host
unddig
testen!
Aufrufe: (Anm.: hier nur Standardaufrufe - gerne Manpages nutzen)nslookup
(hier auch interaktive Konsole möglich),host server17
bzw.host -a 192.168.17.10
unddig router17
bzw.dig -x 192.168.17.50
Hinweis zu Reverse Lookup Zonen und den richtigen Einträgen der Reverse-IPs:
bei Subnetz 10.0.0.0 / 8 haben wir Rechner von 10.0.0.1 ... 10.18.19.20 ... 10.255.255.254 (ca. 16 Mio Hosts)
die passenden Einträge in der Reverse-Zone10.in-addr.arpa
müssten lauten:1.0.0 IN PTR router17.firma17.local.
Reverse halt ;-)
20.19.18 IN PTR server17.firma17.local.
254.255.255 IN PTR centos17.firma17.local.
Hinweis zu openSUSE-DNS-Client-Technik: Suse hat in der /etc/nsswitch.conf eine ungünstige Auflösungsreihenfolge für die "hosts" eingestellt:hosts: files mdns_minimal [NOTFOUND=return] dns
ändern in:hosts: files dns mdns_minimal [NOTFOUND=return]
dann stimmt die Reihenfolge bei der Auflösung von Hosts mit FQDN wie server17.firma17.local
Anm.: mdns geht in Richtung Avahi/ZeroConf/APIPA und hilft bei der Auflösung von Namen "ohne echtes DNS" - Grafik-Desktop-Systeme nachinstalliert
zu Test und Konfigurationsübungen: openSUSE 15.0 mit KDE und Debian Stretch 9 mit Gnome
Fr., 02.11.18
Freitag, 02.11.18, 08.30 - 17.30 Uhr
- Rekapitulation, TN-Fragen (pxe/tftp fedora live via nfs ... schauen wir mal)
- To-Do / Themen: NFS, SSH (ssh, scp, sftp), LAMP (php7.2), VIm (pathogen, emmett, nerdtree)
- NFSv4 (Network File System)
hier in Version 4; Vorteile von v4 vs. v3: verbessertes Filelocking, besseres Caching, Unterstützung Kerberos, UTF-8 (one Anspruch auf Vollständigkeit)
Installationen:
Debian-Pakete:nfs-kernel-server
,nfs-common
Suse, CentOS:nfs-kernel-server
Tests der Installationen und Dienststatus mit systemctl , ggf. Eintrag in Runlevel/Target checken: läuft Service nach Neustart?
NFSv4 arbeitet mit einem Pseudodateisystem, in welches die eigentlichen Daten-Ordner eingebunden werden:
Pseudodateisystem:mkdir -m 1777 /nfs4root
(Rechte mit erzeugen; hier: Sticky-Bit)
Im Pseudodateisystem-Rootordner erstellt man dann die eigentlichen "Freigaben":
im Ordner/nfs4root# mkdir -m 1777 daten
und nochmkdir -m 1777 home
Wir wollen also einmal einen Datenordner und dann noch den Home-Ordner des NFSv4-Servers freigeben.
Hier eine mögliche Übersicht der beteiligten Ordner:
NFS Ordner /nfs4root/daten
drwxrwxr-x root buchhaltung /daten
/nfs4root/home
drwxr-xr-x root root /home
Tests Einbindungen (Aufrufe hier im Ordner /nfs4root# ):mount --bind /daten daten/
undmount --bind /home home/
Wenn das funktioniert (siehe Aufrufmount
für eingehängte Verzeichnisse), dann fest in die/etc/fstab
eintragen:/daten /nfs4root/daten none rw,bind 0 0
Server neustarten und Mounts wieder checken!
/home /nfs4root/home none rw,bind 0 0
Konfigurationsdatei:/etc/exports
Jetzt also wir die NFSv4-Exporte definieren ("NFS-Freigaben"):# Pseudodateisystem
Ein paar (kurze) Erläuterungen zu den NFS-Optionen:
/nfs4root 192.168.17.0/24(ro,sync,insecure,root_squash,no_subtree_check,fsid=0)
# Freigaben
/nfs4root/daten 192.168.17.0/24(rw,sync,insecure,root_squash,no_subtree_check)
/nfs4root/home 192.168.17.0/24(rw,sync,insecure,no_root_squash,no_subtree_check)
192.168.17.0/24 - Zugriffe aus diesem Subnetz möglich
ro , rw - read only bzw. read and write
sync - Verhalten des NFS-Servers beim Speichern (alternativ: async)
insecure - NFS-Requests müssen nicht von Ports kleiner 1024 (Well-know-Ports) stammen (Standard: secure)
root_squash , no_root_squash - Rechte von lokalem User root auf Client an Freigaben: root_squash macht root quasi zu nobody (User auf Server)
Die Änderungen an /etc/exports können mit einem Reload aktualisiert werden:systemctl reload nfs-kernel-server.service
Testen der NFSv4-Dienste mit:rpcinfo -p localhost
Testen der Freigaben mit:exportfs -v
An den Clients kann man die Exports/Freigaben dann mounten, wenn die Unterstützung von Mount-Typ nfs4 installiert ist.mount -t nfs4 server17:/daten /daten
(Mountpoint hier Ordner /daten auf Client-Maschiene)mount -t nfs4 server17:/home /home-fs
Man kann auch die Wurzel angeben und so alle Freigaben auf einmal einhängenmount -t nfs4 server17:/ /alles
Nach erfolgreichem Mount-Tests kann man die Freigaben dann fest in den /etc/fstab auf den Clients eintragen:#NFSv4
Und natürlich wie immer: Testen!
server17:/daten /daten nfs4 rw 0 0
server17:/home /home-fs nfs4 rw 0 0
server17:/ /alles nfs4 rw 0 0 - LAMP (Linux - Apache - MySQL/MariaDB - PHP; hier: PHP 7.2)
die am meisten verbreitete Technik-Kombo für Web-/DB-Services im Internet/Intranet
gewünschte Installation: Debian Stretch (9.5) mit aktuellen Apache2, MariaDB und PHP 7.2 (!)
für die aktuelle PHP Version 7.2 benötigen wir ein entsprechendes Repository für Debian
Beispielhafte Installationsanleitung: Colin O'Dell Blog
Die folgenden Zeilen stellen ein PHP 7.2 Repo bereit und installiert zu Testzwecken die "PHP 7.2 - Command Line Version":
apt install apt-transport-https lsb-release ca-certificates
Es folgt die Installation des Apache:
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update
apt install php7.2-cli
php --versionapt install apache2
Jetzt stellen wir die MariaDB Server- und Client-Technikapt install mariadb-server mariadb-client
Und testen den Zugang zum MariaDB-Server mit einem mariadb/mysql-Client:
mysql_secure_installationmysql -u root -h localhost -p
Im Seminar wurden einige kleine Tests im MySQL-Client durchgeführt!
Vervollständigung der PHP 7.2 Installation:apt install php7.2 php7.2-mysql libapache2-mod-php7.2 php7.2-curl php7.2-gd php7.2-mbstring php7.2-xml php7.2-soap curl php-gettext php-pear
Und beispielhafte Erweiterung der Apache2 Umgebung: Module aktivieren (z.B. für CMS wie TYPO3):a2enmod expires
Diese Apache2-Modifikationen benötigen ein Reload:
a2enmod rewritesystemctl reload apache2
Jetzt noch ein paar Konfigurationen für die PHP-Umgebung:/etc/php/apache2/php.ini
Übung: max_execution_time = 240 (statt 30 Sekunden Standard) und bitte Apache2 reloaden/restarten
Test der Apache2-PHP-Konfiguration mit einem kleinen PHP-Skriptphpinfo.php
in/var/www/html
<?php
Aufruf mittels URL server17/phpinfo.php
echo "Hallo Welt!";
phpinfo();
?> - VIm (VI improved - vim.org)
Der Konsolen-Editor für jede Linux/Unix-Umgebung - und natürlich auch gerne unter Windows (gvim portable)
Jeder Server-Admin sollte einen leistungsfähigen Konsolen-Editor beherrschen. Da gibt es dann natürlich auch alte "Fehden" zwischen den emacs-Usern und den vi-Fanatics.Hier möchte ich eine kurze Einführung in vim darstellen, die natürlich keinesfalls den Anspruch auf Vollständigkeit (;-) erhebt!
Vorab eine kleine Übersicht / Linkliste mit Online-Infos und Quellen zum VIm:
Home: http://www.vim.org
PDF: http://swaroopch.com/notes/Vim/#Download
Video: http://vimcasts.org/
Tipps/Tricks:
http://www.catswhocode.com/blog/130-essential-vim-commands
http://www.fprintf.net/vimCheatSheet.html
http://wiki.ubuntuusers.de/VIM
http://vimcheatsheet.com (preview: https://cdn.shopify.com/s/files/1/0165/4168/files/preview.png )
http://www.refining-linux.org/archives/20/13-Printable-vim-cheat-sheets/
Für die folgende Installationen (siehe emmet.io) sollten die Pakete git und curl nachinstalliert werden:apt-get install git curl
Jetzt kann es losgehen mit den Erweiterungen mit Hilfe von Pathogen...
Pathogen (Vim Plugin Verwaltungs- und Automatisierungs-Tool für vim-Ordner bundle) bereitstellen:
Anm.: die folgenden Schritte jeweils für den gewünschten User durchführen!
(Anleitungen im Original bei Github User tpope - https://github.com/tpope/vim-pathogen )mkdir -p ~/.vim/autoload ~/.vim/bundle
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vimKonfigurationsdatei 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 onFür Vim-PlugIns jetzt einfach in den
~/.vim/bundle
Ordner positionieren und per git das *.vim bzw. *.git holen
Beispiel: Emmet (Vim Plugin - früher Zencoding)
(Anleitungen im Original bei Github User mattn - https://github.com/mattn/emmet-vim )cd ~/.vim/bundle
Und schon steht emmet im VIm zur Verfügung!
git clone http://github.com/mattn/emmet-vim.git
Test mit neuer HTML-Datei: vim index.html:
html:5 Tastenkombinationsfolge "Strg+y ," ergibt komplettes HTML5-Code-Grundgerüst
Beachten: Standardtastenkombination ist Strg+y und dann noch , (Komma) drücken!
Beispiel: NERDTree (PlugIn für ein Fenster im VIm mit Dateimanagement)
(Anleitungen im Original bei Github User scrooloose - https://github.com/scrooloose/nerdtree )
cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.gitAnleitung Kopieren und Einfügen:
(nur mit Tastatur - natürlich geht mit Paket gpm auch markieren mit Maus und mittlere Maustaste einfügen)
Kommandomodus/Visualmodus v
Text mit Cursor markieren
mit y (yank) in Puffer (Zwischenablage) einfügen
an Stelle positionieren zum Einfügen (z.B. O für neue Zeile)
Einfügemodus (ESC)
mit p einfügen
Weitere kleine Beispiele: dd löscht Zeile ndd (mit n Anzahl Zeilen löscht gleich n Zeilen) ...
Viel Spaß mit dem VIm! - Sicherungen / Backup der Workshop VM-Umgebungen,
Screenshots; hier nochmals unsere / meine Übungsumgebung
Hier mit einem Win10Pro Rechner erweitert und so in einer Windows-VBox-Umgebung bei mir in der Büro-Umgebung umgesetzt! - Weiterführende Themen - im Seminar erwähnte Techniken und Anmerkungen:
Thema Fortführende Inhalte Virtualisierung / VirtualBox Netzwerke, Tool: vboxmanage, KVM / qemu Partitionierungen LVM (Logical Volume Management), BtrFS Netfilter / iptables Firewalling, Port-Forwarding (DNAT), DMZ Shell: Bash Konfigurationen (bashrc, profile), Skripting / Automatisierung Linux-Software Installation aus Sources / Tar-Balls, alternative Paketmanager DHCP / DNS DDNS (Dynamic DNS), Sekundäre Zonen NFSv4 UIDs mappen (imapd), Performance optimieren,
Firewall-Einstellungen, Kerberos-AuthentifizierungenLAMP weitere Konfigurationen, VHosts, CMS-Installationen - TN-Bescheinigungen, Feedback-Bögen, letzte TN-Fragen
Vielen Dank für Ihre tollen Feedbacks
Ihr Trainer Joe Brandes