Infosite von Joe Brandes
Eine Website von Trainer Joe Brandes. Infos zu IT-Seminaren von A bis Z. Das Zertifikat PC Systembetreuer (PCSYS) wurde Anfanger der 2000er zu Fachkraft IT-Systeme und Netzwerke (FITSN).
Das klassische PCS Zertifikat
Von der Hardware und Netzwerktechnik bis zu den den Betriebssystemen Windows, Windows Server und Linux
Ich biete diese Module an!
Ready for Tech Deep Dives...
Zertifikat CMSOD
Module Basiszertifikat
Module Specialist
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.11Zeiten: 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
Im Gegensatz zu vielen anderen Seminaren haben wir für diese Woche eigentlich nur eine Grundidee und wollen uns unseren Roten Faden selber stricken.
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
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.
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:
Notwendige und/oder mögliche Inhalte:
Schauen wir mal...
Montag, 08.11.21, 08.30 - 16.00 Uhr
Orientierungsphase, TN-Themen
... 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:
Eine tabellarische Übersicht:
Virtualisierungen gibt es viele und jede dieser Lösungen hat seine/ihre Vor- und Nachteile:
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.
Entscheidung für openSUSE-Distro als Host
Vorteile beim "Virtualisieren":
Und los geht es...
Installation von VirtualBox-Host: openSUSE Leap 15.3 (64-Bit)
Install-Medien (allgemein):
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
~# 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.
Gerätenamen /dev/sda (für den ersten Datenträger - dann /dev/sdb, ...)eingerichtete Partitionen mit Nummern: /dev/sda1, /dev/sda2, ...
/dev/sda
/dev/sdb, ...
/dev/sda1, /dev/sda2, ...
Anm. bei MBR dann /dev/sda5 als erste logische Partition (log. LW) in einer erweiterten Partitionfrüher bei EIDE-Geräten: /dev/hda; die sda-Bezeichner dann für SCSI, SATA und heute auch USB-Medien
/dev/sda5
/dev/hda
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
/etc/fstab
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)
/dev/sda2
/dev/sdb1
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.
/
/boot
/home
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:
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)
/dev/sda1
/dev/sda3
Erste Analyse und Tools rund um unsere Partitionen: lsblk , fdisk -l /dev/sda , gdisk (siehe GPT) , cfdisk
lsblk
fdisk -l /dev/sda
gdisk
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")
env LANG=C cfdisk
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 KontrollleisteAnm.: 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 )
zypper
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)
Druck
Grundkonfiguration: automatische Bildschirmfoto-Dateien mit Umschalten + Druck
Umschalten + Druck
Erste Netzwerkanalyse mit Linux:
ip address show
ip a s
/sbin/ifconfig
ip route show
ip r s
/sbin/route -n
cat /etc/resolv.conf
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.
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)
firma17.local
router17
server17
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
/etc/hosts
/etc/resolv.conf
und Technischen Umsetzungen in Linux:
/etc/network/interfaces
/dev/eth0
eth1
enp0s3
/etc/NetworkManager
/etc/NetworkManager/system-connections/verbindungsdatei
/etc/sysconfig/network-scripts
ifcfg-eth0
ifcfg-eth1
Nach Download des entsprechenden Debian-Install-ISOs werden diverse Grundsysteme in Betrieb genommen:
installiert und in Betrieb genommen.
Screenshots aus Seminarwoche 2019:
Dienstag, 09.11.21, 08.30 - 16.00 Uhr
Rekapitulation, TN-Themen
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
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.
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.
... Paket: isc-dhcp-server
Installation auf vm-router-17 - wichtig: an richtigem Adapter (LAN-Seite) zur Verfügung stellen!
vm-router-17
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)
apt install isc-dhcp-server
/etc/default/isc-dhcp-server
Die eigentliche Konfiguration liegt in Standardverzeichnis: /etc/dhcp/dhcpd.confBeispieleinträge / Konfigurationen (wurden vorher sauber bei Entwurf geplant)
/etc/dhcp/dhcpd.conf
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!)
systemctl status|restart|stop|enable|disable isc-dhcp-server
journalctl -u isc-dhcp-server
Übersicht zu Releases des DHCP-Servers:/var/lib/dhcp/dhcpd.releases (alle Infos inkl. MACs oder Lease-Times)
/var/lib/dhcp/dhcpd.releases
Ü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
~/.bashrc
Nachdem die letzten Iptables auch bereits die Netfilter-Techniken der Linux-Kernel nutzten (siehe iptables-nft) haben die meisten Distributionen komplett auf Netfilter umgestellt.
iptables-nft
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?
dpkg -l | grep nftables
root@vm-lpic-router:~# systemctl status nftables.servicenftables.service - nftablesLoaded: loaded (/lib/systemd/system/nftables.service; enabled; vendor preset: enabled)Active: active (exited) since Wed 2021-09-15 17:20:48 CEST; 2min 34s agoDocs: man:nft(8)http://wiki.nftables.orgMain PID: 994 (code=exited, status=0/SUCCESS)Tasks: 0 (limit: 2259)Memory: 0BCPU: 0CGroup: /system.slice/nftables.serviceSep 15 17:20:48 vm-lpic-router systemd[1]: Starting nftables...Sep 15 17:20:48 vm-lpic-router systemd[1]: Finished nftables.
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
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!
firewall-cmd
Die Konfiguration für Netfilter ist in
/etc/nftables.conf
/etc/sysconfig/nftables.conf
Wir sollten auch schauen, ob der Netfilter / nftables - Dienst läuft und ihn gegebenfalls für Starts aktivieren.
root@vm-lpic-router:~# systemctl enable nftables.service Created symlink /etc/systemd/system/sysinit.target.wants/nftables.service → /lib/systemd/system/nftables.service.
Und natürlich kann man das Ganze auch gleich mit einem kombinierten Aufruf systemctl enable nftables.service --now beauftragen.
systemctl enable nftables.service --now
Aktuelle Firewall-Analyse mit Tool nft:
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; } }
Links zu Netfilter:
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:
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 } }
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!
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:
... 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 } ...
Bitte beachten: die eigenen IP- und Benennungswerte nehmen.
Eigentliche Technik ist ja Netfilter: eine im Kernel implementierte Softwareschicht
Mit iptables kann man Regelsätze / Konfigurationen für verschiedene Tabellen erzeugen:
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
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)
eth0
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!
/etc/sysctl.conf
net.ipv4.ip_forward = 1
2) Forwarding von Paketen in "table filter" für beide Richtungen (LAN -> WAN und WAN -> LAN):Anm.: Angabe von -t filter kann als 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
iptables -F
iptables -F -t nat
Übung: Umsetzung der Regeln gerne als Skript: (touch nat-routing.sh und chmod u+x nat-routing.sh )
touch nat-routing.sh
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!
iptables-persistent
Nach der Installation: apt install iptables-persistent kann man mittels: iptables-save > /etc/iptables/rules.v4 die Regeln nachhaltig machen (persistieren)!
apt install iptables-persistent
iptables-save > /etc/iptables/rules.v4
Mittwoch, 10.11.21, 08.30 - 16.00 Uhr
To-Do-List:
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).
... Maschine: debian-server-17
debian-server-17
Standard-/Minimalinstallation, Korrektur von /etc/apt/sources.list , Tricks zur Auflösung (s.u.), ...
/etc/apt/sources.list
Nachinstallation Paket openssh-server und Tests mit SSH
Debian - Grub und Terminalauflösungen
in /etc/default/grub eintragen:
/etc/default/grub
... GRUB_GFXMODE=1024x768 GRUB_GFXPAYLOAD_LINUX=keep ...
dann mit update-grub die Grubkonfiguration erneuern und reboot .
update-grub
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.
dpkg-reconfigure console-setup
Ü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:
os-host-17
Nutzung von SSH-Weiterleitung in einer openSUSE-Host Konsole auf os-host-17 :
ssh joeserver @ 10.100.211.217 -p 2222
Siehe auch Umsetzung in Abschnitt NAT-Routing - Port-Forwarding
Zur Vollständigkeit noch die Umsetzung in (klassischer) 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:
Anm.: die alten Regeln gerne vorher mal sichern (cp Befehl für rules-v4-bak-20191113)
... 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
apt install bind9 bind9-doc
dnsutils
Die Konfigurationen des BIND befinden sich in:
/etc/default/bind9 (allgemeine Konfigurationsdatei - bei systemd Nutzung bitte hinterfragen ob aktiv)
/etc/default/bind9
/etc/bind/ - Haupt-Konfigurationsordner mit zentraler Datei /etc/bind/named.conf
/etc/bind/
/etc/bind/named.conf
named.conf inkludiert drei weitere conf-Dateien, die ihrerseits die Konfigurationen enthalten:
named.conf
named.conf.options
named.conf.local
named.conf.default-zones
Die Inbetriebnahme / Konfigurationen erfolgen in drei Phasen:
Während der Umsetzungen sollte der "Firmenplan" (die Doku) genau beachtet und aktualisiert werden.
Analyse der Konfigurationen in /etc/bind - Organisationsstruktur studieren (includes) und Vorlagen
Hier: Einrichtung DNS als Caching DNS und DNS-ForwarderInstallation 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:
/etc/bind/named.conf.options
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!
service bind9 restart
named-checkconf
Donnerstag, 11.11.21, 08.30 - 16.00 Uhr
Fortsetzung To-Do-List:
Wir starten heute - nach einer kurzen Wiederholung - mit letzten Installationen und ein paar "Fingerübungen" im Netz bevor wir dann DNS komplettieren ...
... 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.
VM centos-server-17 auf reservierte IP 192.168.17.60 / 24 konfigurierenmittels DHCP-Konfigurationsdatei: /etc/dhcp/dhcpd.conf
centos-server-17
192.168.17.60 / 24
... 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.
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)
nslookup
dig
host
die Vorgehensweise für die beteiligten Konfigurationsdateien in Kürze:in /etc/bind/named.conf.local eine neue Zone festlegen:
/etc/bind/named.conf.local
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:
/etc/bind/db.firma17.local
; ; 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
Screenshots:
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!
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)
/etc/bind/db.192.168.17
; 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
host debian-server-17
host -a 192.168.17.50
dig vm-router-17
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:
10.in-addr.arpa
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)
/etc/nsswitch.conf
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)
Zum Abschluss einer paar vorbereitende Installationen zum LAMP:
auf dem Debian Server (debian-server-17).
apt install php7.3-cli apache2
Diverse Tests:
systemctl status apache2.service
Anm.: Analyse der Python-Installationen - Python 2 vs. Python 3
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:
An dieser Stelle eine Kurzanleitung zum ...
Die beteiligten Maschinen in einer Übersicht:
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!
Freitag, 12.11.21, 08.30 - 16.00 Uhr
To-Do:
installiert und "gecheckt".
Immer wieder...
Forts. zu Web- und Datenbankservices...
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 ;-)
mysql_secure_installation
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
systemctl restart apache2
Jetzt noch ein paar Konfigurationen für die PHP-Umgebung: /etc/php/7.3/apache2/php.ini
/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
phpinfo.php
/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.115Sicherungsmöglichkeit des gesamten VirtualBox-VM-Netz auf eigenem USB-Medium.
TN-Bescheinigungen, Feedback-Bögen, letzte TN-Fragen
Vielen Dank für die tollen Feedbacks (persönlich und über unsere Evaluationsbögen) - Super!Ich freue mich auf unsere nächsten SeminareIhr Trainer 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 ...
Private Visitenkarte / Technik: HTML & CSS joe-brandes.de
Ich erarbeite und konzipiere seit über 30 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 Visitenkarte / Technik: HTML & CSS becss.de
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.
Billard Sport BS / nicht mehr von mir betreut billard-sport-braunschweig.de