Kai Ravens HowTo's hat geschrieben:----------- Schnipp ----------
User einrichten
Bei der Einrichtung der SSH User sollte man sich überlegen, dass für jeden User eine extra Chroot Umgebung und ein eigener Syslog Prozess eingerichtet werden muss.
Will man die Anzahl der Chroot Umgebungen und Syslog Prozesse begrenzen, kann man z. B. von dem Modell ausgehen, dass eine begrenzte Anzahl von SSH Usern stellvertretend für Gruppen steht, denen man verschiedene "Vertrauensstufen" und Möglichkeiten zubilligt. Die realen User werden dann über den Eintrag ihrer Public Keys in den authorized_keys Dateien der jeweiligen Chrootumgebungen diesen Gruppen "zugeordnet".
Man richtet z. B. 3 SSH User/Gruppen ein sshuser1, sshuser2, sshuser3 - sshuser1 wird über die rssh SCP und SFTP erlaubt und erhält Zugriff auf mehr Dateien, sshuser2 wird ebenfalls SCP und SFTP erlaubt, hat aber nur auf eine beschränkte Anzahl von Dateien Zugriff und/oder kann nur Downloads ausführen, sshuser3 hat nur SCP Zugriff und kann nur Uploads ausführen.
1. $ groupadd sshusers
$ useradd sshuserN -m -p Passwort -d /opt/chroot/home/sshuserN -G sshusers -s /pfad/zu/rssh
2. $ rm -fr /opt/chroot/home/sshuserN/*
Damit wird zuerst 1x die Gruppe sshusers angelegt. Danach wird der User sshuserN, mit Gruppenzugehörigkeit zu sshuserN und sshusers (-G), angelegt, sein Heimatverzeichnis (-d) wird erzeugt (-m), ein Passwort vergeben (-p) und ihm wird die rssh als Shell zugeordnet.
Anschließend werden die automatisch angelegten Unterverzeichnisse und Dateien aus dem Heimatverzeichnis des Users gelöscht.
Chroot Umgebung erstellen
Dazu werden die Verzeichnisse, Bibliotheken, Programme und Konfigurationsdateien in die User Heimatverzeichnisse abgebildet, d. h. liegt z. B. sftp-server in /usr/local/libexec/sftp-server, wird von dort sftp-server in das Verzeichnis /opt/chroot/home/sshuserN/usr/local/libexec/sftp-server kopiert. Das betrifft auch alle Bibliotheken, von denen das Programm abhängt. Um das festzustellen, gibt man "ldd Programm" ein und erhält die Bibliotheken mit Verzeichnissen, die das Programm benötigt. Das betrifft scp, sftp-server, rssh und rssh_chroot_helper. Die ausgegebenen Informationen werden dann verwendet, um die Verzeichnis- und Dateistruktur abzubilden.
Verzeichnisstruktur
/opt/chroot/ - root:sshusers rwx-r-x---
/opt/chroot/dev/ - root:root rwx------
/opt/chroot/home/ - root:sshusers rwxr-x---
/opt/chroot/home/sshuserN/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/.ssh - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/.ssh/authorized_keys - root:sshuserN rw-r-----
/opt/chroot/home/sshuserN/dev/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/etc/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/etc/passwd - root:sshuserN rw-r-----
/opt/chroot/home/sshuserN/lib/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/lib/libnss*_files*.so - root:sshuserN rwxr-x---*
/opt/chroot/home/sshuserN/lib/tls/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/userarea/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/userarea/upload/ - root:sshuserN rwxrwx---
/opt/chroot/home/sshuserN/userarea/download/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/usr/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/usr/kerberos/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/usr/kerberos/lib/ - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/usr/local/bin/rssh - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/usr/local/bin/scp - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/usr/local/libexec/rssh_chroot_helper - root:sshuserN rwxr-x---
/opt/chroot/home/sshuserN/usr/local/libexec/sftp-server - root:sshuserN rwxr-x---
* Die Bibliotheken sind notwendig, damit der User SCP verwenden kann.
Aus der /etc/passwd wird die entsprechende Zeile mit den Angaben zu sshuserN in die Datei /opt/chroot/home/sshuserN/etc/passwd kopiert.
In /etc/sysconfig/syslog werden für syslogd und für jeden SSH User in der Chrootumgebung zusätzliche Sockets angegeben (maximal 19):
SYSLOGD_OPTIONS="-m 0 -a /opt/chroot/dev/log -a /opt/chroot/home/sshuserN/dev/log"
Danach den syslogd neu starten:
$ service syslog restart
Einstellungen der rssh Konfigurationsdatei rssh.conf
logfacility = LOG_name # name = Syslogkategorie, z. B. AUTH
# allowrsync # rsync erlauben
# allowrdist # rdist erlauben
# allowcvs # cvs erlauben
allowsftp # SFTP erlauben
allowscp # SCP erlauben
umask = 022 # Standard umask
chrootpath="/opt/chroot" # Standard chroot Verzeichnis
# User konfigurieren:
user="sshuserN:umask:nnnnn:/opt/chroot/home/sshuserN"
# n = 0|1 = Bits zur Deaktivierung|Freischaltung von rsync, rdist, cvs, SFTP und SCP (in der Reihenfolge)
z. B. 00011 = User kann nur SFTP und SCP nutzen.
-------------- Schnipp --------------