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.
Hier die Rahmendaten unseres Seminars:
Ort: VHS Braunschweig, Raum 2.11
Zeiten: Mo, 08.11. bis Fr, 12.11.2021; jeweils 08.30 - 16.00 Uhr
Ich werde unser Seminar in diesem Beitrag wieder ausführlich begleiten...
Ihr Trainer Joe Brandes
Intro
Intro
Im Gegensatz zu vielen anderen Seminaren haben wir für diese Woche eigentlich nur eine Grundidee und wollen uns unseren Roten Faden selber stricken.
Roter Faden
Diesen Begriff hört man in meinen Seminaren häufiger ;-). Gemeint ist hier: Das grundsätzliche Verständnis der fraglichen IT-Techniken. Am Besten gleich so, dass man auch nach einer Zeit ohne Beschäftigung mit diesen Techniken sehr schnell wieder in Fahrt kommt.
Unter einem roten Faden versteht man ein Grundmotiv, einen leitenden Gedanken, einen Weg oder auch eine Richtlinie. „Etwas zieht sich wie ein roter Faden durch etwas“ bedeutet beispielsweise, dass man darin eine durchgehende Struktur oder ein Ziel erkennen kann.
Quelle: Wikipedia - Roter Faden
Wenn wir also am ersten Seminartag unsere Übungsumgebung in Betrieb nehmen, werden wir parallel die gewünschten Themen und den Fahrplan für die Seminarwoche weiter spezifizieren und präzisieren.
Distributionen
Hier ein paar Vorgaben zu den im Seminar eingesetzten Distros bzw. Betriebssystemen:
Für den Einsatz in unserem (virtuellen) Firmennetzwerk und für die nötigen Infrastrukturen werden wir verschiedene Standard-Distributionen einsetzen:
- openSUSE (Leap 15)
VirtualBox Host und VM-Client mit KDE - Debian (Bullseye 11)
NAT-Router, Netfilter-Firewall, Server (DHCP, DNS), VM-Client - centOS (7)
Server, Client - Windows 10 oder auch Windows 11
natürlich nur als Client ;-)
Seminartopics
Notwendige und/oder mögliche Inhalte:
- Infrastruktur-Services
- DHCP
- NAT-Routing
- DNS
- Sicherheit / Firewalling
- Netfilter
- iptables
- Web-Applikationen mit LAMP
- Apache2 Webserver
- MySQL/MariaDB Datenbank
- PHP - Serverseitige Skripttechnik
- Tipps & Trick für
- Shell: Bash oder Zsh, FZF, Tmux
- professionelle SSH mit Linux- und Windows-Clients
- Softwareverwaltungen RPM, DEB
- VIm - Editor professionell beherrschen
- ...
- Arch Linux - Linux from Scratch
- Systemüberwachung und Network Monitoring
- Linux als
- Fileserver (NFS, SMB)
- FTP-Server
- Print-Server
- LDAP-Verzeichnis-Server
- ...
Schauen wir mal...
Tag 01
Montag, 08.11.21, 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 - 15.2 - 15.3 Leap
Eine tabellarische Übersicht:
Distro | Ableger der Distro | Paketmanagement |
---|---|---|
Red Hat (Link) |
Fedora (Desktop, "Bleeding Edge") bzw. CentOS (Community Server, Laufzeitproblem ab 8) Kaufversion: RHEL (Red Hat Enterprise Linux) |
RPM (Red Hat Package Management) Standardtool: rpm (ohne Auflösung Abhängigkeiten), yum |
Novell (Suse) (Link) |
openSUSE (Link) Kaufversion: SLES (Suse Linux Enterprise Server) bzw. SLED |
RPM mit YaST2-SW-Verwaltung, zypper, yum |
Debian (Link) |
Ubuntu bzw. Ubuntu-Derivate: Kubuntu, Xubuntu, ... Linux Mint (basiert auf Ubuntu; Alternativ: LMDE basiert auf Debian), Antix (mit klassischem SysVinit), ... |
DEB (Debian Pakete) Standardtool: dpkg (ohne Auflösung Abhängigkeiten) APT-Tools: apt, (klassisch: apt-get, apt-cache), aptitude, ... |
Virtualisierungen gibt es viele und jede dieser Lösungen hat seine/ihre Vor- und Nachteile:
- VirtualBox
- Microsoft Hyper-V
- Vmware Lösungen
- KVM/qemu (siehe Proxmox VE basierend auf Debian)
- XEN
Die detaillierten Darstellungen sollen hier nicht stattfinden.Und überhaupt haben wir für Container (Docker) und Virtualisierungen ein gleichnamiges Seminar ;-).
In Seminaren im Dunstkreis der PC Systembetreuer / Fachkraft IT-Systeme und Netzwerke Seminare greifen wir gerne zu den VirtualBox-Lösungen.
VirtualBox Host
Entscheidung für openSUSE-Distro als Host
- recht gute Einbindung in Paketverwaltung
- einfache Funktionalität "out-of-box"
- Kompatibilität zu Windows VBox-en
Vorteile beim "Virtualisieren":
- Jeder TN bekommt sein eigenes Netz / seine eigene Infrastruktur
- Einfache Bereitstellung von Installmedien als Downloads/ISOs
- TN könn(t)en ihr gesamtes "BU-Firmen-Netz" am Ende des Seminars mit nach Hause nehmen!
Und los geht es...
Installation von VirtualBox-Host: openSUSE Leap 15.3 (64-Bit)
Install-Medien (allgemein):
- 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)
TN bekommen USB-Install-Sticks mit Ventoy-Technik!
Quellen in 64-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
- 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.1.26)
... 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 Linux-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 das "klassische" Ext-Dateisysteme Ext4 in sehr einfacher Partitionierung zur optimalen Nutzung unserer 120 oder 240 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.3 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: "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) |
ip route show ip r s (kurze Variante)/sbin/route -n hier: in Spalte Flags das G suchen - dann Spalte Router |
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 werden diverse Grundsysteme in Betrieb genommen:
- vm-router
Debian 11 (Bullseye) 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 - manuelle Konfiguration folgt
später als DHCP-Server - vm-server
später als DNS-Server - debian-gnome
Debian 11 (Bullseye) Vollinstallation inkl. Gnome-Desktop (ca. 1500 Pakete)
installiert und in Betrieb genommen.
Screenshots aus Seminarwoche 2019:
Tag 02
Dienstag, 09.11.21, 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
- siehe Extra-Chapter hier in Beitrag für Seminarwoche oder
- online unter linux.joe-brandes.de (Chapter NAT)
Diverse Übungen über den Tag
- Einfaches Skripting
- Installationsübungen
- Bash konfigurieren
mit~/.bashrc
(z.B. für root Farbe in Konsole)
oder auch Tools FZF oder Starship.rs - ...
Screenshots aus Seminarwoche 2019:
NAT-Routing
NAT-Routing mit Netfilter / iptables
Nachdem die letzten Iptables auch bereits die Netfilter-Techniken der Linux-Kernel nutzten (siehe iptables-nft
) haben die meisten Distributionen komplett auf Netfilter umgestellt.
Wir werden also über (z.B.) dpkg -l | grep nftables
die Softwareinstallation vorfinden. Die entscheidende Frage ist aber, ober der nftables.service auch gestartet/genutzt wird?{code lang:bash showtitle:false lines:false hidden:false}root@vm-lpic-router:~# systemctl status nftables.service
nftables.service - nftables
Loaded: loaded (/lib/systemd/system/nftables.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2021-09-15 17:20:48 CEST; 2min 34s ago
Docs: man:nft(8)
http://wiki.nftables.org
Main PID: 994 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 2259)
Memory: 0B
CPU: 0
CGroup: /system.slice/nftables.service
Sep 15 17:20:48 vm-lpic-router systemd[1]: Starting nftables...
Sep 15 17:20:48 vm-lpic-router systemd[1]: Finished nftables.{/code}Die Entwickler von Netfilter und Verwalter der Distributionen schlagen dann auch gleich noch firewalld als Frontend vor. Wir bleiben aber in unseren Seminaren komplett in der Konsole bei den Basistechniken der eigentlichen Software - also (erst einmal) keine Oberfläche für die Firewall oder zusätzliche firewall-cmd
Aufrufe!
Die Konfiguration für Netfilter ist in
/etc/nftables.conf
bei Debian oder/etc/sysconfig/nftables.conf
bei CentOS/RHEL.
Wir sollten auch schauen, ob der Netfilter / nftables - Dienst läuft und ihn gegebenfalls für Starts aktivieren.{code lang:bash showtitle:false lines:false hidden:false}root@vm-lpic-router:~# systemctl enable nftables.service
Created symlink /etc/systemd/system/sysinit.target.wants/nftables.service → /lib/systemd/system/nftables.service.{/code}Und natürlich kann man das Ganze auch gleich mit einem kombinierten Aufruf systemctl enable nftables.service --now
beauftragen.
Aktuelle Firewall-Analyse mit Tool nft:{code lang:bash showtitle:false lines:false hidden:false}root@vm-lpic-router:~# nft list tables
table inet filter
root@vm-lpic-router:~# nft list table inet filter
table inet filter {
chain input {
type filter hook input priority filter; policy accept;
}
chain forward {
type filter hook forward priority filter; policy accept;
}
chain output {
type filter hook output priority filter; policy accept;
}
}{/code}Links zu Netfilter:
- https://wiki.debian.org/nftables
- https://wiki.nftables.org/wiki-nftables/index.php/Main_Page
- https://wiki.nftables.org/wiki-nftables/index.php/Quick_reference-nftables_in_10_minutes
- https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables
- https://www.pro-linux.de/news/1/27510/debian-11-bullseye-setzt-ganz-auf-nftables-als-paketfilter.html
- https://ral-arturo.org/2019/10/14/debian-netfilter.html
- https://wiki.nftables.org/wiki-nftables/index.php/Simple_ruleset_for_a_server
- https://wiki.nftables.org/wiki-nftables/index.php/Simple_ruleset_for_a_home_router
- https://jensd.be/1086/linux/forward-a-tcp-port-to-another-ip-or-port-using-nat-with-nftables
Schematische Darstellung aus Link jensd.be:
Aus dem Link für das Simple Ruleset for a Home Router kann man die wichtigsten Einstellungen für ein klassisches NAT-Routing entnehmen.
Im Original: This example shows the configuration of an IPv4-only home router using a ppp interface to go out to the Internet.
Wir ersetzen hier einfach das öffentliche PPP durch unsere WAN-Seite des Routers und passen die anderen Vorgaben/Einstellungen an.
Das wird unsere neue /etc/nftables.conf
:{code lang:bash showtitle:false lines:false hidden:false}flush ruleset
define DEV_PRIVATE = eth1
define DEV_WORLD = eth0
define NET_PRIVATE = 172.16.100.0/24
table ip global {
chain inbound_world {
# accepting ping (icmp-echo-request) for diagnostic purposes.
# However, it also lets probes discover this host is alive.
# This sample accepts them within a certain rate limit:
#
icmp type echo-request limit rate 5/second accept
# allow SSH connections from some well-known (internet) host
ip saddr 10.200.82.1 tcp dport ssh accept
# komplettem Teilnetz den Zugriff ermöglichen
# ip saddr 10.200.82.0/24 tcp dport ssh accept
}
chain inbound_private {
# accepting ping (icmp-echo-request) for diagnostic purposes.
icmp type echo-request limit rate 5/second accept
# allow DHCP, DNS and SSH from the private network
ip protocol . th dport vmap { tcp . 22 : accept, udp . 53 : accept, tcp . 53 : accept, udp . 67 : accept}
}
chain inbound {
type filter hook input priority 0; policy drop;
# Allow traffic from established and related packets, drop invalid
ct state vmap { established : accept, related : accept, invalid : drop }
# allow loopback traffic, anything else jump to chain for further evaluation
iifname vmap { lo : accept, $DEV_WORLD : jump inbound_world, $DEV_PRIVATE : jump inbound_private }
# the rest is dropped by the above policy
}
chain forward {
type filter hook forward priority 0; policy drop;
# Allow traffic from established and related packets, drop invalid
ct state vmap { established : accept, related : accept, invalid : drop }
# connections from the internal net to the internet or to other
# internal nets are allowed
iifname $DEV_PRIVATE accept
# the rest is dropped by the above policy
}
chain postrouting {
type nat hook postrouting priority 100; policy accept;
# masquerade private IP addresses
ip saddr $NET_PRIVATE oifname $DEV_WORLD masquerade
}
}{/code}Zu beachten: im nft-Code wurde nur speziell für eine Maschine (10.200.81.1) der Zugang per SSH ermöglicht. Nach dem Aktivieren dieses Regelsatzes (nft list ruleset) kann nur noch dieser PC sich per SSH mit dem Router verbinden.
Gefahr - Noch ein kleiner Hinweis und Tipp:
Bitte niemals SSH-Zugänge komplett zumachen, wenn man keine Möglichkeiten hat noch direkt an die Maschine zu kommen!
Und falls es noch nicht gesagt wurde: Firewalling ist nicht gerade easy ;-)
Die Nftables Website schlägt für die Orientierung die folgende Grafik vor:
Link ( https://wiki.nftables.org/wiki-nftables/index.php/Netfilter_hooks ) zum Wiki und der Darstellung mit den sogenannten Netfilter hooks.
Hinweis: Und wie bei den Schemata zu Iptables ist hier auch sehr wichtig, dass man die Darstellung als Schema für einen Netzadapter erkennt. Ein Router hat dann hiervon mindestens zwei!
Port-Forwarding
Siehe: https://jensd.be/1086/linux/forward-a-tcp-port-to-another-ip-or-port-using-nat-with-nftables
Hier mal ein paar beispielhafte Anpassungen / Ergänzungen für das Port-Forwarding (aka "Port öffnen") des Routers auf der WAN-Seite:{code lang:bash showtitle:false lines:false hidden:false}...
chain forward {
type filter hook forward priority 0; policy drop;
# Allow traffic from established and related packets, drop invalid
ct state vmap { established : accept, related : accept, invalid : drop }
# connections from the internal net to the internet or to other
# internal nets are allowed
iifname $DEV_PRIVATE accept
# in case of Port-Forwarding *please* accept forward for WAN-NIC
iifname $DEV_WORLD accept
# the rest is dropped by the above policy
}
chain postrouting {
type nat hook postrouting priority 100; policy accept;
# masquerade private IP addresses
# ip saddr $NET_PRIVATE oifname $DEV_WORLD masquerade
masquerade
}
chain prerouting {
type nat hook prerouting priority -100; policy accept;
ip daddr 192.168.2.254 tcp dport { 8888 } dnat to 172.16.100.10:80
ip daddr 192.168.2.254 tcp dport { 8889 } dnat to 172.16.100.10:443
ip daddr 192.168.2.254 tcp dport { 22222 } dnat to 172.16.100.10:22
ip daddr 192.168.2.254 tcp dport { 22223 } dnat to 172.16.100.50:22
}
...{/code}Bitte beachten: die eigenen IP- und Benennungswerte nehmen.
Klassische iptables
Eigentliche Technik ist ja 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)!
Tag 03
Mittwoch, 10.11.21, 08.30 - 16.00 Uhr
To-Do-List:
- Weitere Server-Installation: Debian 10 Buster (wird DNS-Server)
- DNS-Server (Bind9) installieren und konfigurieren
- ...
- Weitere Client-Installation: CentOS 7 (Red Hat Familie), openSUSE Leap 15.1 (ISO aus DVD)
- DHCP: IP-Reservierung anhand MAC-Adresse
- ...
Rekapitulation
Ausführliche Rekapitulation für das "NAT-Routing" und die Virtuellen Installationen und Vernetzungen:
Anm.: hier die Darstellung mit Iptables - seit 2020/2021 (auch) Umsetzung (direkt) mit Netfilter (nftables.service).
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)
Die beteiligten Maschinen in einer (beispielhaften) Ü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
Netfilter
Siehe auch Umsetzung in Abschnitt NAT-Routing - Port-Forwarding
Zur Vollständigkeit noch die Umsetzung in (klassischer) Iptables:
Iptables
Beispielhafter iptables Aufruf:
iptables -A PREROUTING -t nat -i enp0s3 -p tcp --dport 2222 -j DNAT --to 192.168.17.50:22
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!
Screenshots aus Seminarwoche 2019:
Tag 04
Donnerstag, 11.11.21, 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!
Screenshots aus Seminarwoche 2019:
Tag 05
Freitag, 12.11.21, 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
Screenshots aus Seminarwoche 2019:
Vielen Dank für die tollen Feedbacks (persönlich und über unsere Evaluationsbögen) - Super!
Ich freue mich auf unsere nächsten Seminare
Ihr Trainer Joe Brandes