Apparmor sshd

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Typische aa-logprof-Abfragen bei sshd

Beim ersten Einlogversuch (SSH-Login mit Passwort oder Key, ggf. mit sudo danach) tauchen meist mehrere solcher Abfragen nacheinander auf. Hier die häufigsten, mit Empfehlung:

capability net_admin

Wird von sshd für bestimmte Netzwerk-Operationen (z.B. TCP-Keepalive-Tuning) benötigt.

(A)llow

capability sys_resource

Für das Setzen von Ressourcen-Limits (ulimits) bei neuen Sessions.

(A)llow

capability dac_override / dac_read_search

Nötig, damit sshd trotz fehlender klassischer Unix-Rechte auf bestimmte Dateien zugreifen kann (z.B. beim Public-Key-Check in User-Homes).

(A)llow

capability chown / setuid / setgid

Für den Wechsel vom Login-User-Kontext (Privilege Drop nach erfolgreicher Authentifizierung).

(A)llow -- zwingend nötig, sonst schlägt jeder Login fehl

Datei-Zugriffe /run/sshd/*

PID-Files und Runtime-Sockets von sshd.

(A)llow, meist als "rw" nötig

Datei-Zugriffe /home/*/.ssh/authorized_keys

Für Public-Key-Auth zwingend erforderlich.

(A)llow (r)

Datei-Zugriffe /var/log/lastlog, /var/log/wtmp, /var/log/btmp

Für Login-Historie / "last login"-Anzeige.

(A)llow (rw)

Datei-Zugriffe /etc/environment, /etc/default/locale

Für Umgebungsvariablen der neuen Session.

(A)llow (r)

PTY-Zugriffe /dev/pts/*

Für die eigentliche Terminal-Session nach dem Login.

(A)llow (rw)

Zugriffe auf PAM-Module /lib/x86_64-linux-gnu/security/*.so bzw. /usr/lib/.../security/*.so

Werden für die PAM-Authentifizierungskette (pam_unix, pam_faillock etc.) nachgeladen.

(A)llow (mr)

Wichtig: Bei jedem Punkt mit (A)llow bestätigen antwortet man die aa-logprof-Abfrage. Am Ende speichert man mit

(S)ave

Nach dem Durchlauf

  • Profil erneut in den enforce-Mode setzen (falls vorher complain zum Testen):
aa-enforce /etc/apparmor.d/usr.sbin.sshd
  • sshd neu starten, damit das aktualisierte Profil sicher greift:
systemctl restart apparmor
systemctl restart sshd
  • Erneuten Login-Test durchführen und /var/log/syslog bzw. journalctl -xe auf weitere "DENIED"-Einträge prüfen:
journalctl -xe | grep -i apparmor

Kontrolle des fertigen Profils

aa-status | grep sshd

sollte sshd jetzt im Abschnitt "profiles are in enforce mode" zeigen.

Didaktischer Hinweis für den Kurs

Gut geeignet, um zu zeigen, dass ein "fertiges" Profil selten beim ersten Durchlauf vollständig ist -- gerade bei Diensten wie sshd, die PAM, PTYs und Privilege-Dropping kombinieren, braucht es meist 2-3 Login-Zyklen (normaler Login, sudo danach, evtl. SFTP-Zugriff), bis aa-logprof keine neuen Einträge mehr findet.