fragen stichworte

Ein guter Weg, um ein chrootiertes SSH unter CentOS 7 zu erstellen

Es gibt viele Tutorials, wie man ein chrootiertes SFTP erstellt, aber ich möchte SSH verwenden, weil es einfacher ist, wget, unzip, mysql und mysqldump zu werfen das FTP und phpMyAdmin. Die Methode sollte auch sauber (ohne die manuelle ldd -Magie) und erweiterbar sein, sodass ich Pakete problemlos hinzufügen und aktualisieren kann.

antworten

Zum Glück konnte ich einen Weg finden, dies zu tun.

Schritt 1: Fügen Sie eine Gruppe für chrootierte Benutzer hinzu

groupadd chrootusers

Schritt 2: Konfigurieren Sie SSH

nano/etc/ssh/sshd_config

Ersetzen Sie

Subsystem     sftp   /usr/libexec/openssh/sftp-server

Mit

Subsystem     sftp    internal-sftp

Am Ende einfügen

Match Group chrootusers
  ChrootDirectory/home/%u

Führen Sie

aus
systemctl restart sshd
systemctl status sshd

Schritt 3: Hinzufügen eines Benutzers

Ändern Sie peter in Ihren gewünschten Benutzernamen.

export NEW_USER_NAME=peter

useradd ${NEW_USER_NAME}
usermod -G chrootusers -d/${NEW_USER_NAME}
passwd ${NEW_USER_NAME}

Schritt 4: Installieren Sie Pakete und erstellen Sie die erforderliche Verzeichnisstruktur

yum --installroot=/home/${NEW_USER_NAME} --releasever=7 --nogpg --disablerepo='*' --enablerepo=base install centos-release openssh-clients wget vi nano zip unzip tar mariadb findutils iputils bind-utils rsync

Schritt 5: Montieren Sie proc und dev

echo "none/home/${NEW_USER_NAME}/proc proc defaults 0 0" >>/etc/fstab
echo "/dev/home/${NEW_USER_NAME}/dev none bind 0 0" >>/etc/fstab

Führen Sie

aus
mount -a

Schritt 6: Konfigurieren Sie die DNS-Server

echo "nameserver 8.8.8.8" >>/home/${NEW_USER_NAME}/etc/resolv.conf
echo "nameserver 8.8.4.4" >>/home/${NEW_USER_NAME}/etc/resolv.conf

Das ist alles.

Beachten Sie, dass $NEW_USER_NAME an die aktuelle Sitzung gebunden ist!

Beginnen Sie mit Schritt 3, wenn Sie einen anderen Benutzer hinzufügen.

Verwenden Sie zum späteren Installieren weiterer Pakete denselben Befehl wie in Schritt 4.


Wenn Sie sich mit SSH anmelden, erhalten Sie Meldungen wie cannot find name for user ID x. Sie können sicher ignoriert werden, aber wenn Sie sie loswerden möchten, müssen Sie den Benutzer in chroot duplizieren:

export NEW_USER_ID=$(id -u ${NEW_USER_NAME})
export NEW_USER_GROUP_ID=$(id -g ${NEW_USER_NAME})

chroot/home/${NEW_USER_NAME}/bin/bash -c 'useradd -u ${NEW_USER_ID} ${NEW_USER_NAME}'
chroot/home/${NEW_USER_NAME}/bin/bash -c 'groupadd -g ${NEW_USER_GROUP_ID} chrootusers'