Dieser Workshop richtet sich an interessierte Teilnehmer, die tiefer in das Betriebssystem Linux eintauchen möchten.

VMs linux aufbau sem 20181026 800px

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:

DistroAbleger der DistroPaketmanagement
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:

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.

btrfs partitionierung os 150

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:
os leap vbox host partitions 800px
Bereitgestellte Wechsel-SSD: SanDisk 240 GB (per UEFI/GPT)

MountNutzungEigenschaften
/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:
lsblkfdisk -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-KonfigurationShellaufrufe
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:
plan topologie dom 2021 800pxAnm.: 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 wie ifcfg-eth0ifcfg-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:

  • screenshot.01
  • screenshot.02
  • screenshot.03
  • screenshot.04
  • screenshot.05
  • screenshot.06

 

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:

plan topologie dhcp nat-routing 800px

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

 

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:

  • screenshot.01
  • screenshot.02
  • screenshot.03
  • screenshot.04
  • screenshot.05
  • screenshot.06

 

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:

 

Schematische Darstellung aus Link jensd.be:

nftables schematics 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:

netfilter hooks

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!
netfilter iptables 20181031 800px
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).

Rekapitulation Tag 03 NAT-Routing VMs 800px

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:

  1. Caching / Forwarding
  2. Forward Lookup Zone
  3. 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!

 

  • screenshot.01
  • screenshot.02
  • screenshot.03
  • screenshot.04
  • screenshot.05
  • screenshot.06

 

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

Forward Lookup Zone firma17.local

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.

Reverse Lookup Zone 17.168.192.in-addr.arpa

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:

  • screenshot.01
  • screenshot.02
  • screenshot.03
  • screenshot.04
  • screenshot.05
  • screenshot.06

 

Tag 05

Freitag, 12.11.21, 08.30 - 16.00 Uhr

Rekapitulation, TN-Themen

To-Do:

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:

  • screenshot.01
  • screenshot.02
  • screenshot.03
  • screenshot.04
  • screenshot.05
  • screenshot.06

 

 

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

  Privates

... zu Joe Brandes

Sie finden auf dieser Seite - als auch auf meiner privaten Visitenkarte joe-brandes.de einige Hintergrundinformationen zu mir und meinem Background.
Natürlich stellt die IT einen Schwerpunkt in meinem Leben dar - aber eben nicht nur ...

joe brandes 600px

Private Visitenkarte / Technik: HTML & CSS /
  joe-brandes.de

  Jobs

... IT-Trainer & Dozent

Ich erarbeite und konzipiere seit über 25 Jahren IT-Seminare und -Konzepte. Hierfür stehen der "PC-Systembetreuer / FITSN" und der "CMS Online Designer / CMSOD". Ich stehe Ihnen gerne als Ansprechpartner für Ihre Fragen rund um diese und andere IT-Themen zur Verfügung!

becss 600px

BECSS Visitenkarte / Technik: HTML & CSS /
  becss.de

  Hobby

... Snooker & more

Wer einmal zum Snookerqueue gegriffen hat, der wird es wohl nicht wieder weglegen. Und ich spiele auch immer wieder gerne eine Partie Billard mit den Kumpels und Vereinskameraden. Der Verein freut sich über jeden, der einmal in unserem schicken Vereinsheim vorbeischauen möchte.

bsb 2011 600px

Billard Sport BS / Joomla 3.x /
  billard-bs.de

PC Systembetreuer ist J. Brandes - IT seit über 35 Jahren - Technik: Joomla 3.4+, Bootstrap 3.3.4 und "Knowledge"

© 2024 - Websitedesign und Layout seit 07/2015 - Impressum - Datenschutzerklärung
Nach oben