Compliance Skripte

Aus Xinux Wiki
Version vom 6. November 2025, 20:27 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Kleine Compliance-Checks (kopierbar, Bash)= * Hinweis: Die Skripte sind bewusst klein gehalten und prüfen grundlegende Compliance-Aspekte auf Debian/Ubuntu-…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Kleine Compliance-Checks (kopierbar, Bash)

  • Hinweis: Die Skripte sind bewusst klein gehalten und prüfen grundlegende Compliance-Aspekte auf Debian/Ubuntu-ähnlichen Systemen. Anpassungen für andere Distros möglich. Nur in autorisierten Umgebungen ausführen.

1) check-sshd-config.sh

  • Zweck: Prüft wichtige SSHD-Einstellungen (PermitRootLogin, PasswordAuthentication, Protocol).
  • Nutzung: ./check-sshd-config.sh /etc/ssh/sshd_config
  1. !/bin/bash

CONF="${1:-/etc/ssh/sshd_config}" if ! -r "$CONF" ; then echo "Konfig nicht lesbar: $CONF" >&2; exit 2; fi grep -Ei '^\s*PermitRootLogin' "$CONF" || echo "PermitRootLogin not set (default may allow root)" grep -Ei '^\s*PasswordAuthentication' "$CONF" || echo "PasswordAuthentication not set" grep -Ei '^\s*Protocol' "$CONF" || echo "Protocol not set (modern SSH uses Protocol 2)" echo "Fertig: $CONF geprüft"

2) check-password-policy.sh

  • Zweck: Prüft, ob pam_pwquality/pam_cracklib präsent ist (Basis-Check).
  • Nutzung: ./check-password-policy.sh
  1. !/bin/bash

if grep -E 'pam_pwquality|pam_cracklib' /etc/pam.d/common-password >/dev/null 2>&1; then

 echo "Password policy module vorhanden in /etc/pam.d/common-password"
 grep -E 'minlen|required|dcredit|ucredit|ocredit|lcredit' /etc/pam.d/common-password || echo "Keine feingranulare Regeln sichtbar"

else

 echo "kein pam_pwquality/pam_cracklib in /etc/pam.d/common-password gefunden"

fi

3) check-auditd-running.sh

  • Zweck: Prüft, ob auditd läuft und ob Audit-Log vorhanden ist.
  • Nutzung: ./check-auditd-running.sh
  1. !/bin/bash

if command -v systemctl >/dev/null 2>&1; then

 if systemctl is-active --quiet auditd; then
   echo "auditd läuft"
 else
   echo "auditd nicht aktiv"
 fi

else

 pgrep -x auditd >/dev/null && echo "auditd läuft" || echo "auditd nicht gefunden"

fi if -f /var/log/audit/audit.log ; then

 echo "Audit-Log vorhanden: /var/log/audit/audit.log"

else

 echo "Kein Audit-Log unter /var/log/audit/audit.log"

fi

4) check-firewall-basic.sh

  • Zweck: Prüft, ob UFW aktiv ist oder nftables Tabellen vorhanden sind.
  • Nutzung: ./check-firewall-basic.sh
  1. !/bin/bash

if command -v ufw >/dev/null 2>&1; then

 if ufw status | grep -iq active; then
   echo "ufw aktiv"
 else
   echo "ufw nicht aktiv"
 fi

fi if command -v nft >/dev/null 2>&1; then

 if nft list tables 2>/dev/null | grep -q .; then
   echo "nftables Tabellen vorhanden"
 else
   echo "keine nftables Tabellen"
 fi

fi

5) check-unused-services.sh

  • Zweck: Listet systemd-Services, die installiert aber disabled sind (Basis-Check für unnötige Dienste).
  • Nutzung: ./check-unused-services.sh
  1. !/bin/bash

if ! command -v systemctl >/dev/null 2>&1; then echo "Kein systemctl vorhanden"; exit 2; fi echo "Installed services (disabled):" systemctl list-unit-files --type=service | awk '$2 ~ /disabled|static/ {print $1" "$2}' | sed -n '1,200p'

6) check-package-updates-apt.sh

  • Zweck: Zeigt, ob Updates verfügbar sind (APT-basiert, nur Lesend).
  • Nutzung: ./check-package-updates-apt.sh
  1. !/bin/bash

if ! command -v apt-get >/dev/null 2>&1; then echo "Kein apt auf diesem System"; exit 2; fi sudo apt-get update -qq OUT=$(apt list --upgradable 2>/dev/null) if echo "$OUT" | grep -q upgradable; then

 echo "Updates verfügbar:"
 echo "$OUT" | sed -n '1,200p'

else

 echo "Keine Updates verfügbar"

fi

7) check-sudoers-no-tty.sh

  • Zweck: Prüft, ob sudoers NOPASSWD oder !requiretty (Basis-Checks).
  • Nutzung: ./check-sudoers-no-tty.sh
  1. !/bin/bash

if -r /etc/sudoers ; then

 grep -E 'NOPASSWD|!requiretty' /etc/sudoers && echo "Warnung: NOPASSWD oder !requiretty in /etc/sudoers" || echo "Keine NOPASSWD/!requiretty Einträge in /etc/sudoers"

else

 echo "/etc/sudoers nicht lesbar"

fi

Wie abgeben / verwenden

  • Mach die gewünschten Skripte ausführbar:

chmod +x check-*.sh

  • Führe lokal aus; Beispiel:

./check-sshd-config.sh

  • Ziel: schnelle, kleine Prüfungen; du kannst sie als Aufgaben an Teilnehmende geben (Inspect/Explain outputs) oder als Starter-Scripts für ein größeres Audit nutzen.

Anpassungen

  • Sag mir welche Checks du zusätzlich brauchst (z. B. CIS-Benchmarks, file integrity, kernel-params, disk-enc), dann erweitere ich den Block sofort — wieder als einzelner kopierbarer MediaWiki-Block.