Compliance Skripte: Unterschied zwischen den Versionen
(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-…“) |
|||
| Zeile 65: | Zeile 65: | ||
* 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 | ||
| − | #!/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' |
==6) check-package-updates-apt.sh== | ==6) check-package-updates-apt.sh== | ||
Version vom 6. November 2025, 20:49 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.
1) 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"
2) 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
3) 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
4) 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
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
#!/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
- !/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
- !/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.