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


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 und tar

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 per blkid 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 Dateisystem ext3 formatiert, in der /etc/fstab ist jedoch als Dateisystem xfs angegeben. Lösung: das Dateisystem in der /etc/fstab anpassen