Eine ordnungsgemäße Möglichkeit zum Erstellen eines chroot-SSH unter CentOS 7

Eine ordnungsgemäße Möglichkeit zum Erstellen eines chroot-SSH unter CentOS 7

Es gibt viele Tutorials zum Erstellen eines chroot-SFTP, aber ich würde gerne SSH verwenden, weil es viel schneller ist, einfach wget, unzip, mysqlund mysqldumpzu verwenden, als FTP und phpMyAdmin herumzuwerfen. Die Methode sollte außerdem sauber (ohne manuelle lddMagie) und erweiterbar sein, sodass ich Pakete problemlos hinzufügen und aktualisieren kann.

Antwort1

Glücklicherweise konnte ich eine Möglichkeit finden, das zu tun.

Schritt 1: Eine Gruppe für Chroot-Benutzer hinzufügen

groupadd chrootusers

Schritt 2: SSH konfigurieren

nano /etc/ssh/sshd_config

Ersetzen

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

Mit

Subsystem     sftp    internal-sftp

Am Ende einfügen

Match Group chrootusers
  ChrootDirectory /home/%u

Laufen

systemctl restart sshd
systemctl status sshd

Schritt 3: Einen Benutzer hinzufügen

Wechseln Sie peterzu Ihrem 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: Pakete installieren und die notwendige Verzeichnisstruktur erstellen

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 procunddev

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

Laufen

mount -a

Schritt 6: Konfigurieren der 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 dies $NEW_USER_NAMEan die aktuelle Sitzung gebunden ist!

Beginnen Sie beim Hinzufügen eines weiteren Benutzers mit Schritt 3.

Um später weitere Pakete zu installieren, verwenden Sie denselben Befehl wie in Schritt 4.


Wenn Sie sich per SSH anmelden, erhalten Sie Meldungen wie cannot find name for user ID x. Sie können diese gefahrlos ignorieren, 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'

verwandte Informationen