Apparmor sshd: Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| − | = | + | =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: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | oder | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==capability net_admin== | |
| − | + | Wird von sshd für bestimmte Netzwerk-Operationen (z.B. TCP-Keepalive-Tuning) benötigt. | |
| − | + | (A)llow | |
| − | + | ==capability sys_resource== | |
| − | (A)llow / | + | 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. | ||
Version vom 28. Juli 2026, 07:38 Uhr
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.