An der VHS Braunschweig findet eine Schulung im Rahmen der Mitarbeiterfortbildungen der TU Braunschweig zum Thema "Linux - Aufbauworkshop" statt.
Das alternative Betriebssystem Linux hat sich im professionellen als auch im privaten Umfeld etabliert. Hierfür stehen beispielhaft Linux-Distributionen wie Debian oder Ubuntu.
Das Seminar wendet sich an alle Mitarbeiterinnen und Mitarbeiter, die ein Linux-Grundlagenseminar besucht haben oder über Grundkenntnisse in Linux verfügen und die Linux in der Praxis anwenden können. Sie bauen Ihre Fertigkeiten im Umgang mit dem Betriebssystem Linux aus und lernen administrative Linux-Techniken kennen:
- Administrative Aufgaben (Bash Shell)
- Grundlegende Systemdienste
- Netz-Grundlagen
- Sicherheit
- Ihre Themen und Fragen
Hier die Rahmendaten unseres Seminars:
Ort: VHS Braunschweig, Raum 2.11
Teilnehmerzahl: 10 TN (Mitarbeiter/Innen der TU Braunschweig)
Zeiten: Mi, 26.09. bis Do, 27.09.2018; jeweils 09.00 - 16.00 Uhr
Ich werde unser Seminar in diesem Beitrag wieder ausführlich begleiten...
Ihr Trainer Joe Brandes
Mi., 26.09.18
Mittwoch, 26.09.18, 09.00 - 16.00 Uhr
- Orientierungsphase, TN-Themen (gesammelt und bei Tag 2 aufbereitet)
Installationsmedium (Wechselplatte/SSD VHS BS und Debian Stretch 9.5 64-Bit DVD für die TN) - Linux (oder eigentlich GNU/Linux)
freier Betriebssystemkern (hier: monolithisch, wobei aktuelle Entwicklungen nicht mehr nur starr monolithisch vs. Microkernel lauten; siehe Wikipedia-Artikel Link)
engl.: Kernel (siehe Website für den Kern auf kernel.org - Lizenz GNU Public License
erste öffentliche Erwähnung durch Linus Torvalds in Newsgroup comp.os.minix am 26. August 1991 (Wiki-Link L. Torvalds) - Distributionen - Übersicht und Auswahl
Debian - Nummer 1 bei den Server-OS für Web-Services und Co
Ableger: Ubuntu, Ubuntu-Varianten (Derivate: Kubuntu, Edubuntu, Mythbuntu, ...)
Red Hat - Firma mit Serverlizenzen Red Hat Enterprise Linux
Ableger: Fedora mit den offenen/freien SW-Paketen, CentOS
Novell - SLES Suse Linux Enterprise Server
Ableger: openSUSE - freie Community-Variante (siehe de.opensuse.org) - mit Version Leap 42.1 hat Novell die Entwicklungspfade von SLES und openSUSE zusammengelegt (Versionen: 13.1 - 13.2 → Leap 42.1 - 42.2 - 42.3 - Leap 15.0)
Distro Ableger der Distro Paketmanagement Red Hat
(Link)Fedora, CentOS
Kaufversion: RHELRPM (Red Hat Package Management)
Standardtool: rpm (ohne Auflösung Abhängigkeiten),
yumNovell (Suse)
(Link)openSUSE (Link)
Kaufversion: SLESRPM
mit YaST2-SW-Verwaltung, zypper, yumDebian
(Link)Ubuntu, Ubuntu Derivate,
Linux MintDEB (Debian Pakete)
Standardtool: dpkg (ohne Auflösung Abhängigkeiten)
APT-Tools: apt-get, apt-cache, ... , aptitudeListe ohne Anspruch auf Vollständigkeit - siehe z.B. Website Distrowatch !
- Debian Versionen
9 - Stretch (aktuelle Testingversionen: Sid)
8 - Jessie, 7 - Wheezy; 6 - Squeeze; 5 - Lenny; 4 - Etch (Charaktere aus Toy Story)
Varianten: stable, testing, unstable (und oldstable)
Versionen ab Wheezy (7.x) aktualisiert mit 7.1, 7.2, ... (statt früher 7.0.1, 7.0.2, ...)
Unterschiedliche Quellen (Web/http, FTP-Server) und Download-Techniken (Bittorrent, jigdo)
Download wöchentlicher Testing-Variante http://cdimage.debian.org/cdimage/weekly-builds/
Download aktuelle Stable Version Debian http://cdimage.debian.org/debian-cd/ - Installation von Debian 9 Stretch / 64-Bit
Wechsel-SSD und Install-Medium DVD für TN (Anm.: können die TN behalten)
Beispielhafte Trainerinstallation durch Trainer - wichtige Einstellungen bei Installation mit UEFI-Unterstützung ansprechen.
Stichpunktartiger Ablauf: (vollständige Screenshotsammlung bei Trainer verfügbar)
→ Sprache
→ Netzwerk-HW erkennen
→ Rechnername
→ Root-Passwort
→ User / User-Passwort
→ Partitionierung (gesamte Platte verwenden und LVM einrichten)
Dann bitte angebotene Mountpoints (mit LVM - Logical Volume Management) auswählen:
→ Separate/home
,/var
und/tmp
-Partitionen:
→ UEFI-Installation erzwingen? Ja
Also bitte die UEFI-Installation bestätigen: (Anm.: die TN-PCs in Raum 2.11 sind auf UEFI vorkonfiguriert und sollen nicht per Legacy-Boot starten; man müsste UEFI/BIOS Boot-Konfiguration umstellen, was wir nicht wollen!)
→ Andere CD oder DVD einlesen? Nein
→ Netzwerkspiegel verwenden? Ja
Anm.: dann werden gleich Standard-Paketquellen (Apt-Repositories) eingebunden - könnte man später auch nachholen/konfigurieren (siehe:/etc/apt/sources.list
)
→ Paketverwendungserfassung teilnehmen? Nein
→ Software (tasksel) - Standardauswahl: Debian Desktop, Druckserver, Standard-Systemwerkzeuge (1488 Pakete)
→ ..... Neustart .....
Anmerkungen:
Installation GRUB-EFI mit eigener "Efi System Partitione / ESP" in Gerät/dev/sda1
statt sonst klassisch in/dev/sda
- also MBR - Master Boot Record der Platte
LVM (Logical Volume Management); Grundinstallation aus Setup nutzen (s.o.) - Installations-Check
Software-Version:cat /etc/os-release
bzw.cat /etc/debian_version
Kernel: uname -a bzw. uname -r
OS aktuell?: mit den Apt-Tools untersuchen und System aktualisieren
Die "W-Fragen"?:whoami
,who
,w
Pfade checken:echo $PATH
(Nachfrage TN andere Umgebungsvariablen: sieheset
) - Netzwerk
Erste Netzwerkanalyse mit Linux:
IP-Konfiguration Shellaufrufe IPv4-/IPv6-Adresse
Subnetmaskip address show
(zeigt immer alle NICs)ip a s
(kurze Variante)
Tool ifconfig oft nicht mehr standardmäßig installiert:/sbin/ifconfig
Standardgateway
(bzw. Router)/sbin/route -n
hier: in Spalte Flags das G suchen - dann Spalte Routerip route show
ip r s
(kurze VarianteDNS-Server cat /etc/resolv.conf
hier: Zeile mit nameserver analysieren
aber: Datei wird von den Netzwerkkonfigurations-Diensten
Wicked (bzw. NetworkManager) manipuliert
keine manuelle Änderung gewünscht!
mitping -c 5 www.bahn.de
Funktionalität "online" gecheckt! - Softwareaktualisierung
Anpassung und Check der Konfiguration der Debian-Apt-Quellen:/etc/apt/sources.list
Übung: Auskommentieren (#) der Install-DVD, Analyse derdeb
unddeb-src
Repositories
Aktualisieren der Apt-Quellen (und des Apt-Caches):apt-get update
bzw.apt update
(moderne Toolvariante)
Software aktualisieren mit:apt-get upgrade
bzw.apt upgrade
alle installierten Pakete im System aulisten:dpkg -l
(dann ggf. mit grep filtern nach Pipe | )
mehr Infos und Aufrufe zu Paketverwaltung siehe Beitrag "Paketmanagements RPM vs. DEB" auf diesem Portal - Terminals
echte Konsolen mittels Strg + Alt + F3, ... (zurück zum Debian Gnome Desktop mit Alt + F2; hier also tty2 mit Grafik)
Standard-Konsole unter Gnome: gnome-terminal (Tipp: Taste F10 für Menü deaktivieren) - Erste Hilfe in Terminal/Konsole
Man-Pages (z.B.man rm
) oder Befehl mit --help (z.B.rm --help
),
gerne auch Hilfe zur Hilfe mitman man
Alternative:info
Pages - Tricks in Terminal/Konsole
Befehle/Verzeichnisse/Dateien mittels Tabulator komplettieren (siehe:ls TabTab
zeigt alle Programme mit ls...,
mit Cursor-Tasten Aufrufe wiederholen (durchblättern),
überlange Anzeigen nach oben blättern mittels Shift + PgUp (Seite hoch) bzw. Shift PgDown;
die Historie aller Shell-Aufrufe des Users in~/.bash_history
;
Rekursive Suche in History mittelsStrg + R
(vorwärts dann mitStrg + S
)
Löschen der Konsole mittelsStrg + L
Anfang und Ende Kommandozeile mitStrg + A
undStrg + E
Löschen der Kommandozeile von Cursor bis Anfang mitStrg + U
Kopieren und Einfügen (mittlere Maustaste) in der Konsole - Runlevel (klassischer Begriff - systemd arbeitet mit Targets - Grundlagenartikel systemd von Heise.de)
0 - Stop/Halt
1 / s / S - Single User (zu Wartungsarbeiten)
2 - Multi-User (mit und ohne Netzwerk - je nach Distribution)
3 - Multi-User und Netzwerk (klassische Serverumgebung LAMP und Co)
4 - unbenutzt
5 - Multi-User, Netzwerk, X-Server (heute mit Desktops wie KDE oder Gnome)
6 - Reboot - systemd (Reference Manual Chapter: The systemd Daemon)
init-Technik wird durch systemd-Technik ersetzt bei Beibehaltung der alten (abwärtskompatiblen) init-Skript-Techniken und Ordnerstrukturen nach SysVinit;
dadurch werden die Start-/Stoppmechanismen durch teils gleichzeitiges Abarbeiten von Aufrufen beschleunigt - siehe S- und K-Links in Runlevel-Ordnern alle mit gleicher Nummerierung (hier 50 - S50... / K50...)
Nur noch Skripte, die nicht sauber mit systemd arbeiten - oder noch nicht umgeschrieben worden sind - konnte man noch in diesen Ordnern finden!
Hinweis ab openSUSE 15.0: keine Skripte mehr in rcX-Ordnern!
"Runlevel"-Tools:runlevel
,init X
(X = S, 0, 1, 3, 5, 6) ,shutdown
,halt
,reboot
Hier mal eine ausführlichere Gegenüberstellung:
SysVinit systemd Bemerkungen Runlevel Targets Bezeichungen für gewünschte Bootumgebung /etc/inittab keine /etc/inittab (!!)
in Ordnern diverse Dateien: (z.B.)
/usr/lib/systemd/systemKonfigurationsdatei(en) runlevel
init
telinit
sysctl
chkkonfigrunlevel (wegen Kompatibilität)
init (w. K.)
telinit (w. K.)
systemctl
journalctl
systemd-* (z.B. systemd-analyze blame | plot )Tools service sshd status systemctl status sshd.service Status openSSH Server service sshd start systemctl start sshd.service Starten openSSH Server service sshd stop systemctl stop sshd.service Stoppen openSSH Server service sshd restart systemctl restart sshd.service Restarten openSSH Server service sshd reload systemctl reload sshd.service Konfiguration openSSH Server neu laden chkconfig sshd on systemctl enable sshd.service openSSH im Runlevel/Target aktivieren chkconfig sshd off systemctl disable sshd.service openSSH im Runlevel/Target deaktivieren Man. Suche in Logdateien journalctl -u sshd.service Journal für openSSH
(als root)chkconfig --list systemctl list-unit-files
systemctl list-dependencies multi-user-targetÜbersicht Dienste in Runleveln/im Target init 3 (oder)
telinit 3systemctl isolate runlevel3.target
systemctl isolate multi-user.targetin Runlevel 3 wechseln bzw.
in multi-user.targetinit 5 (oder)
telinit 5systemctl isolate runlevel5.target
systemctl isolate graphical.targetin Runlevel 5 wechseln bzw.
in graphical.target... systemctl isolate default.target in Standard-Runlevel wechseln bzw.
in default.targetinit 0 (oder)
telinit 0
shutdown -h
poweroffsystemctl isolate runlevel0.target
systemctl isolate poweroff.target
shutdown -h
poweroffRechner ausschalten init 6 (oder)
telinit 6
shutdown -r
rebootsystemctl isolate runlevel6.target
systemctl isolate reboot.target
shutdown -r
rebootRechner rebooten
schönes Linux-Wiki mit Beispielaufrufen zur systemd-Technik:
Wiki: Willkommen in Bluelupo's Wiki - Grundlegende Kommandos zu systemd
Übungen: systemctl start | stop | status mit cupsd.service - Benutzer- und Gruppenverwaltung
Tools für Benutzer- und Gruppenerstellungen / Anpassungen:useradd
,usermod
,userdel
,groupadd
,groupmod
,groupdel
Empfehlung: vorheruseradd -D
- zeigt die Defaults/Vorgaben für User) mit Home-Dir und anderen Defaultkonfigurationen.
Profitipp: die Konfiguration für Standarduserumgebung kann mit/etc/default/useradd
vom root angepasst werden!
beispielhafter 2-Zeiler für Standarduser:
#useradd -m -c "Teilnehmer 01" tn01
(Schalter -m wichtig für Home-Dir-Erstellung)
#passwd tn01
(Passwort setzen)
Jeder Benutzer kann mit Tool passwd sein eigenes Kennwort ändern. Hierfür ist das Tool /usr/sbin/passwd mit dem Set-UID-Bit konfiguriert, welches bewirkt, dass passwd mit "root"-Rechten ausgeführt wird. Mehr dazu bei den Linux-Datei-/Ordner-Berechtigungen.
Debian und verwandte Distributionen:# adduser newuser
(ein Perl-Skript, das alle gewünschten Konfigurationen vornimmt) - Übung zu SSH:
1) ssh installiert? 2) Prozesse analysieren 3) Dienste-Verwaltung 4) ssh nutzen / Firewall?
eine beispielhafte Vorgehensweise:
1) Recherche zu ssh (Paket openssh bzw. openssh-server) - ist "ssh" installiert?dpkg -l | grep ssh
(Paketmanagement und Softwareverwaltung: hier mit Deb-Tool dpkg)apt search ssh
(Paketname entweder openssh oder bei Debian: openssh-server)
Anm. zu openSUSE: Paket heißt hier openssh und beinhaltet sowohl ssh-Client also auch ssh-Server Software
2) Läuft der ssh-Dienst (sshd)?ps ax | grep sshd
(zeigt uns: Nein - da läuft kein sshd!)systemctl status ssh.service
(oder sshd.service)
3) Dienst sshd für unseren Standard-Runlevel 5 (genauer graphical.target für systemd) konfigurieren:systemctl enable sshd.service
(wieder: siehe auch Übungen der BU-Woche)
Neuer Test, ob sshd läuft? Ja!
4) Für Netzwerkzugriff (Client-Server Prinzip)
von ssh-Client (z.B. r211pc17 - 10.100.211.117)
auf ssh-Server (z.B. r211pc11 - 10.100.211.111)
Anm.: was ist hier eigentlich mit der Firewall?
Auf den ssh-Server dann mittels ssh Aufrufen verbinden:ssh username @ ip-adressse
(bzw. @ machinename - Anm.: ohne Leerzeichen um das @-Symbol)
(für namentliche Adressen linux11 benötigt man DNS oder /etc/hosts Einträge)
Gerne per SSH auch Programmaufrufe inkl. Fenstermanagement (X-Server):ssh -X ...
(erstellt ssh-Verbindung mit Fernaufruf für X-Fenster-Programme)
Anm.: bei Erstverbindung Signatur/Fingerabdruck bestätigen
ssh-Client und ssh-Server konfigurieren:
/etc/ssh/ssh_config (Client)
/etc/ssh/sshd_config (Server)
Anm.: angehängtes "d" für Daemon (Disk and Execution Monitor - gerne kurz mit dt. "Dienst / Service" merken)
ssh-Client unter Windows:
wir brauchen einen ssh-Client und am Besten gleich noch einen X-Server (für "Linux-X-Fenster")
putty (Link) - der Klassiker (die ssh-Tools als Sammlung oder einzeln; ohne X-Server (siehe cygwin)
MobaXterm (Link) - die geniale "all-in-one" Lösung als kostenlose Installation, Zip oder kostenpflichtige Enterprise-Version
gezeigt mit Windows-PC: xeyes bzw. gedit auf Windows Desktop!
Do., 27.09.18
Donnerstag, 27.09.18, 09.00 - 16.00 Uhr
- Ausführliche Rekapitulation (inkl. kleinerer Übungen) zu Tag 1
TN-Fragen zum Seminar: - Paketinfos...
Herausfinden wie und wo ein bestimmtes Paket installiert ist (siehe Paketverwaltung mit dpkg bzw. apt )
z.B.: dpkg -L mc (zeigt Dateien für Midnight Commander)
Anm.: Übung mit Installationen "Midnight Commander" (mc)
und "Visual Studio Code" (Paketname: code; Link; hier: Modifikation /etc/apt/source...) {code lang:freebasic showtitle:false lines:true hidden:false}curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install code # or code-insiders{/code}Neue Apt-List /etc/apt/sources.list.d/vscode.list für Microsoft VSCode Software
Code ist auch für rpm-basierte Distros, MacOS und Windows verfügbar - dump-Befehl vs. tar-Befehl
dump arbeitet auf Blockebene - nicht Dateiebene - siehe auch dd - disk dump
Anm.: Hinweis auf fstab; Empfehlung für Übung(en) mit tar (siehe unser Grundlagen Seminar), - xargs (Befehl erläutern)
Stichwort: verbessertes Pipelining: siehe auch tee; Beispiel zu xargs:
Übung:cut -d " " -f1 access_log | sort | uniq | xargs -n1 host
Dateidownload (nur temporär verfügbar) in Trainer-Onedrive (Link) - Fehleranalyse - sinnvolles Vorgehen bei der Fehlersuche (mit TN Meldungen "Greenbone Tool diskutiert"),
- Netzwerkanalyse (siehe Ausführungen auf diesem Portal
Übung "hosts":/etc/hosts
Einträge erstellt:
10.100.211.115 r211pc15 www.r211pc15
Technik DNS kurz erläutert
127.0.0.1 schadsoftware.com www.schadsoftware.com
Zusammenfassung Netzwerktechnik - Technische Konfigurationen
1) ifup/ifdown - die klassische Technik der Einbindung von NICs und Netzwerkumgebungen
So findet man eine grafiklose Serverinstallation vor (siehe Hoster, Cloud-Services)
Tools/Dateien:ifup
,ifdown
,ifconfig, /etc/network/interfaces , /etc/resolv.conf
2) NetworkManager
eine Red Hat Technik mit Applet (Miniprogramm für z.B. Windows Manager KDEkde5-nm-connection-editor
, Gnome und Co)
3) Wicked Service (z.B. seit openSUSE 13.2) ;wichtig: entweder / oder den NetworkManager nutzen
Tools:
siehe auch Netzwerkanalyse Tag 1:ip address show
,ip route show
,/etc/resolv.conf
ping -c 10 www.bahn.de
traceroute www.vhs-braunschweig.de
Analysewerkzeuge:ip, route, dig
,host
,nslookup
,arp
,ifconfig
(auch Konfigurationen, aber veraltet),iwconfig
(für WLAN)
Konfiguration DNS-Namenserver:/etc/resolv.conf
(natürlich auch per SW konfigurierbar: siehe NetworkManager)
manuelle Namensauflösung für Seminarnetz mit/etc/hosts
(Rechnernamen linux01, ..., linux17) - cron
Taskscheduler, Anleitung/Beispiel ; Alternative Software: anacron)
Übung:crontab -e
und allgemein an Bash-Shell-Skripte erinnert
persönliche Cron-Jobs:/var/spool/cron/crontabs/username
Systemweite Cron-Jobs:/etc/crontab
Weitere Themen: - Übung Bash (root)
Konfigurationsdatei/root/.bashrc
bearbeitet für Syntax-Highlighting und Aliase - Netfilter / iptables (nur in Kürze behandelt und dargestellt)
aktuelle Tabelle "filter" anzeigen mit: sudoiptables -L
bzw. sudoiptables -t filter -L
(sudo soll root Hinweis sein)
Filterketten leeren: sudoiptables -F
Beispielhafte (sehr einfache und grundlegende) Firewall-Skripts verteilt und kurz diskutiert!{code lang:freebasic showtitle:false lines:true hidden:false}#!/bin/bash
# Autor: Joe Brandes
# NIC definieren
INTDEV="eth0"
# Befehle für Skript ermitteln mit which
IPTABLES="$(which iptables)"
# Alles wegwerfen (Policies setzen für Chains/Ketten der Tabelle filter)
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# Ketten der Tabelle filter leeren
$IPTABLES -F
# ... Anweisungen / Regeln / ...
# ssh zulassen (als Beispiel)
$IPTABLES -A INPUT -i $INTDEV -p tcp --dport 22 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT{/code}In aktueller netfilter Technik wird mit "-m conntrack --ctstate" statt mit "-m state --state" kodiert, was die neuere Conntrack Erweiterung nutzt. Wenn die "ältere" Kodierung genutzt wird, wird automatisch die "neuere" verdrahtet!
Bereitstellung der Konfiguration für System mittels
a) Firewall Skript (kann später automatisch beim Systemstart ausgeführt werden - chmod +x nicht vergessen!)
oder aber mittels
b) iptables-persistent (bzw. netfilter-persistent) Paket/Software für die iptables
Die persistent-Lösung arbeitet mit Befehlen iptables-save und iptables-restore und Dateien /etc/iptables/rules.v4.
Beispiel: Firewall-Regeln etablieren und danniptables-save > /etc/iptables/rules.v4
in Konfiguration schreiben. - TN-Bescheinigungen, Feedback-Bögen, letzte TN-Fragen
Vielen Dank für die sehr positiven Evaluationsbögen und Ihre persönlichen Feebacks - keep on Linuxing...
Ihr Trainer Joe Brandes