# Sudo deinstallieren

<article id="bkmrk-inhalt-ziel-%26-hinter"><nav class="toc">**Inhalt**1. [Ziel &amp; Hintergrund](#bkmrk-1%29-ziel-%26-hintergrun)
2. [Auswirkungen &amp; Trade-offs](#bkmrk-2%29-auswirkungen-%26-tr)
3. [Vorbereitung (Root &amp; Backup)](#bkmrk-3%29-vorbereitung-%28roo)
4. [sudo entfernen (Paket oder manuell)](#bkmrk-4%29-sudo-entfernen-%28p)
5. [Bereinigen von Gruppen &amp; Resten](#bkmrk-5%29-bereinigen-von-gr)
6. [Verifikation &amp; Funktionstests](#bkmrk-6%29-verifikation-%26-fu)
7. [Warum das der Sicherheit hilft](#bkmrk-7%29-warum-das-der-sic)
8. [Zusätzliche Härtung (Best Practices)](#bkmrk-8%29-zus%C3%A4tzliche-h%C3%A4rtu)
9. [Rollback (sudo wiederherstellen)](#bkmrk-9%29-rollback-%28sudo-wi)
10. [Anhang: Ein-Befehl-Variante](#bkmrk-10%29-anhang%3A-ein-befe)

</nav><section id="bkmrk-1%29-ziel-%26-hintergrun">## 1) Ziel &amp; Hintergrund

Auf Systemen wie Kali/Debian existiert immer ein **Root-Account**. `sudo` ist ein Komfort- und Kontrollwerkzeug, um Root-Rechte selektiv an normale Benutzer zu delegieren. Diese Anleitung stellt um auf das klassische Modell: **kein `sudo`**, Adminzugriff nur über **`su -`** mit Root-Passwort.

</section><section id="bkmrk-2%29-auswirkungen-%26-tr">## 2) Auswirkungen &amp; Trade-offs

<table><thead><tr><th>Aspekt</th><th>Mit `sudo`</th><th>Mit `su -` (ohne `sudo`)</th></tr></thead><tbody><tr><td>Berechtigungen</td><td>Feingranular delegierbar</td><td>Alles oder nichts über Root-Passwort</td></tr><tr><td>Nachvollziehbarkeit</td><td>Pro-User-Logging möglich</td><td>Weniger granular; Fokus auf Auth-Logs</td></tr><tr><td>Komfort</td><td>Befehlsweise Elevation</td><td>Bewusster Wechsel in Root-Shell</td></tr><tr><td>Angriffsfläche</td><td>Zusätzliche Binary &amp; Policy</td><td>Weniger Komponenten, ein Geheimnis (Root-PW)</td></tr></tbody></table>

<div class="note">**Merke:** Wer bereits Root-Rechte hat, kann immer das Root-Passwort ändern – unabhängig davon, ob `sudo` installiert ist. Sicherheit entsteht hier primär durch *Zugriffskontrolle*, *Härtung* und *Auditing*.</div></section><section id="bkmrk-3%29-vorbereitung-%28roo">## 3) Vorbereitung (Root &amp; Backup)

1. **Sicherstellen, dass Root aktiviert ist und ein Passwort hat**: ```
    # falls aktuell noch sudo vorhanden ist:
    sudo passwd root
    # ab dann:
    su -
            
    ```
2. **Backups der sudo-Konfiguration**: ```
    mkdir -p /root/backup-sudo-files
    cp -a /etc/sudoers /root/backup-sudo-files/ 2>/dev/null || true
    cp -a /etc/sudoers.d /root/backup-sudo-files/ 2>/dev/null || true
            
    ```

</section><section id="bkmrk-4%29-sudo-entfernen-%28p">## 4) `sudo` entfernen (Paket oder manuell)

### 4.1 Paketzuordnung prüfen

```
which sudo
ls -l /usr/bin/sudo
dpkg -S /usr/bin/sudo 2>/dev/null || echo "Kein dpkg-Eintrag (manuell installiert)"
```

### 4.2 Falls als Paket installiert

```
apt update
apt purge -y sudo sudo:arm64 || true
apt autoremove -y
```

### 4.3 Falls *nicht* paketverwaltet (manuell installiert)

<div class="warn">**Vorsicht:** Nur löschen, wenn sichergestellt ist, dass `sudo` nicht von dpkg verwaltet wird.</div>```
cp -a /usr/bin/sudo /root/backup-sudo      # Sicherung
rm -v /usr/bin/sudo                         # Entfernen
# optional: visudo entfernen, falls vorhanden
[ -e /usr/bin/visudo ] && rm -v /usr/bin/visudo
```

</section><section id="bkmrk-5%29-bereinigen-von-gr">## 5) Bereinigen von Gruppen &amp; Resten

```
# Benutzer aus sudo-Gruppe entfernen (Beispiel: jj)
deluser jj sudo

# sudo-Gruppe ggf. ganz entfernen
getent group sudo && delgroup sudo || true
```

<details><summary>Optional: `su` auf bestimmte Gruppe beschränken (`pam_wheel`)</summary>

Damit nur Mitglieder einer bestimmten Gruppe (z. B. `wheel`) `su` benutzen dürfen:

```
groupadd wheel 2>/dev/null || true
gpasswd -a deinadmin wheel
# PAM anpassen (Zeile aktivieren):
sed -i 's|^#\s*auth\s\+required\s\+pam_wheel.so\s\+use_uid|auth required pam_wheel.so use_uid|' /etc/pam.d/su
```

Damit ist *nicht* jeder lokale User zu `su` berechtigt.

</details></section><section id="bkmrk-6%29-verifikation-%26-fu">## 6) Verifikation &amp; Funktionstests

```
# Existenz prüfen
command -v sudo || echo "sudo nicht gefunden (erwartet)"

# als normaler Benutzer: sudo sollte scheitern
sudo id || echo "OK: sudo nicht verfügbar"

# Rootwechsel via su -
su - -c 'id && whoami'
```

<div class="tip">**Tipp:** Prüfe die Logs: `/var/log/auth.log` (oder Journal) sollte `su`-Events zeigen.</div></section><section id="bkmrk-7%29-warum-das-der-sic">## 7) Warum das der Sicherheit hilft

- **Reduzierte Angriffsfläche:** Entfernt eine zusätzliche, setuid-fähige Binary (`/usr/bin/sudo`) und deren Policy/Parser.
- **Einheitliches Geheimnis:** Nur das Root-Passwort erlaubt Privilege Escalation. Kein Nebeneingang über falsch konfigurierte `sudoers`-Regeln.
- **Bewusster Admin-Kontext:** Klare Trennung: normale Arbeit als User, gezielter Wechsel in eine Root-Login-Shell.

<div class="note">**Trade-off:** Du verlierst feingranulare Delegation und pro-User-Audit auf Befehlsebene. Das kompensierst du mit Auth- und `su`-Logging und ggf. `pam_wheel` (siehe nächster Abschnitt).</div></section><section id="bkmrk-8%29-zus%C3%A4tzliche-h%C3%A4rtu">## 8) Zusätzliche Härtung (Best Practices)

### 8.1 SSH

```
# /etc/ssh/sshd_config anpassen:
PermitRootLogin prohibit-password   # Root nur per Key; oder 'no' wenn du Root-SSH ganz verbietest
PasswordAuthentication no           # globale Passwort-Logins aus (nur Keys)
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
# danach:
systemctl restart ssh
```

<details><summary>Wenn du Root-SSH doch per Passwort brauchst</summary>

Dann setze `PermitRootLogin yes` und erzwinge starke Passwörter + Fail2Ban. Besser ist dennoch: SSH-Keys + ggf. 2FA (PAM/Google Authenticator).

</details>### 8.2 Passwortrichtlinien

```
# Beispiel: libpam-pwquality nutzen
apt install -y libpam-pwquality
# /etc/security/pwquality.conf anpassen (Minimallänge, Klassen, etc.)
```

### 8.3 Auditing &amp; Log-Monitoring

```
apt install -y auditd
auditctl -l | cat
# su/Passwort-Events erscheinen in /var/log/auth.log bzw. journalctl -u ssh -u systemd-logind
```

### 8.4 Brute-Force-Schutz

```
apt install -y fail2ban
# jail.local anpassen, insbesondere für sshd; dann:
systemctl enable --now fail2ban
```

### 8.5 `su` einschränken (PAM Wheel)

Siehe Abschnitt 5: Nur Mitglieder von `wheel` dürfen `su` verwenden.

</section><section id="bkmrk-9%29-rollback-%28sudo-wi">## 9) Rollback (sudo wiederherstellen)

1. **Neuinstallation**: ```
    apt update
    apt install -y sudo
    ```
2. **Benutzer berechtigen**: ```
    usermod -aG sudo 
    # neue Gruppenmitgliedschaft gilt nach neuem Login
    ```
3. **Konfiguration prüfen**: ```
    visudo   # Syntaxcheck & Policy anpassen
    ```

</section><section id="bkmrk-10%29-anhang%3A-ein-befe">## 10) Anhang: Ein-Befehl-Variante (vorsichtig!)

Führt Backup, Entfernung (Paket oder manuell) und Gruppenbereinigung in einem Rutsch aus. Vorher lesen!

```
bash -c '
set -euo pipefail
echo ">>> Backup"; mkdir -p /root/backup-sudo-files;
cp -a /etc/sudoers /root/backup-sudo-files/ 2>/dev/null || true;
cp -a /etc/sudoers.d /root/backup-sudo-files/ 2>/dev/null || true;
SUDO_BIN="$(command -v sudo || true)";
if [ -n "$SUDO_BIN" ]; then
  echo ">>> Gefunden: $SUDO_BIN";
  dpkg -S "$SUDO_BIN" &>/dev/null && {
    echo ">>> Paketverwaltet: apt purge";
    apt update;
    apt purge -y sudo sudo:arm64 || true;
    apt autoremove -y;
  } || {
    echo ">>> Nicht paketverwaltet: manuell entfernen";
    cp -a "$SUDO_BIN" /root/backup-sudo-files/;
    rm -v "$SUDO_BIN";
    [ -e /usr/bin/visudo ] && rm -v /usr/bin/visudo || true;
  };
else
  echo ">>> sudo nicht im PATH";
fi
# Beispielbenutzer anpassen:
if getent group sudo &>/dev/null; then
  deluser jj sudo || true;
  delgroup sudo || true;
fi
echo ">>> Fertig."
'
```

<div class="warn">**Achtung:** Passe den Benutzernamen `jj` im Script an deine Umgebung an.</div></section></article>