Compliance Skripte: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(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-…“)
 
 
(3 dazwischenliegende Versionen desselben Benutzers werden 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.
  
==1) check-sshd-config.sh==
+
==check-sshd-config.sh==
 
* Zweck: Prüft wichtige SSHD-Einstellungen (PermitRootLogin, PasswordAuthentication, Protocol).
 
* Zweck: Prüft wichtige SSHD-Einstellungen (PermitRootLogin, PasswordAuthentication, Protocol).
 
* Nutzung: ./check-sshd-config.sh /etc/ssh/sshd_config
 
* Nutzung: ./check-sshd-config.sh /etc/ssh/sshd_config
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
CONF="${1:-/etc/ssh/sshd_config}"
 
CONF="${1:-/etc/ssh/sshd_config}"
Zeile 12: Zeile 13:
 
grep -Ei '^\s*Protocol' "$CONF" || echo "Protocol not set (modern SSH uses Protocol 2)"
 
grep -Ei '^\s*Protocol' "$CONF" || echo "Protocol not set (modern SSH uses Protocol 2)"
 
echo "Fertig: $CONF geprüft"
 
echo "Fertig: $CONF geprüft"
 +
</pre>
  
==2) check-password-policy.sh==
+
==check-password-policy.sh==
 
* Zweck: Prüft, ob pam_pwquality/pam_cracklib präsent ist (Basis-Check).
 
* Zweck: Prüft, ob pam_pwquality/pam_cracklib präsent ist (Basis-Check).
 
* Nutzung: ./check-password-policy.sh
 
* Nutzung: ./check-password-policy.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
if grep -E 'pam_pwquality|pam_cracklib' /etc/pam.d/common-password >/dev/null 2>&1; then
 
if grep -E 'pam_pwquality|pam_cracklib' /etc/pam.d/common-password >/dev/null 2>&1; then
Zeile 23: Zeile 26:
 
   echo "kein pam_pwquality/pam_cracklib in /etc/pam.d/common-password gefunden"
 
   echo "kein pam_pwquality/pam_cracklib in /etc/pam.d/common-password gefunden"
 
fi
 
fi
 +
</pre>
  
==3) check-auditd-running.sh==
+
==check-auditd-running.sh==
 
* Zweck: Prüft, ob auditd läuft und ob Audit-Log vorhanden ist.
 
* Zweck: Prüft, ob auditd läuft und ob Audit-Log vorhanden ist.
 
* Nutzung: ./check-auditd-running.sh
 
* Nutzung: ./check-auditd-running.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
if command -v systemctl >/dev/null 2>&1; then
 
if command -v systemctl >/dev/null 2>&1; then
Zeile 42: Zeile 47:
 
   echo "Kein Audit-Log unter /var/log/audit/audit.log"
 
   echo "Kein Audit-Log unter /var/log/audit/audit.log"
 
fi
 
fi
 +
</pre>
  
==4) check-firewall-basic.sh==
+
==check-firewall-basic.sh==
 
* Zweck: Prüft, ob UFW aktiv ist oder nftables Tabellen vorhanden sind.
 
* Zweck: Prüft, ob UFW aktiv ist oder nftables Tabellen vorhanden sind.
 
* Nutzung: ./check-firewall-basic.sh
 
* Nutzung: ./check-firewall-basic.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
if command -v ufw >/dev/null 2>&1; then
 
if command -v ufw >/dev/null 2>&1; then
Zeile 61: Zeile 68:
 
   fi
 
   fi
 
fi
 
fi
 +
</pre>
  
==5) check-unused-services.sh==
+
==check-unused-services.sh==
 
* Zweck: Listet systemd-Services, die installiert aber disabled sind (Basis-Check für unnötige Dienste).
 
* Zweck: Listet systemd-Services, die installiert aber disabled sind (Basis-Check für unnötige Dienste).
 
* Nutzung: ./check-unused-services.sh
 
* Nutzung: ./check-unused-services.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
if ! command -v systemctl >/dev/null 2>&1; then echo "Kein systemctl vorhanden"; exit 2; fi
 
if ! command -v systemctl >/dev/null 2>&1; then echo "Kein systemctl vorhanden"; exit 2; fi
 
echo "Installed services (disabled):"
 
echo "Installed services (disabled):"
 
systemctl list-unit-files --type=service | awk '$2 ~ /disabled|static/ {print $1" "$2}' | sed -n '1,200p'
 
systemctl list-unit-files --type=service | awk '$2 ~ /disabled|static/ {print $1" "$2}' | sed -n '1,200p'
 +
</pre>
  
==6) check-package-updates-apt.sh==
+
==check-package-updates-apt.sh==
 
* Zweck: Zeigt, ob Updates verfügbar sind (APT-basiert, nur Lesend).
 
* Zweck: Zeigt, ob Updates verfügbar sind (APT-basiert, nur Lesend).
 
* Nutzung: ./check-package-updates-apt.sh
 
* Nutzung: ./check-package-updates-apt.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
if ! command -v apt-get >/dev/null 2>&1; then echo "Kein apt auf diesem System"; exit 2; fi
 
if ! command -v apt-get >/dev/null 2>&1; then echo "Kein apt auf diesem System"; exit 2; fi
Zeile 83: Zeile 94:
 
   echo "Keine Updates verfügbar"
 
   echo "Keine Updates verfügbar"
 
fi
 
fi
 +
</pre>
  
==7) check-sudoers-no-tty.sh==
+
==check-sudoers-no-tty.sh==
* Zweck: Prüft, ob sudoers NOPASSWD oder !requiretty (Basis-Checks).
+
* Zweck: Prüft, ob sudoers NOPASSWD oder !requiretty enthält.
 
* Nutzung: ./check-sudoers-no-tty.sh
 
* Nutzung: ./check-sudoers-no-tty.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
if [[ -r /etc/sudoers ]]; then
 
if [[ -r /etc/sudoers ]]; then
Zeile 93: Zeile 106:
 
   echo "/etc/sudoers nicht lesbar"
 
   echo "/etc/sudoers nicht lesbar"
 
fi
 
fi
 +
</pre>
  
==Wie abgeben / verwenden==
+
==Wie verwenden==
* Mach die gewünschten Skripte ausführbar:
+
* chmod +x check-*.sh
chmod +x check-*.sh
+
* ./check-sshd-config.sh
* Führe lokal aus; Beispiel:
+
* Output interpretieren lassen oder als Basis-Checks im Audit nutzen.
./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.
 

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.