IT security, FreeBSD, Linux, mail server hardening, post-quantum crypto, DNS, retro computing & hands-on hardware hacks. Privater Tech-Blog seit 2003.

Schlagwort: Sysadmin (Seite 6 von 10)

Western Digital Scorpio Black WDC WD7500BPKT-00PK4T0

Mein Notebook bietet glücklicherweise die Möglichkeit zwei Festplatten zu betreiben. Eine Platte ist eine SSD mit knapp 120GB für das System. Die andere habe ich heute gegen eine Western Digital Scorpio Black mit 750GB ausgetauscht. Hier liegt nun mein „home“.

Ich habe mich beim anlegen der Partitionen dagegen entschieden noch Platz für die Windows Spielepartition zu lassen. Ich habe einfach in den vergangenen Monate kaum noch Zeit zum Zocken gefunden. Irgendwas hatte einfach immer eine höhere Priorität. Nun ist also meine Homedir um 200GB größer und natürlich ganz brav mit luks verschlüsselt. Festplattenverschlüssellung mit Linux wwwwwööööööööööhhhhhhhhyyyyyyy.

In diesem Sinne… Gute Nacht!

luks-crypto-home Screenshot der Passsatz eingabe.

Fragen? Einfach melden.

TRIM für SSDs und Flash-Speicher unter Linux aktivieren

Was macht TRIM?

Wenn eine Datei gelöscht wird, entfernt das Dateisystem nur den Eintrag aus seinem Inhaltsverzeichnis. Die Speicherblöcke werden als überschreibbar markiert — aber der Datenträger selbst erfährt davon nichts. Bei klassischen Festplatten ist das egal. Bei Flash-Speicher (SSDs, USB-Sticks, Speicherkarten) wird es zum Problem.

Flash-Speicher verteilt Schreibvorgänge gleichmäßig über alle Zellen — das nennt sich Wear Leveling und verlängert die Lebensdauer. Dafür muss der Controller aber wissen, welche Blöcke frei sind. Ohne diese Information kann er irgendwann nur noch den kleinen Reservebereich nutzen und wird spürbar langsam. Genau hier kommt TRIM ins Spiel: Es teilt dem Datenträger mit, welche Blöcke nicht mehr gebraucht werden.

Methode 1: fstrim (manuell oder per Cronjob)

  • Informiert den Datenträger nur zum Zeitpunkt der Ausführung
  • Funktioniert ab Kernel 2.6.33
  • Lässt sich einfach per Cronjob automatisieren

Einmalig ausführen:

fstrim -v /

Täglich per Cronjob — ein Script unter /etc/cron.daily/hdd-trim anlegen:

#!/bin/bash
echo "Gestartet am: $(date)" >> /var/log/hdd-trim.log
fstrim -v / >> /var/log/hdd-trim.log
chmod +x /etc/cron.daily/hdd-trim

Die meisten Linux-Distributionen bringen mittlerweile einen systemd-Timer fstrim.timer mit, der wöchentlich TRIM ausführt. Ob er aktiv ist: systemctl status fstrim.timer

Methode 2: discard (Echtzeit-TRIM per fstab)

  • Informiert den Datenträger in Echtzeit bei jedem Löschvorgang
  • Erzeugt minimal mehr I/O als periodisches fstrim
  • Bei modernen SSDs und Kerneln problemlos nutzbar

In der /etc/fstab die Option discard zu den Mount-Optionen hinzufügen:

/dev/sda1  /  ext4  noatime,errors=remount-ro,discard  0  1

Device, Mountpunkt und Dateisystem natürlich an das eigene Setup anpassen.

Welche Methode?

Für die meisten Setups reicht der wöchentliche fstrim.timer — das ist heute die empfohlene Methode. discard in der fstab ist sinnvoll, wenn der Datenträger permanent voll ist und sofort von freigegebenen Blöcken profitieren soll. Für ZFS gibt es eine eigene TRIM-Konfiguration — siehe TRIM im ZFS-Pool aktivieren.

Achtung: TRIM sagt dem Datenträger, dass er Blöcke überschreiben darf. Wenn hier etwas schiefgeht, sind Daten weg. Vorher prüfen, ob Kernel, Dateisystem und SSD-Firmware TRIM korrekt unterstützen — und ein Backup haben.

Siehe auch: TRIM für SSDs im ZFS-Pool

Fragen? Einfach melden.

Citrix XenServer Kernel Module automatisch beim Booten starten

Veraltet: Citrix XenServer wird seit 2024 nicht mehr in dieser Form angeboten. Alternativen: Proxmox VE oder XCP-ng.

Möchte man bei seinem Citrix Xen Server bestimmte Kernelmodule automatisch beim Booten laden, hilft folgendes.

Einfach unter /etc/sysconfig/modules/ ein passendes Konfigurationsfile für das Module anlegen und es ausführbar machen. Ich habe hier ein Beispiel für die IPMI Module:

$ echo "modprobe ipmi_si" > /etc/sysconfig/modules/ipmi_si.modules
$ echo "modprobe ipmi_devintf" > /etc/sysconfig/modules/ipmi_devintf.modules
$ chmod +x /etc/sysconfig/modules/ipmi_si.modules
$ chmod +x /etc/sysconfig/modules/ipmi_devintf.modules

 Schon werden die beiden Module ipmi_si und ipmi_devintf beim Boot des Servers geladen!

Siehe auch: Citrix XenServer Updates manuell über Bash installieren, Citrix XenServer: VM fährt nicht herunter – Force Shutdown erzwingen

IPv6 – Neighbor Discovery – Openindiana – Solaris 11 – Opensolaris

Veraltet: Dieser Beitrag bezieht sich auf IPv6 Neighbor Discovery unter Solaris/OpenIndiana. Das Konzept (NDP statt ARP) gilt weiterhin, die gezeigten Befehle sind aber Solaris-spezifisch. Unter Linux: ip -6 neigh show.

Damit IPv4 im Ethernet funktioniert braucht man das ARP (Address Resolution Protocol) als Unterbau. Denn sonst würden die IPv4 Pakete ja ihren Weg nicht zur richtigen Netzwerkkarte finden. ARP und IPv4 sind dabei völlig unabhängige Protokolle, sie arbeiten nur seit Jahrzenhten Hand in Hand. Das vergessen viele schnell.

Möchte man also nun herausfinden welche MAC Adresse das System (im gleichen Ethernet-Netzwerk) hat, mit welchem man sich gerade unterhält… Ja, dann bemüht man das ARP.

Unter Linux:

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
errorgrab.kernel-error.  ether   00:ff:c9:05:01:c7   C                     enp2s0
wurstsuppe.kernel-error. ether   50:ff:5d:85:73:48   C                     enp2s0

Unter Openindiana/Solaris 11:

$ arp -a
Net to Media Table: IPv4
Device   IP Address               Mask      Flags      Phys Addr
------ -------------------- --------------- -------- ---------------
rge0   router.kernel-error      255.255.255.255          00:ff:42:72:2b:a6
rge0   192.168.1.31         255.255.255.255          00:ff:b0:ae:0b:eb
rge0   sebastian-solaris.kernel-error 255.255.255.255 SPLA     80:ff:73:4a:38:c7
rge0   all-routers.mcast.net 255.255.255.255 S        01:ff:5e:00:00:02

Bei IPv6 schaut es nun etwas anders aus. Man könnte sagen, hier wurde ARP direkt mit in IPv6 integriert. Es findet sich im Neighbor Discovery wieder. Möchte man hier seine „Nachbarn“ sehen klappt es so:

Unter Linux:

$ ip -6 neigh show
fe80::1 dev enp2s0 lladdr 50:ff:5d:85:73:48 router STALE
fe80::2ff:c9ff:fe05:1c7 dev enp2s0 lladdr 00:ff:c9:05:01:c7 router REACHABLE

Unter Openindiana/Solaris 11:

$ netstat -pf inet6

Net to Media Table: IPv6
 If   Physical Address    Type      State      Destination/Mask
----- -----------------  ------- ------------ ---------------------------
rge0  33:33:ff:00:00:01  other   REACHABLE    ff02::1:ff00:1             
rge0  00:ff:42:72:2b:a6  dynamic REACHABLE    router.kernel-error
rge0  33:33:00:00:00:01  other   REACHABLE    ff02::1                    
rge0  33:33:00:01:00:02  other   REACHABLE    ff02::1:2                  
rge0  33:33:ff:00:00:06  other   REACHABLE    ff02::1:ff00:6             
rge0  33:33:ff:10:98:82  other   REACHABLE    ff02::1:ff10:9882          
rge0  33:33:ff:ad:7a:dd  other   REACHABLE    ff02::1:ffad:7add          
rge0  33:33:ff:00:00:11  other   REACHABLE    ff02::1:ff00:11            
rge0  33:33:00:00:00:16  other   REACHABLE    ff02::16                   
rge0  46:ff:91:30:98:3d  dynamic REACHABLE    2001:7d8:8001:0:ffff:bdb9:6810:9882
rge0  80:ff:73:4a:38:c7  local   REACHABLE    sebastian-solaris.kernel-error
rge0  80:ff:73:4a:38:c7  local   REACHABLE    fe80::ffff:73ff:fe4a:38c7  
rge0  00:ff:42:72:2b:a6  dynamic REACHABLE    fe80::fff:42ff:fe72:2ba6   
rge0  33:33:ff:4a:38:c7  other   REACHABLE    ff02::1:ff4a:38c7

Früher war es mit dem ARP „einfacher“. Zumindest musste man sich nur einen Befehl merken und dann halt die für das jeweilige Betriebsystem nötigen Schalter herausfinden. Mit IPv6 ist es nun mit in die jeweiligen IP-Tools gewandert. Ich halte es für sauberer auch wenn man sich nun nicht mehr mit den Befehlt „arp“ behelfen kann.

BSD und ihre Ableger nutzen „ndp„.
Bei Linux verschwindet alles in den iproute2-Tools mit dem Befehl: „ip“ (ifconfig, route, usw. usw…. alles im Tool ip)
Microsoft wirft alles in „netsh„.
Unixbasierendes hält sich ans gute alte „netstat„.

Also bis dahin…

Openindiana / Solaris 11 MAC Adresse der Netzwerkkarte anzeigen

Veraltet: Solaris und OpenIndiana werden kaum noch eingesetzt. Unter Linux: ip link show, unter FreeBSD: ifconfig.

Es ändert sich im Laufe der Zeit ja mal immer wieder etwas. So auch der Weg mit Netzwerkkarten umzugehen unter Solaris.
Wer also gerade versucht die MAC Adresse seiner lokalen Netzwerkkarte / NIC herauszufinden, dem wird folgender Command helfen:

$ pfexec dladm show-phys -m
LINK         SLOT     ADDRESS            INUSE CLIENT
rge0         primary  80:ee:73:4a:38:c7  yes  rge0

Citrix XenServer: VM fährt nicht herunter – Force Shutdown erzwingen

Veraltet: Citrix XenServer wird seit 2024 nicht mehr in dieser Form angeboten. Alternativen: Proxmox VE oder XCP-ng.

Hin und wieder bleibt beim Herunterfahren eine VM irgendwie hängen. Dann hat man über das XenCenter keine Möglichkeit mehr diese VM zum Leben zu erwecken. Damit man nun nicht den kompletten VM-Host dom0 neustarten muss, kann man erst folgenden Weg probieren.

Als erstes kann man einen force shutdown der vm probieren:

$ xe vm-shutdown –force vm=“VM-NAME“

Wenn es nicht hilft, kann man versuchen die “wartenden” pending Prozesse am XenServer zu killen:

$ xe task-list

 Dann die Prozesse abbrechen welche den Shutdown zu verhindern scheinen:

$ xe task-cancel uuid=“TASK-UUID“

 Bringt das alles nichts kann man als letztes noch folgendes probieren:

$ xe-toolstack-restart

 Nun kann man noch einmal einen force shutdown probieren. Klappt es auch nicht, muss man wohl doch den VM-Host durchstarten!

Siehe auch: Citrix XenServer Updates manuell über Bash installieren, Citrix XenServer Kernel Module automatisch beim Booten starten

Citrix XenServer local storage größer >2TB

Veraltet: Citrix XenServer wird seit 2024 nicht mehr in dieser Form angeboten. Die Storage-Konfiguration hat sich grundlegend geändert. Alternativen: Proxmox VE oder XCP-ng.

Hat man in seinem Citrix XenServer eine Festplatte welche größer ist als 2 Terabyte, egal ob logisch durch RAID oder physikalisch als echte Hardware. So wird diese vom XenServer nicht vollständig genutzt. Das liegt daran, dass der XenServer noch aufs alte Pferd MBR setzt. Der eingesetzte Kernel kann aber bereits mit GUID Partition Table (GPT) partitionierten Speichern umgehen. Alleine die mitgelieferten Boardmittel (fdisk….) können es auch nicht. Zusammengefasst bedeutet es: –    Ich kann am Citrix XenServer einen lokalen Speicher der größer ist als 2TB einbinden und benutzen. –    Ich kann diesen Speicher aber nicht anlegen 🙁 Damit wäre also nur das Problem des Anlegens zu lösen! Voraussetzung ist dass es sich dabei um eine weitere HDD handelt, also nicht die Platte auf welcher das eigentliche Hostsystem Dom0 installiert wurde. Diesen weitern Speicher schraubt man nun also in seinen XenServer. Nun bootet man diesen mit der Hilfe von Parted Magic. Dieses Livesystem ist darauf ausgelegt mit Platten und Partitionen umzugehen. Daher ist es selbst kein Problem auf ein bereits eingerichtetes Linux Sofwareraid zuzugreifen und es bringt das Programm gparted mit. Gparted wird nun die Hauptarbeit übernehmen, denn es ist schon länger in der Lage GUID Partition Tables (GPT) anzulegen.   Festhalten, es geht los… –    gparted öffnen –    den >2TB Datenspeicher auswählen Cirtix Xen Server local Storage lokaler Speicher bigger 2TB groesser 2TB GUID GPT –    über den Menüpunkt Device den Unterpunkt Create Partition Table auswählen  Cirtix Xen Server local Storage lokaler Speicher bigger 2TB groesser 2TB GUID GPT –    unter Advanced den Type der neuen Partitionstabelle auf gpt setzten und (Warnung beachten) anwenden –    den neuen unallocated Speicher markieren Cirtix Xen Server local Storage lokaler Speicher bigger 2TB groesser 2TB GUID GPT –    über den Menüpunkt Partition den Unterpunkt New auswählen Cirtix Xen Server local Storage lokaler Speicher bigger 2TB groesser 2TB GUID GPT –    nun den File system Type auf lvm2 pv setzten und Hinzufügen Cirtix Xen Server local Storage lokaler Speicher bigger 2TB groesser 2TB GUID GPT –    Abschließend noch diese Änderungen anwenden über den Button Apply Jetzt haben wir eine GUID Partitionstabelle auf der großen Festplatte mit einer Partition größer 2TB und diese bereits mit dem Dateisystem Logical Volume Manager (LVM). Nun können wir wieder den Citrix XenServer booten und ihn mit seinem neuen 3TB oder 4TB oder was weiß ich Storage bekannt machen. Nachdem der XenServer hochgefahren ist melden wir uns als Root auf der Shell an. Um den Speicher nutzbar zu machen genügen nun zwei kleine Befehle:
$ pvcreate /dev/sda1
$ xe sr-create type=lvm content-type=user device-config:device=/dev/sda1 name-label="4TB-SPEICHER"
 Ab jetzt ist der Store wie jeder andere nutzbar.
* U-P-D-A-T-E * Zusammen mit gdisk lassen sich nun auch GPT Partitionen anlegen.

Siehe auch: Citrix XenServer Updates manuell über Bash installieren, XenServer mit Nagios überwachen, XenServer Linux Softwareraid

Windows Server Backup mit Nagios überwachen

Die Windows Server-Sicherung (ab Server 2008) lässt sich über die Management Console bequem einsehen. Aber wer schaut da täglich rein? Ich wollte das über Nagios überwachen und habe dafür ein PowerShell-Script geschrieben.

Die Idee

Auf den zu überwachenden Systemen ist jeweils eine Vollsicherung (Bare Metal) eingerichtet, die ein- bis mehrmals am Tag startet. Mich interessiert nur eine Frage: Wann war die letzte erfolgreiche Sicherung, und ist diese älter als drei Tage? Warum, weshalb, wo, wie, was — ist mir im ersten Schritt egal. Ich will nur informiert sein, wenn es keine aktuelle Datensicherung gibt.

Windows Server-Sicherung in der Management Console

Das Script

Das PowerShell-SnapIn Windows.ServerBackup liefert über Get-WBSummary eine Zusammenfassung der Sicherungen. Unter LastSuccessfulBackupTime steht das Datum der letzten erfolgreichen Sicherung.

Das Script vergleicht dieses Datum mit dem aktuellen: Ist die Sicherung von heute oder gestern, gibt es OK zurück. Bei zwei bis drei Tagen eine Warnung. Älter als drei Tage bedeutet CRITICAL. Zusätzlich erkennt es, ob die Befehlszeilentools nicht installiert sind und ob eine Sicherung über einen Tageswechsel hinweg noch läuft.

Download: backuptest.ps1 (aktuelle Version 0.3)

Voraussetzungen

Über den Server-Manager muss unter Windows Server-Sicherungsfeatures das Feature Befehlszeilentools installiert sein. Ohne das SnapIn gibt es beim Start des Scripts eine Fehlermeldung. Außerdem muss die Execution Policy angepasst werden:

Set-ExecutionPolicy RemoteSigned
Server-Manager: Windows Server-Sicherungsfeatures mit Befehlszeilentools

NSClient++ einrichten

Das Script nach C:\scripte\ legen. Im NSClient++ die NRPE-Konfiguration erweitern. Der Aufruf eines PowerShell-Scripts über NSClient++ sieht beim ersten Hinschauen etwas seltsam aus:

[NRPE Handlers]
command[check_windowsbackup]=cmd /c echo C:\scripte\backuptest.ps1 | powershell.exe -command -

Dazu muss NSClient++ natürlich als NRPE-Server konfiguriert sein:

[modules]
NRPEListener.dll
NRPEClient.dll

[NRPE]
port=5666
command_timeout=120
allowed_hosts=1.2.3.4
socket_timeout=120

Testen

Nach einem Neustart des NSClient++-Dienstes kann man vom Nagios-System aus testen:

$ check_nrpe -H 4.3.2.1 -p 5666 -t 120 -c check_windowsbackup
OK: Backup von gestern
Nagios-Webinterface: Windows Server Backup Check zeigt OK

Die restliche Einrichtung in Nagios (Service, Host, Command) ist Standard.

Fragen? Einfach melden.

MOTDstat

Habe ich überhaupt schon von meinem neusten Lieblingsgimmik berichtet? Nein? Nö nö nö….. Es nennt sich MOTDstat und „ersetzt“ die bekannte Message of the Day.

Im Grunde ist es ein kleines bash Script welches einem ausgewählte Systeminformationen beim Login anzeigt. Es hat sogar die Möglichkeit einem im Fall der Fälle eine E-Mail zu schicken, dieses überlasse ich dann aber doch lieber Nagios.

Nach dem Download installiert sich alles fast von allein.

$ make install

Damit alles regelmässig aktualisiert wird folgt man am besten dem Vorschlag der README und wird den folgenden Aufruf in seine crontab.

$ crontab -e
*/5 * * * * root /usr/bin/motdstat --generate 1>/dev/null 2>/dev/null

Damit wird der Zustand alle 5 Minuten aktualisiert und alle Infos zum CronJob landen im Nirwana!

Bei einem motdstat -g schiebt MOTDstat die eigentliche Datei /etc/motd in /etc/motd.ori und wirft den generierten Systemzustand in /etc/motd. Bei einem neuen Login wird diese nun gefolgt von der /etc/motd.ori augegeben. Testen lässt sich dieses mit einem:

$ motdstat -s

Einstellungen zum Script lassen sich unter /etc/motdstat vorneheme. Da ich meine Message of the Day so oder so immer anfasse um dort möglichst auffällig den Systemnamen erscheinen zu lassen (ich komme sonst mal schnell durcheinander), passt es ganz gut dazu. Es kann natürlich keine echte Überwachung ersetzten,ist aus meiner Sicht denn noch ein ganz nettes „Programm“.

So long…..

 

 

Fragen? Einfach melden.

Linux und die UUID

Ich bin inzwischen ja von ZFS schon sehr verwöhnt… Vor allem was so Dinge angeht sich Kombinationen aus Laufwerk, Partition, Mountpunkt und SATA-Port zu merken. Man denkt einfach nicht mehr darüber nach 🙁 Heute bin ich damit mal wieder auf die Nase gefallen. Ok ok…. Natürlich kann man zur Konfiguration auch einfach die UUID nutzen, diese ist dann eindeutig und man kann ähnlich wie bei ZFS die ganzen Zusammenhänge „vergessen“….. Ich finde die UUID-Geschichte aber anstrengend. Diese viel zu lange Nummer zu tippen geht überhaupt nicht, sich diese erst in Konfigurationsfiles zu schieben und dann…. bäääähhhh. Dann kann ich mir die Nummer auch nur wieder schlecht merken.

Wie auch immer. Der Ansatz ist gut und wenn es Konfiguriert ist, geht es ja auch. Um mir nicht noch ein Komando mehr merken zu müssen friemel ich die Zuordnung UUID ==> Devicename immer wie folgt heraus:

ls -Al /dev/disk/by-uuid/
insgesamt 0
lrwxrwxrwx 1 root root 10 17. Sep 11:26 0e6894c5-1dfd-4fcb-8cc4-12290c28c3dc -> ../../sdb3
lrwxrwxrwx 1 root root 10 17. Sep 11:26 11cc385c-7fcc-4b87-88b9-ebe05af67df8 -> ../../sda1
lrwxrwxrwx 1 root root 10 17. Sep 11:26 2fc86b49-ad36-4755-bd72-aba0ec54f2e4 -> ../../sdb2
lrwxrwxrwx 1 root root 10 17. Sep 11:26 ca266482-0623-43a1-8741-70f8de485023 -> ../../sdb1

Jemand eine bessere Idee? In diesem Sinne….

Fragen? Einfach melden.

« Ältere Beiträge Neuere Beiträge »

© 2026 -=Kernel-Error=-RSS

Theme von Anders NorénHoch ↑