Aufgaben vom Admin Grundlagen Red Hat Edition, Juli 2017 im Linuxhotel
1 Aufgabe DNS
- wir installieren uns auf dem eignen Red Hat/CentOS System einen lokalen DNS Resolver. Dieser ist ein kleiner DNS Server, welcher für Anwendungen die DNS Anfragen über das Internet beantworten kann. Hierdurch sind wir nicht mehr auf den DNS-Resolver des Linuxhotels (oder des Providers) angewiesen. Ein eigener lokaler DNS-Resolver ist auf mobilen Geräten zu empfehlen (z.B. Laptops mit Linux) und auch auf Linux-Server Systemen, welche sehr viel DNS-Anfragen stellen (z.B. Mail-Server).
- die DNS-Resolver Software heisst
unbound
, wir installieren das Paket als Benhutzer root
# sudo yum install unbound
- den Unbound Server starten
# sudo systemctl enable unbound # sudo systemctl start unbound # sudo systemctl status unbound
- Unbound horcht auf Port 53 (DNS) auf Anfragen von DNS Programmen
# sudo yum install lsof # lsof -Poni :53
- test per Befehl
dig
# dig @127.0.0.1 linuxhotel.de
- die Datei
/etc/resolv.conf
anpassen, so das der lokale Unbound Server und nicht der Linuxhotel DNS-Resolver für DNS-Anfragen benutzt wird
2 Ausgabe: SSH mit Schlüsseln
- den eigenen SSH RSA öffentlichen Schlüssel mit dem Nachbarn in der
vorderen bzw. hinteren Reihe austauschen. Hierzu den öffentlichen
Schlüssel in ein neues, leeres Verzeichnis
/home/nutzerXX/ssh-key
kopieren. - Dann in dieses Verzeichnis wechseln und dort einen kleinen
Webserver starten
sudo systemctl stop Firewalld python -m SimpleHTTPServer
- Mit dem Webbrowser auf den Webserver des Aufgaben-Partners gehen
(http://notebookXX.linuxhotel.de:8000), dort den Schlüssel
herunterladen und in die eigene Datei
~/.ssh/authorized_keys
kopieren (ggf. am Ende anfügen). - danach den Partner bitten, eine SSH-Verbindung auf den eigenen Rechner zu testen
2.1 SSH per Jumphost
- Datei
~/.ssh/config
Host jumphost Hostname jumphost.firma.de User nutzer02 Port 22 Host zielhost Hostname 10.0.0.1 User ssh-nutzer01 Port 22 ProxyCommand ssh jumphost -W %h:%p
- Buch SSH Mastery https://www.michaelwlucas.com/tools/ssh
3 Terminal Multiplexer: Screen und Tmux
4 Syslog
Facility Description auth Activity related to requesting name and password (getty, su, login) authpriv Same as auth but logged to a file that can only be read by selected users console Used to capture messages that would generally be directed to the system console cron Messages from the cron system scheduler daemon System daemon catch-all ftp Messages relating to the ftp daemon kern Kernel messages local0.local7 <Local facilities defined per site lpr Messages from the line printing system mail Messages relating to the mail system mark Pseudo event used to generate timestamps in log files news Messages relating to network news protocol (nntp) ntp Messages relating to network time protocol user Regular user processes uucp UUCP subsystem
- Severity
emerg Emergency condition, such as an imminent system crash, usually broadcast to all users alert Condition that should be corrected immediately, such as a corrupted system database crit Critical condition, such as a hardware error err Ordinary error warning Warning notice Condition that is not an error, but possibly should be handled in a special way info Informational message debug Messages that are used when debugging programs none Pseudo level used to specify not to log messages.
4.1 Aufgabe:
- Erstelle eine Syslog Regel in der Datei
/etc/rsyslog.conf
welche alle Nachrichten der Kategorie (Facility)local3
an den Rechner notebook02.linuxhotel.de sendet (per UDP an den Port 514) - den Dienst rsyslog neu starten
systemctl restart rsyslog systemctl status rsyslog
- die man Page zum Programm
logger
lesen, dann mit diesem Programm eine oder mehrere Logmeldungen senden (Severity "info" und Facility "local3"). Diese Meldungen werden dann auf dem Bildschirm des Trainers sichtbar
4.1.1 Lösung:
- Eintrag in der
rsyslog.conf
local3.info @notebook02.linuxhotel.de
logger -p local3.info <text>
5 Systemwiederherstellung
5.1 Beschreibung der Aufgabe
- wir arbeiten in 2er Gruppen. Ein Schulungs-Notebook wird das Backup speichern. Der andere Notebook wird gesichert, gelöscht und das System danach wieder hergestellt.
- "XX" jeweils durch die Schulungsnummer des Backup-Notebooks ersetzen
- "YY" jeweils durch die Schulungsnummer des Sicherungs-Notebooks ersetzen
5.2 Platz für die Backup-Daten schaffen
- Vorbereitungen auf dem Ziel-Systems für das Backup: wir schaffen Platz für die Backup-Daten:
lvcreate --size 10G --name backup centos_notebookXX mkfs.xfs /dev/mapper/centos_notebookXX-backup mkdir /backup mount /dev/mapper/centos_notebookXX-backup /backup df -Th # <-- es sollten auf dem Mount-Point /backup # <-- 10 Gb freier Plattenplatz frei sein chown nutzerXX /backup # <-- NutzerXX soll in das Verzeichnis schreiben
5.3 auf dem Sicherungsnotebook
- prüfen, das SSH per Schlüssel (mit Passphrase, aber ohne Login-Passwort) vom Sicherungs-Notebook (YY) zum Backup-Notebook (XX) funktioniert
- die SSH-Schlüssel in das SSH-Agent-Programm laden und dann SSH-Verbindung testen
notebookYY$ ssh-add notebookYY$ ssh-add -l # <-- Schlüssel sollte hier aufgelistet werden notebookYY$ ssh nutzerXX@notebookXX # <-- Test ob Anmedung am Backup-System # funktioniert notebookXX$ exit
5.4 auf dem Sicherungsnotebook - wichtige Systeminformationen sichern
es wird gesichert:
- Partitionierungs-Information (parted)
- Information der Physical Volumes (PV)
- Information der Volume Groups (VG)
- Information der Logischen Volumes (LV)
- die fstab mit den Informationen, welche Speichermedien gemounten werden
notebookYY# mkdir -p /root/sicherung/ notebookYY# cd /root/sicherung notebookYY# parted /dev/sda print > sicherung.parted notebookYY# pvdisplay > sicherung.pvdisplay notebookYY# vgdisplay > sicherung.vgdisplay notebookYY# lvdisplay > sicherung.lvdisplay notebookYY# cp /etc/fstab sicherung.fstab
5.5 Datensicherung vom Sicherungsnotebook auf das Backup-Notebook
- es werden die Dateisysteme
/
und/boot
gesichert, ohne weitere angehangende Dateisysteme wie/proc
,/dev
oder/sys
!
nutzerYY$ sudo mkdir /mnt/system nutzerYY$ sudo mount --bind / /mnt/system nutzerYY$ sudo mount --bind /boot /mnt/system/boot nutzerYY@notebookYY$ sudo tar cvfz - /mnt/system | \ ssh nutzerXX@notebookXX "cat > /backup/notebookYY.tar.gz"
- prüfen, das ungefähr die gleiche Anzahl von Dateien in der Backup-Datei gespeichert wurden, wie auf dem Quellsystem liegen:
- auf dem Backup-Notebook
notebookXX$ tar tvfz /backup/ntebookYY.tar.gz | wc -l
- auf dem Sicherungs-Notebook
notebookYY$ ls -R /mnt/system | wc -l
- die Zahlen differieren um ca. 10tsd, dieses liegt an der
unterschiedlichen Ausgabe von Links im Befehl
ls
undtar
5.6 Festplatte löschen / Daten zerstören
(ACHTUNG!!!! ERST NACH ERFOLGREICHER DATENSICHERUNG!!!)
notebookYY# dd bs=1G < /dev/urandom > /dev/sda
- nach ca. 5 Minuten abbrechen …
rm -rf /
5.7 Sicherungsnotebook neu booten
- der Rechner sollte nicht mehr starten
5.8 Sicherungsnotebook über Netzwerk neu starten
- Bootvorgang im BIOS mit F12 abbrechen, im Boot-Menue die
Netzwerkkarte auswählen, das Linux-Abbild "centos7iso"
starten. Beim Start des grafischen
Installers mit STRG+ALT-F1 auf die erste Text-Konsole wechseln. Dort
läuft ein
tmux
mit einer Shell. Um die Schrift ein wenig grösser zu machen:
# setfont sun12x22
- Deutsche Tastaturbelegung einstellen
localectl set-keymap de
5.9 Sicherungsinformationen auf dem Backup-Notebook auspacken
- auf NotebookXX die Sicherungsinformationen auspacken
notebookxXX$ tar xvfz /backup/notebookYY.tar.gz \ mnt/system/root/sicherung
5.10 auf dem Sicherungsnotebook (wiederherstellung)
- aus den Informationen aus den Dateien die Partitionstabelle, PVs VGs und LVs neu erstellen
parted /dev/sda mklabel parted /dev/sda mkpart ## <- je pro Partition
- PVs neu erstellen (pvcreate)
pvcreate -ff /dev/sda3
- VGs neu erstellen (vgcreate)
vgcreate centos_notebook18 /dev/sda3
- LVs neu erstellen (lvcreate)
lvcreate --size 16GB --name root centos_notebookXX lvcreate --size 1000.00MB --name swap centos_notebookXX
- Dateisysteme neu erstellen
mkfs.xfs /dev/mapper/centos_notebookXX-root mkfs.ext3 /dev/sda1
- Swap-Space einrichten (man mkswap)
mkswap /dev/centos_notebookXX/swap
- Dateisysteme einhängen (nach /mnt/system)
mkdir /mnt/system mount /dev/centos_notebookXX/root /mnt/system mkdir /mnt/system/boot mount /dev/sda1 /mnt/system/boot
5.11 Zurücksichern
- auf NotebookYY fehlen die SSH-Schlüssel, daher kann sich NotebookYY nicht per Schlüssel an NotebookXX anmelden. Daher schalten wir auf NotebookXX die Passwort-Anmeldung im SSH wieder an
notebookXX# vi /etc/ssh/sshd_config --- PasswordAuthentication yes ChallengeResponseAuthentication yes --- notebookXX# systemctl restart sshd
- Rücksicherung vom NotebookYY aus
notebookYY# ssh nutzerXX@notebookXX "cat /backup/notebookYY.tar.gz" | \ tar -C / -xvzf -
- per "chroot" in das Backup-Verzeichnis wechseln
notebookYY# mount --rbind /dev /mnt/system/dev notebookYY# mount --bind /proc /mnt/system/proc notebookYY# mount --bind /sys /mnt/system/sys notebookYY# chroot /mnt/system
- Bootmanager (Grub2) neu installieren auf der ersten Platte
notebookYY# grub2-install /dev/sda
- Grub2 Bootmenue neu schreiben
notebookYY# grub2-mkconfig -o /boot/grub2/grub.cfg
- chroot verlassen und den Rechner neu starten (Daumen drücken!!)
notebookYY# exit notebookYY# reboot
6 Gründe, warum der Rechner nicht erfolgreich startet
- es ist ein weiteres logical Volume in der
/ets/fstab
eingetragen, welches nicht existiert. Lösung: LV anlegen, oder in der fstab auskommentieren - die Partition
/dev/sda1
wird in der/etc/fstab
per UUID referenziert. Nach einer Neu-Partitionierung hat die Partition eine neue UUID. Lösung: neue UUID perblkid
anzeigen lassen und in die/etc/fstab
eintragen, oder den Gerätepfad/dev/sda1
anstatt der UUID eintragen - die Partition
/dev/sda1
für/boot
ist mit dem Dateisystemext3
formatiert, in der/etc/fstab
ist jedoch als Dateisystemxfs
angegeben. Lösung: das Dateisystem in der/etc/fstab
anpassen