SFTP schlägt plötzlich für Chroot-Konten unter Amazon Linux fehl

7

Frustrierenderweise konnten SFTP-Benutzer plötzlich keine Verbindung mehr zu meinem Amazon Linux-Server herstellen.

In / var / log / secure wird der folgende Fehler angezeigt:

sshd[7291]: fatal: safely_chroot: stat("/chroot/uhleeka"): Permission denied [postauth]

/ var / log / secure:

==> /var/log/secure <==
Nov 21 23:49:23 amzl-lamp sshd[7291]: Accepted password for uhleeka from 172.31.0.254 port 47170 ssh2
Nov 21 23:49:24 amzl-lamp sshd[7291]: pam_unix(sshd:session): session opened for user uhleeka by (uid=0)
Nov 21 23:49:24 amzl-lamp sshd[7291]: fatal: safely_chroot: stat("/chroot/uhleeka"): Permission denied [postauth]
Nov 21 23:49:24 amzl-lamp sshd[7291]: pam_unix(sshd:session): session closed for user uhleeka

Debug-Ausgabe von SSHD:

$ /usr/sbin/sshd -ddd -p 33333
...
debug1: SELinux support disabled
debug1: PAM: establishing credentials
debug3: PAM: opening session
debug1: monitor_reinit: /dev/log doesn't exist in /chroot/%u chroot - will try to log via monitor using [postauth] suffix
User child is on pid 6655
debug1: PAM: establishing credentials [postauth]
debug3: safely_chroot: checking '/' [postauth]
debug3: safely_chroot: checking '/chroot/' [postauth]
debug3: safely_chroot: checking '/chroot/uhleeka' [postauth]
safely_chroot: stat("/chroot/uhleeka"): Permission denied [postauth]
debug1: do_cleanup [postauth]
debug3: PAM: sshpam_thread_cleanup entering [postauth]
debug3: mm_request_send entering: type 124 [postauth]
debug3: mm_request_receive entering
debug3: monitor_read: checking request 124
debug3: mm_request_receive entering
debug1: do_cleanup
debug1: PAM: cleanup
debug1: PAM: closing session
debug1: PAM: deleting credentials
debug3: PAM: sshpam_thread_cleanup entering

SELinux ist deaktiviert:

$ sestatus
SELinux status:                 disabled

$ ls -lZ /chroot/uhleeka/
drwxr-x--- root root      ?                                .
drwx--x--- root sftp-only ?                                ..
drwx--x--- root sftp-only ?                                etc
drwxr-xr-x root sftp-only ?                                home

Es wurden keine Konfigurations- oder Berechtigungsänderungen vorgenommen, aber das yum-Update wurde gestern ausgeführt:

$ rpm -qa --last
system-release-2016.09-0.8.noarch             Mon 21 Nov 2016 04:34:40 PM UTC
cloud-init-0.7.6-2.14.amzn1.noarch            Mon 21 Nov 2016 04:34:40 PM UTC
python26-botocore-1.4.74-1.60.amzn1.noarch    Mon 21 Nov 2016 04:34:39 PM UTC
openssh-server-6.6.1p1-31.62.amzn1.x86_64     Mon 21 Nov 2016 04:34:39 PM UTC
openssh-clients-6.6.1p1-31.62.amzn1.x86_64    Mon 21 Nov 2016 04:34:39 PM UTC
aws-cli-1.11.17-1.43.amzn1.noarch             Mon 21 Nov 2016 04:34:39 PM UTC
python27-botocore-1.4.74-1.60.amzn1.noarch    Mon 21 Nov 2016 04:34:38 PM UTC
bind-utils-9.8.2-0.47.rc1.51.amzn1.x86_64     Mon 21 Nov 2016 04:34:38 PM UTC
bind-libs-9.8.2-0.47.rc1.51.amzn1.x86_64      Mon 21 Nov 2016 04:34:38 PM UTC
openssh-6.6.1p1-31.62.amzn1.x86_64            Mon 21 Nov 2016 04:34:37 PM UTC
...

In Bezug auf das openssh-Update: https://alas.aws.amazon.com/ALAS-2016-770.html

Es wurde festgestellt, dass der OpenSSH-sshd-Daemon die PAM-Umgebungseinstellungen abgerufen hat, bevor das Anmeldeprogramm ausgeführt wurde. In Konfigurationen mit UseLogin = yes und dem PAM-Modul pam_env, das zum Lesen der Einstellungen der Benutzerumgebung konfiguriert ist, kann ein lokaler Benutzer diesen Fehler verwenden, um beliebigen Code als Root auszuführen.

/ etc / ssh / sshd_config hat:

UsePAM yes
#UseLogin no
#PermitUserEnvironment no

Die neuesten Updates scheinen der wahrscheinlichste Schuldige zu sein. Gibt es ein Konfigurationsproblem, das dazu führen würde, dass nur chroot-Benutzern plötzlich der Zugriff mit dem neuesten openssh verweigert wird?

uhleeka
quelle
Ist Selinux aktiviert und erzwingt es? Wenn ja, siehe /var/log/audit/audit.log.
Mark Wagner
Was sind die Berechtigungen für die /chroot/uhleeka? Fügen Sie die Ausgabe von hinzu ls -lZ /chroot/uhleeka.
Jakuje
@MarkWagner SELinux ist deaktiviert.
Uhleeka
@Jakuje Ausgabe hinzugefügt, aber SELinux ist deaktiviert, sodass kein Kontext verfügbar ist.
Uhleeka
2
@uhleeka Das hat bei mir funktioniert: rpm -e --nodeps openssh openssh-server openssh-clients; yum install openssh-server-0: 6.6.1p1-25.61.amzn1.x86_64 openssh-clients-0: 6.6.1p1-25.61.amzn1.x86_64
w00t

Antworten:

7

Bearbeiten: Dies sollte in openssh-6.6.1p1-32.el7 unter https://bugzilla.redhat.com/show_bug.cgi?id=1398569 behoben werden

Nach dem OpenSSH-6.6.1p1-31-Update wird angezeigt, dass während des SFTP-Verbindungsversuchs nur die primäre Gruppe des Benutzers auf Authentifizierung überprüft wird. Wenn root und die primäre Gruppe des Benutzers das Basisverzeichnis und mindestens 710 Berechtigungen besitzen, sollten Verbindungsversuche erfolgreich sein.

Repro Schritte:

$ groups sftpuser  
sftpuser: sftpgroup sftpuser  
$ ls -ld / home / sftpuser /  
drwx - x --- 2 root sftpuser 4096 22. November 18:31 sftpuser /  
$ sftp sftpuser @ localhost  
Passwort von sftpuser @ localhost:  
Schreiben fehlgeschlagen: Rohrbruch  
Paket konnte nicht gelesen werden: Verbindung durch Peer zurückgesetzt  
$ chgrp sftpgroup sftpuser /  
$ ls -ld / home / sftpuser /  
drwx - x --- 2 root sftpgroup 4096 22. November 18:31 sftpuser /  
$ sftp sftpuser @ localhost  
Passwort von sftpuser @ localhost:  
Verbunden mit localhost.  
sftp> exit  
  

Fehlgeschlagene Verbindung mit der sekundären Gruppe, die das Ausgangsverzeichnis besitzt (aus / var / log / Secure):

sshd [31640]: Akzeptiertes Passwort für sftpuser von 127.0.0.1 Port 34380 ssh2
sshd [31640]: pam_unix (sshd: session): Sitzung für Benutzer sftpuser geöffnet von (uid = 0)
sshd [31640]: fatal: Pfad zum Chroot-Pfad "/ home / sftpuser" kann nicht geändert werden: Berechtigung verweigert [postauth]
sshd [31640]: pam_unix (sshd: session): Sitzung für Benutzer sftpuser geschlossen
  
Erfolgreiche Verbindung mit dem Ausgangsverzeichnis der Primärgruppe (aus / var / log / Secure):
sshd [31647]: Akzeptiertes Passwort für sftpuser von 127.0.0.1 Port 34382 ssh2
sshd [31647]: pam_unix (sshd: session): Sitzung für Benutzer sftpuser geöffnet von (uid = 0)
sshd [31647]: Sitzung für lokalen Benutzer sftpuser von [127.0.0.1] [postauth] geöffnet
sshd [31647]: Sitzung für lokalen Benutzer sftpuser von [127.0.0.1] [postauth] geschlossen
sshd [31647]: Unterbrechung von 127.0.0.1: 11 empfangen: vom Benutzer getrennt [postauth]
sshd [31647]: pam_unix (sshd: session): Sitzung für Benutzer sftpuser geschlossen

Wille
quelle
2
Vielen Dank. Ich kann bestätigen, dass dies bei mir funktioniert. Wie haben Sie festgestellt, dass dies die Lösung ist?
Uhleeka
Freut mich zu hören, dass das geholfen hat. Fand es durch viele Versuche und Irrtümer. Bestätigt, dass es auch bei RHEL 7.3 auftritt.
Will
Ich habe myuser: bla on / var / sftp / bla und bla's primäre Gruppe ist bla, perms 750 und es ist immer noch fehlgeschlagen.
w00t
Root muss der Benutzer des Bla-Chroot-Home-Verzeichnisses sein.
Will
@ w00t Ich habe das gleiche Problem hier.
Joris Mans
0

Ich habe eine ähnliche Frage gestellt, nachdem ich die Antwort von @Will gelesen hatte. Ich habe diese Lösung ausprobiert, konnte sie jedoch für mein Szenario nicht richtig einsetzen.

Berechtigungen für chrooted Benutzer funktionieren nach dem Update unter Amazon Linux nicht

Aber es führte mich zu der Lösung: Ändern Sie die primäre GID für die Benutzerkonten, die ich chrootete, in die GID der Gruppe, mit der ich Berechtigungen im chrootierten Verzeichnis erstellt habe. Es funktionierte.

Complectia
quelle