Compliance Skripte: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
=Kleine Compliance-Checks (kopierbar, Bash)=
+
==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.
 
* 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.
  
Zeile 112: Zeile 112:
 
* ./check-sshd-config.sh
 
* ./check-sshd-config.sh
 
* Output interpretieren lassen oder als Basis-Checks im Audit nutzen.
 
* Output interpretieren lassen oder als Basis-Checks im Audit nutzen.
 
==Anpassungen==
 
* Sag mir, welche Checks ergänzt werden sollen (Kernel-Params, CIS, Integrity, Disk-Enc usw.).
 

Aktuelle Version vom 17. November 2025, 07:45 Uhr

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.

check-sshd-config.sh

  • Zweck: Prüft wichtige SSHD-Einstellungen (PermitRootLogin, PasswordAuthentication, Protocol).
  • Nutzung: ./check-sshd-config.sh /etc/ssh/sshd_config
#!/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"

check-password-policy.sh

  • Zweck: Prüft, ob pam_pwquality/pam_cracklib präsent ist (Basis-Check).
  • Nutzung: ./check-password-policy.sh
#!/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

check-auditd-running.sh

  • Zweck: Prüft, ob auditd läuft und ob Audit-Log vorhanden ist.
  • Nutzung: ./check-auditd-running.sh
#!/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

check-firewall-basic.sh

  • Zweck: Prüft, ob UFW aktiv ist oder nftables Tabellen vorhanden sind.
  • Nutzung: ./check-firewall-basic.sh
#!/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

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
#!/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'

check-package-updates-apt.sh

  • Zweck: Zeigt, ob Updates verfügbar sind (APT-basiert, nur Lesend).
  • Nutzung: ./check-package-updates-apt.sh
#!/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

check-sudoers-no-tty.sh

  • Zweck: Prüft, ob sudoers NOPASSWD oder !requiretty enthält.
  • Nutzung: ./check-sudoers-no-tty.sh
#!/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 verwenden

  • chmod +x check-*.sh
  • ./check-sshd-config.sh
  • Output interpretieren lassen oder als Basis-Checks im Audit nutzen.