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 Serversystem 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: VirtualBox Host und Client mit KDE)
- Debian (Stretch 10 - als: NAT-Router, Server, Client)
- centOS (7 - als: Server, Client)
- Windows 10 (1903 - 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, 11.11. bis Fr, 15.11.2019; jeweils mit TN koordiniert
Ich werde unser Seminar in diesem Beitrag wieder ausführlich begleiten...
Ihr Trainer Joe Brandes
Mo., 11.11.19
Montag, 11.11.19, 08.30 - 16.00 Uhr
Orientierungsphase, TN-Themen
Distributionen und Virtualisierungen
... stellen die gesamte Software angefangen vom Kernel, einer intelligenten Installationsroutine bis hin zu kompletten Softwareausstattungen inklusive Desktopmanagern (graphische Oberflächen - GUIs) bereit. Hier ein paar maßgebliche Vertreter:
- Debian - Nummer 1 bei den Server-Betriebssystemen 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 als Entwicklungsplattform für Red Hat, CentOS als freie Community Variante - Suse/openSUSE (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: ... 10.x → 11.x → 12.x → 13.1 - 13.2 → Leap 42.1 - 42.2 - 42.3 → 15.0 - 15.1
Eine tabellarische Übersicht:
Distro | Ableger der Distro | Paketmanagement |
---|---|---|
Red Hat (Link) |
Fedora (Desktop) bzw. CentOS (Red Hat Server) Kaufversion: RHEL |
RPM (Red Hat Package Management) Standardtool: rpm (ohne Auflösung Abhängigkeiten), yum |
Novell (Suse) (Link) |
openSUSE (Link) Kaufversion: SLES bzw. SLED |
RPM mit YaST2-SW-Verwaltung, zypper, yum |
Debian (Link) |
Ubuntu(s), Linux Mint |
DEB (Debian Pakete) Standardtool: dpkg (ohne Auflösung Abhängigkeiten) APT-Tools: apt, (klassisch: apt-get, apt-cache, aptitude, ... |
VirtualBox Host
... Entscheidung für openSUSE-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 ihr gesamtes "BU-Firmen-Netz" am Ende des Seminars mit nach Hause nehmen!
Und los geht es...
Installation von VirtualBox-Host: openSUSE Leap 15.1 (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)
Quellen in64-Bit auch für andere Hardware (also nicht nur Intel x86 bzw. x86_64)
Anm.: 32-Bit Unterstützung stirbt aus.
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
Hier mal eine Auswahl:
- Portal: https://www.opensuse.org/
- Wiki deutsch: https://de.opensuse.org/Hauptseite
- Wiki Leap 15.1: https://de.opensuse.org/Portal:15.1
- Leap Download: https://software.opensuse.org/distributions/leap
- Documentations - english: https://doc.opensuse.org/
- Upgrades: https://de.opensuse.org/SDB:Distribution-UpgradeDistribution-Upgrade
(kürzer/besser: engl. Variante des Upgrade DB Eintrags)
Spezialversion:
Tumbleweed (Rolling Realeses / Rolling Upgrades) https://software.opensuse.org/distributions/tumbleweed
Anm.: Rolling Releases benötigen keine turnus-mäßigen Upgrades (z.B. Ende Nov 2020 Upgrade Leap 15.1 auf 15.2), sondern werden ständig weiter mit Aktualisierungen versorgt. Diese Systematik klingt erst einmal gut, hat aber eigene Probleme, die oft nur mit Expertenwissen gelöst werden können!
Installation VirtualBox (hier: 6.0.12)
... aus den Standard-Quellen (Repositories) über YaST-Softwareverwaltung
Standardbenuzterkonto openSUSE (hier: Nutzer/User joeb) in Gruppe vboxusers aufnehmen: ~# usermod -aG vboxusers joeb
Nach der Installation bitte Neustart des Systems durchführen. Bei Änderungen von Benutzern/Gruppen ist immer mindestens eine Neuanmeldung des Benutzers nötig.
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 soll mit folgenden Partitionen erfolgen: (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: SanDisk 240 GB (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: ca. 215 GiB Gerät: /dev/sda2 (Root Partition)Filesystem: ext4 |
swap | Auslagerungspartition, VMM Virtual Memory Management |
Größe: ca. 7 GiB Gerät: /dev/sda3 (Swap Partition)Filesystem: swap |
Erste Analyse und Tools rund um unsere Partitionen: lsblk
, 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 aktualisieren... in Leap 15.1 bereits in Installation integriert...
(Anm.: im Seminar: DVD von August 2018 -> ca. 100 Pakete zu aktualisieren plus neuer/aktualisierter Kernel ...)
Aktualisierungs-Gadget" (Package-Kit) aus der Kontrollleiste - Anm.: Kollision mit Shell-Tools möglich, da dieselbe Bibliothek (libzypp) genutzt wird!
Vorgriff auf Befehlszeile: Aktualisierung mit Tool zypper
(siehe libzypp Unterstützung; zypper update
)
Anm.: "stabile" Desktop-Umgebungen (KDE5 Plasma) manchmal erst nach Neustarts (siehe auch Installation Nvidia-Treiber Dozent-PC 17 statt Nouveau-Treiber)
Screenshots: Alternative "Spactacles" in openSUSE KDE installiert (Anm.: KSnapshot für Bildschirmfotos mit Druck
-Taste wurde in 42.1 in Rente geschickt - removed)
Grundkonfiguration: automatische Bildschirmfoto-Dateien mit Umschalten + Druck
Netzwerk-Analyse
Erste Netzwerkanalyse mit Linux:
IP-Konfiguration | Shellaufrufe |
---|---|
IPv4-/IPv6-Adresse Subnetmask |
ip address show (zeigt immer alle NICs)ip a s (kurze Variante)Tool ifconfig nicht mehr standardmäßig installiert: /sbin/ifconfig |
Standardgateway (bzw. Router) |
/sbin/route -n hier: in Spalte Flags das G suchen - dann Spalte Router ip route show ip r s (kurze Variante |
DNS-Server | cat /etc/resolv.conf hier: Zeile mit nameserver analysieren aber: Datei wird von den Netzwerkkonfigurations-Diensten Wicked (bzw. NetworkManager) manipuliert keine manuelle Änderung gewünscht! |
Natürlich gibt es auch diverse Tools/Skripte, die diese Aufgaben/Aufrufe zusammenlegen, aber wir wollen auch immer die Basics bemühen und "Linux" verstehen.
Topologien und Firmennetz planen
Enwurf mit TN skizziert (siehe LibreOffice Draw Entwurf)
Wichtig: Suffix/Prefix für Techniken mit Hilfe der PC-Platznummern (siehe Dozentenarbeitsplatz: 17)
Beispiel: (Dozentenplatz PC #17)
- geplante Domain (FQDN):
firma17.local
- beispielhafte Rechnernamen:
router17
,server17
- Firmennetz (IPv4):
192.168.17.0 / 24
Das kann dann so aussehen:
Anm.: wird im Laufe des Seminars erarbeitet und aktualisiert.
Netzwerkkonfigurationen
... der Versuch Übersicht über die wichtigsten Ordner/Dateien:
/etc/networks
(Netzwerke konfigurieren)/etc/hosts
(statische Namensauflösungen)/etc/resolv.conf
(DNS; Inhalt gibt Aufschluss über Konfigurationstechnik)
und Technischen Umsetzungen in Linux:
- Manuelle Netzwerkkonfigurationen - z.B. 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) - NetworkManager - Debian "Komplettinstallation" (also inkl. Desktop Gnome) nutzt NetworkManager
hier übernimmt die Konfiguration ein (Gnome-)Tool als Grafisches Frontend für den Daemon NetworkManager/etc/NetworkManager
(Hauptverzeichnis für Konfigurationen)/etc/NetworkManager/system-connections/verbindungsdatei
(Datei mit Konfiguration z.B. Wired Connection 1) - Wicked: Speziell bei openSUSE:
Neu seit openSUSE 13.2: Wicked Service als Standardinstallation auf Desktop-Systemen
Anm.: bei Notebooks weiterhin NetworkManager als Standard - 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
VM-Installationen
Nach Download des entsprechenden Debian-Install-ISOs wurden
- vm-router
Debian 10 (Buster) Server-Minimalinstallation (ca. 110 Pakete) mit zwei Netzwerkadaptern
WAN-Seite mit Netzwerkbrücke (mit physikalischem Adapter und Netzwerk vom Vbox-Host) - manuell konfiguriert
LAN-Seite mit Internem Netzwerk "intnet" (eigener Virtueller Switch) verbunden - manuell Konfiguration folgt - debian-gnome
Debian 10 (Buster) Vollinstallation inkl. Gnome-Desktop (ca. 1500 Pakete)
installiert und in Betrieb genommen.
Di, 12.11.19
Dienstag, 12.11.19, 08.30 - 16.00 Uhr
Rekapitulation, TN-Themen
Übungen: Netzwerktechnik manuell konfigurieren
Konfiguration der Debian-Systeme auf klassische, manuelle Konfigurationen mit Hilfe der
Konfigurationsdatei /etc/network/interfaces
hier Auszug aus der Konfiguration: (Anm.: die Zeile auto ... ist heute oft verschwunden)
...
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.17.10
netmask 255.255.255.0
gateway 192.168.17.1
...
Für die Konfiguration mittels DHCP ist es:
...
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet dhcp
...
Für diese Netze bitte auch Tools kennen: ifup
, ifdown
Beachten: bei Verwendung von NetworkManager (z.B. unter Gnome-Desktop) oder netconfig dann bitte abweichende Konfigurationsdateien beachten!
Über die /etc/resolv.conf
Kommentare kann man recht schnell die genutzte Technik erkennen.
Planung Netz-Infrastruktur: DHCP, NAT-Routing
Gemeinsam mit TN nachgearbeitete und geplante Struktur:
Installation von DHCP-Server (ISC) und Konfiguration von Netfilter/iptables...
Für die Umsetzungen wurden den TN kurze Anleitungs-PDFs über ein Cloud-Drive zur Verfügung gestellt.
DHCP
... Paket: isc-dhcp-server
Installation auf vm-router-17
- wichtig: an richtigem Adapter (LAN-Seite) zur Verfügung stellen!
Vorbereitungen (s.o.) - Konfiguration des Routers auf statische LAN-IP: 192.168.17.1 / 24
Installation mittels apt install isc-dhcp-server
- die Installation quittiert am Ende Fehler, da saubere Konfigurationen des DHCP-Servers noch fehlen.
Wir beginnen mit der Konfiguration des NIC-Adapters für DHCP: /etc/default/isc-dhcp-server
(hier: lanseitiger enp0s8 von vm-router-17)
Die eigentliche Konfiguration liegt in Standardverzeichnis: /etc/dhcp/dhcpd.conf
Beispieleinträge / Konfigurationen (wurden vorher sauber bei Entwurf geplant)
option domain-name "firma17.local";
option domain-name-servers 8.8.8.8, 10.100.200.1;
...
subnet 192.168.17.0 netmask 255.255.255.0 {
range 192.168.17.100 192.168.17.149;
option routers 192.168.17.1;
}
Kurzanleitungen im Web (Link) für Debian und den ISC DHCP Server...
Der DHCP-Daemon lässt sich mit den üblichen Target/Runlevel Tools analysieren:systemctl status|restart|stop|enable|disable isc-dhcp-server
(Target/Dienst status|...)journalctl -u isc-dhcp-server
(Journal / Logging auslesen - Anm.: nicht persistent!)
Übersicht zu Releases des DHCP-Servers:/var/lib/dhcp/dhcpd.releases
(alle Infos inkl. MACs oder Lease-Times)
Übung: nach DHCP-Server Implementierung Test mit bereits installierten VM-Client-Rechnern (z.B. debian-gnome) und Analyse der IP-Konfigurationen.
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)
Wichtig: die folgenden Strukturen finden sich immer an einem einzelnen Netzwerkadapter!
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/sysctl.conf
einstellen - Zeile: net.ipv4.ip_forward = 1
auskommentieren
(Anm.: Logik/Reihenfolge wie in /proc/sys/... hier mit Punkten getrennt)
und Rechner neustarten!
2) Forwarding von Paketen in "table filter" für beide Richtungen (LAN -> WAN und WAN -> LAN):
Anm.: Angabe von -t filter kann als Standardtabelle auch weggelassen werden!
iptables -t filter -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -o eth1 -j ACCEPT
Die Einstellung -m state bezieht sich auf die Fähigkeit der Netfilter-Kernel-Technik mittels Modul conntrack (Connection Tracking) Pakete auf Grund Ihrer Verbindungseigenschaften (hier: "in Beziehung" und "etabliert") akzeptiert werden können, ohne weiter untersucht zu werden!
3) Für die gewünschte Anbindung eines LAN mit mehreren Hosts müssen wir jetzt noch das NAT-Routing (Masquerading - Kohnle - Masquerading - Erklärung) ermöglichen:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Anm.: das sind nur sehr einfache Grundkonfigurationen, die bei weitem nicht alle Sicherheitsaspekte abdecken. (Einblick z.B. bei Red Hat Doku)
Löschen von Tabellen: iptables -F
bzw. iptables -F -t nat
Übung: Umsetzung der Regeln gerne als Skript: (touch nat-routing.sh
und chmod u+x nat-routing.sh
)
#!/bin/bash
IPTABLES="$(which iptables)"
WANNIC="enp0s3"
LANNIC="enp0s8"
$IPTABLES -t filter -A FORWARD -i $WANNIC -o $LANNIC -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -t filter -A FORWARD -i $LANNIC -o $WANNIC -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $WANNIC -j MASQUERADE
Tipp: iptables Regelsätze auch nach Neustarts und ohne Skriptverwaltungen mit Hilfe von iptables-persistent
Paket!
Nach der Installation: apt install iptables-persistent
kann man mittels: iptables-save > /etc/iptables/rules.v4
die Regeln nachhaltig machen (persistieren)!
Diverse Übungen über den Tag
- Einfaches Skripting
- Installationsübungen
- Bash konfigurieren mit ~/.bashrc (z.B. für root Farbe in Konsole)
- ...
Mi, 14.11.19
Mittwoch, 14.11.19, 08.30 - 16.00 Uhr
To-Do-List:
- Weitere Server-Installation: Debian 10 Buster (wird DNS-Server)
- Weitere Client-Installation: CentOS 7 (Red Hat Familie), openSUSE Leap 15.1 (ISO aus DVD)
- DHCP: IP-Reservierung anhand MAC-Adresse
- DNS-Server (Bind9) installieren und konfigurieren
- ...
Rekapitulation
Ausführliche Rekapitulation für das "NAT-Routing" und die Virtuellen Installationen und Vernetzungen
Installation Debian Server
... Maschine: debian-server-17
Standard-/Minimalinstallation, Korrektur von /etc/apt/sources.list
, Tricks zur Auflösung (s.u.), ...
Nachinstallation Paket openssh-server und Tests mit SSH
Debian - Grub und Terminalauflösungen
in /etc/default/grub
eintragen:
...
GRUB_GFXMODE=1024x768
GRUB_GFXPAYLOAD_LINUX=keep
...
dann mit update-grub
die Grubkonfiguration erneuern und reboot
.
Auf (Trainer-)VMs kann für die bessere Lesbarkeit am Beamer noch mit dpkg-reconfigure console-setup
noch eine massigere Schrift für die Konsole definiert werden.
Port-Forwarding
Übung:
SSH-Server auf dem debian-server-17 auch von der openSUSE-Host-Maschine aus über den Router ereichbar!
(Link SysTutorials)
Beispielhafter iptables Aufruf:
iptables -A PREROUTING -t nat -i enp0s3 -p tcp --dport 2222 -j DNAT --to 192.168.17.50:22
Die beteiligten Maschinen in einer Übersicht:
Rechnername: | os-host-17 |
vm-router-17 |
debian-server-17 |
Netz: | VHS BS | VHS BS VM intnet |
VM intnet |
IP: | 10.100.211.117 | 10.100.211.217 192.168.17.1 |
192.168.17.50 |
User: | joerouter | joeserver |
Nutzung von SSH-Weiterleitung in einer openSUSE-Host Konsole auf os-host-17
:
ssh joeserver @ 10.100.211.217 -p 2222
Für die Nachhaltigkeit des Port-Forwardings müssen die neuen Regelsätze persistiert werden:
iptables-save > /etc/iptables/rules.v4
Anm.: die alten Regeln gerne vorher mal sichern (cp Befehl für rules-v4-bak-20191113)
DNS mit dem BIND9
... Berkeley Internet Name Daemon - Link
Umsetzung hier auf einem Debian System mit Standardeinstellungen nach diversen Anleitungen (z.B. Debian Wiki oder Debian Handbook - DNS )
Installation auf Debian mit apt install bind9 bind9-doc
; diverse Utilities/Tools mit Paket dnsutils
Die Konfigurationen des BIND befinden sich in:
/etc/default/bind9
(allgemeine Konfigurationsdatei - bei systemd Nutzung bitte hinterfragen ob aktiv)
/etc/bind/
- Haupt-Konfigurationsordner mit zentraler Datei /etc/bind/named.conf
named.conf
inkludiert drei weitere conf-Dateien, die ihrerseits die Konfigurationen enthalten:
- include
named.conf.options
Einstellungen/Optionen für den DNS-Server - include
named.conf.local
hier werden Zonen erstellt, deren Definitionen dann in db.* Dateien (Aufruf mittels file) ausgelagert werden
(siehe db.firma17.local und 17.168.192.in-addr.arpa für unsere Übungsumgebung) - include
named.conf.default-zones
Standard-Zonen: localhost (db.local) oder 127.in-addr.arpa (db.127)
Die Inbetriebnahme / Konfigurationen erfolgen in drei Phasen:
- Caching / Forwarding
- Forward Lookup Zone
- Reverse Lookup Zone
Während der Umsetzungen sollte der "Firmenplan" (die Doku) genau beachtet und aktualisiert werden.
DNS (Caching / Forwarding)
Analyse der Konfigurationen in /etc/bind - Organisationsstruktur studieren (includes) und Vorlagen
Hier: Einrichtung DNS als Caching DNS und DNS-Forwarder
Installation und Einrichtung z.B. gemäß Anleitung
Achtung: da wir jetzt einen DNS-Server (host: server17 - 192.168.17.10 / 24) haben - und auch nur diesen als DNS-Ansprechpartner haben wollen - müssen wir natürlich die Konfiguration für den DHCP Server anpassen (option domain-name-servers 192.168.17.10, 8.8.8.8)
Ausschnitt der Konfiguration für den DNS-Server (hier: /etc/bind/named.conf.options
)
Als DNS-forwarder wurde der Google-DNS 8.8.8.8 eingetragen; (alternativ) auch der Firmen/VHS DNS denkbar:
acl goodclients {
192.168.17.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
forwarders {
8.8.8.8;
};
forward only; # ggf. später auskommentieren!
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Anm.: nur Auszug aus der Konfiguration; Ausführliche Tests der Konfiguraiton im Netzwerk auf Client und Server
Vor dem Neustarten des DNS-Servers ( service bind9 restart
) bitte vorher named-checkconf
durchführen!
Grund: die Konfigurationen sind sehr empfindlich und man kann sich schnell mal vertippen oder ein ";" vergessen!
Do, 14.11.19
Donnerstag, 14.11.19, 08.30 - 16.00 Uhr
Rekapitulation, TN-Themen
Fortsetzung To-Do-List:
- Weitere Client-Installationen:
CentOS 7 als Minimal-Installation / Server (Red Hat Familie)
openSUSE Leap 15.1 (ISO aus DVD) - DHCP: IP-Reservierung anhand MAC-Adresse für CentOS Server
- DNS-Server (Bind9) mit lokalen Zonen (Forward und Reverse) konfigurieren
- LAMP: auf Debian Server installieren
- ...
Wir starten heute - nach einer kurzen Wiederholung - mit letzten Installationen und ein paar "Fingerübungen" im Netz bevor wir dann DNS komplettieren ...
CentOS 7- ISO per SMB
... als Minimal-Installation / Server (Red Hat Familie)
Die Installationen können unter centos.org heruntergeladen werden. Wir nutzen aber ein ISO, welches bereits auf einem "Windows-PC" heruntergeladen wurde und über eine (Windows-) Freigabe zur Verfügung gestellt wird.
Wir greifen mittels SMB-Protokoll auf die Freigabe zu. Man kann hier natürlich wieder über die Konsole arbeiten, aber mittels Dateimanager Dolphin (KDE-Tool auf dem openSUSE Host-System) geht die Arbeit einfacher von der Hand:
(in Dolphin-Teilfenster Adresszeile eingeben und Authentifizierung mit Username/Password)
smb: // 10.100.211.115
Nach Kopie des Install-ISO folgt die Installation...
Installation bei Red Hat Systemen mit Install-Tool Anaconda - etwas gewöhnungsbedürftig (siehe Netzwerk-Aktivierung nötig), weil auf professionelles Deployment im Firmenumfeld optimiert.
Anm.: das kann YaST (siehe Suse / openSUSE) auch.
DHCP - Reservierungen
VM centos-server-17
auf reservierte IP 192.168.17.60 / 24
konfigurieren
mittels DHCP-Konfigurationsdatei: /etc/dhcp/dhcpd.conf
...
host centos-server-17 {
hardware ethernet 08:00:20:A4:89:C1;
fixed-address 192.168.17.60;
}
...
Und natürlich wieder das Testen nicht vergessen!
Tipp: Bei Nutzung von VirtualBox kann man die MAC-Adresse in den Eigenschaften der Maschine nachrecherchieren.
DNS (lokale Forward Zone firma17.local)
Beim DNS-Server debian-server-17 (192.168.17.50) wichtig:
für den DNS-Server selber bitte nicht die /etc/resolv.conf
vergessen und dort manuell den "nameserver 192.168.17.10" Eintrag vornehmen und testen!
Anm.: das gilt generell für alle statisch konfigurierten Maschinen (Server)!
Testbefehle: nslookup
, dig
, host
(Nachinstallation Paket dnsutils/Debian, bind-utils/CentOS)
die Vorgehensweise für die beteiligten Konfigurationsdateien in Kürze:
in /etc/bind/named.conf.local
eine neue Zone festlegen:
zone "firma17.local" {
type master;
file "/etc/bind/db.firma17.local";
};
mit einer Kopie von /etc/bind/db.local in /etc/bind/db.firma17.local
die neue Master Zone firma17.local definieren:
;
; BIND data file for firma17.local
;
$TTL 604800
@ IN SOA firma17.local. root.firma17.local. (
2018103100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS debian-server-17.firma17.local.
@ IN A 192.168.17.50
vm-router- 17 IN A 192.168.17.1
debian-server-17 IN A 192.168.17.50
centos-server-17 IN A 192.168.17.60
debian-gnome-17 IN A 192.168.17.100
ns1 IN CNAME debian-server-17
www IN CNAME debian-server-17
Erinnerung:
ggf. noch in den BIND-Optionen (/etc/bind/named.conf.options) den Eintrag "forward only;" auskommentieren!
Einträge für die "Übungsfirma" eingerichtet und mit Tools (nslookup, host, dig) getestet.
Anm.: (noch) keine Revers-Lookup-Zone eingerichtet! Das wäre für alle Installationen "Mail Exchanger" aber notwendig!
DNS (lokale Reverse Zone 17.168.192.in-addr.arpa)
Jetzt also noch für unsere lokale Firma "firma17.local" im Netz 192.168.17.0 / 24 eine Reverse Lookup Zone definieren!
In /etc/bind/named.conf.local
eine neue Zone unterhalb der Forward Lookup Zone "firma17.local" festlegen:
zone "17.168.192.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.192.168.17";
};
Und die Reverse Lookup Zonen Datei /etc/bind/db.192.168.17
(Tipp: Kopie aus /etc/bind/db.127 erstellen)
; BIND reverse data file for LAN-Subnet
;
$TTL 604800
@ IN SOA firma17.local. root.firma17.local. (
2018103100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS debian-server-17.firma17.local.
1 IN PTR vm-router-17.firma17.local.
50 IN PTR debian-server-17.firma17.local.
60 IN PTR centos-server-17.firma17.local.
100 IN PTR debian-gnome-17.firma17.local.
Alles natürlich wieder mit Tools nslookup
, host
und dig
testen!
Aufrufe: (Anm.: hier nur Standardaufrufe - gerne Manpages nutzen)nslookup
(hier auch interaktive Konsole möglich), host debian-server-17
bzw. host -a 192.168.17.50
und dig vm-router-17
bzw. dig -x 192.168.17.1
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 (drei) Einträge in der Reverse-Zone 10.in-addr.arpa
müssten lauten:
1.0.0 IN PTR router17.firma17.local.
20.19.18 IN PTR server17.firma17.local.
254.255.255 IN PTR centos17.firma17.local.
Reverse halt ;-)
Hinweis zu DNS-Client-/Server-Technik: manche Distributionen hat in der /etc/nsswitch.conf
eine ungünstige Auflösungsreihenfolge für die "hosts" eingestellt:
(Anm.: man kann nicht an Namen debian-server-17 und debian-server-17.firma17.local erfolgreich pingen)
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 ZeroConf (Avahi / Bonjour / APIPA) und hilft bei der Auflösung von Namen "ohne echtes DNS" (IPs: 169.254.x.y / 16)
PHP / Apache
Zum Abschluss einer paar vorbereitende Installationen zum LAMP:
- PHP 7.3 für die Befehlzeile (CLI) und
- Apache2 (Webserver httpd)
auf dem Debian Server (debian-server-17).
apt install php7.3-cli apache2
Diverse Tests:
- php --version
- Analyse des Webservice mit
systemctl status apache2.service
zeigt Fehlermeldung zu Hostname; eine mögliche Lösung:
Eintrag von Zeile "ServerName www.firma17.local" in /etc/apache2/apache2.conf Datei - Aufruf der Website www.firma17.local auf der debian-gnome-17 VM im Firefox Browser
Anm.: Analyse der Python-Installationen - Python 2 vs. Python 3
Zugriffe auf Server im privaten LAN
Fragestellung:
Könnte man auch aus dem VHS BS Netz (Rechner: os-host-17 mit 10.100.211.117)
den Webserver (debian-server-17 mit 192.168.17.50:80) aufrufen?
Lösungen:
- Port-Forwarding: s. Lösung für SSH-Forwarding mit iptables auf vm-router-17 :
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.17.50:80
Anm.: beliebige Anfrage an Port 8080 am vm-router-17 öffnet die Website auf debian-server-17 (192.168.17.50) - SSH-Tunnel: Anleitung s. u.
mit SSH-Zugriff auf den vm-router-17 kombinierte Konfiguration eines lokalen Ports für den Webservice auf 192.168.17.50
Anm.: hier SSH-Zugriff auf vm-router-17 nötig! Das öffnet dann auch alle anderen Zugriffe (Dienste) auf die Rechner im Privaten VM-Netz!
An dieser Stelle eine Kurzanleitung zum ...
SSH Tunnel
Die beteiligten Maschinen in einer Übersicht:
Rechnername: | os-host-17 |
vm-router-17 |
debian-server-17 |
Netz: | VHS BS | VHS BS VM intnet |
VM intnet |
IP: | 10.100.211.117 | 10.100.211.217 192.168.17.1 |
192.168.17.50 |
User: | joerouter | joeserver |
Nutzung von SSH-Tunnel in einer openSUSE-Host Konsole auf os-host-17
:
ssh joerouter @ 10.100.211.217 -L 8080:192.168.17.50:80
Jetzt kann man auf os-host-17 einen Browser mit URL localhost:8080 öffnen und sieht die Apache2-Testsite des debian-server-17!
Fr, 15.11.19
Freitag, 15.11.19, 08.30 - 16.00 Uhr
Rekapitulation, TN-Themen
To-Do:
- Installationen openSUSE Leap 15.1
einfach mit Standard-Vorgaben durchinstallieren - Komplettierung LAMP
- Infos zu Bonding
kurz das Kapitel(chen) im Linux-Server Rheinwerk gezeigt
Erläuterung aus dem Debian Wiki zu Bonding
Erläuterung Ubuntuusers Wiki zu Netzwerkkarten bündeln - Bonding
Letzte Install-Übungen
- Client-VM openSUSE Leap 15.1
- Windows 10 Pro (19H2 - Version 1909)
installiert und "gecheckt".
Immer wieder...
- hostname
- Netzwerkkonfiguration
- Aktualisierungen OS
- Infrastrukturdienste aktualisieren: DNS (Anm.: schön wäre DDNS - Dynamic DNS)
Forts. zu Web- und Datenbankservices...
LAMP
Linux - Apache - MySQL/MariaDB - PHP; hier: PHP 7.3
Die am meisten verbreitete Technik-Kombo für Web-/DB-Services im Internet/Intranet.
Installation: Debian Buster (10.1) mit aktuellen Apache2, MariaDB und PHP 7.3
Für die PHP Version 7.3 benötigen wir nur die Standard-Repos von Debian 10.
Die Installation des Apache:
apt install apache2
Jetzt stellen wir die MariaDB Server- und Client-Technik
apt install mariadb-server mariadb-client
mysql_secure_installation
Und testen den Zugang zum MariaDB-Server mit einem mariadb/mysql-Client:
mysql -u root -h localhost -p
Im Seminar wurden einige kleine Tests im MySQL-Client durchgeführt!
DB Konfiguration für Benutzer root nach mysql_secure_installation
Skript:
der Zugang zur MariaDB-Datenbank für den (DB-) User root ist mittel plugin unix_socket konfiguriert.
Das verhindert das Login aus der Standard-Benutzer Konsole!
Mögliche Reparatur in mysql/mariadb-Konsole: (als DB-root - andere User funzen ja noch nicht ;-)
> use mysql;
> UPDATE user SET plugin='' WHERE user='root';
> flush privileges;
Vervollständigung der PHP 7.3 Installation (Übung durch TN):
apt install php7.3 php7.3-mysql libapache2-mod-php7.3 php7.3-curl php7.3-gd php7.3-mbstring php7.3-xml php7.3-soap curl php-gettext php-pear
Und beispielhafte Erweiterung der Apache2 Umgebung: Module aktivieren (z.B. für CMS wie TYPO3):
a2enmod expires
a2enmod rewrite
Diese Apache2-Modifikationen benötigen ein Restart / Reload: systemctl restart apache2
Anm.: Rückmeldungen/Vorgaben von a2enmod für nötige Apache2 Aktualisierung beachten
Jetzt noch ein paar Konfigurationen für die PHP-Umgebung: /etc/php/7.3/apache2/php.ini
Übung: max_execution_time = 240 (statt 30 Sekunden Standard) und bitte Apache2 reloaden/restarten
Testing der Apache2-PHP-Konfiguration mit einem kleinen PHP-Skript phpinfo.php
in /var/www/html
<?php
echo "Hallo Welt!";
phpinfo();
?>
Aufruf des Skripts im Browser mittels URL: www.firma17.local/phpinfo.php
Digitale Unterlagen (Screenshots) - bereitgestellt über SMB-Server auf PC 10.100.211.115
Sicherungsmöglichkeit des gesamten VirtualBox-VM-Netz auf eigenem USB-Medium.
TN-Bescheinigungen, Feedback-Bögen, letzte TN-Fragen
Vielen Dank für Ihre tollen Feedbacks - bis zum nächsten Mal...
Ihr Trainer Joe Brandes