Правильный способ создания chrooted SSH на CentOS 7

Правильный способ создания chrooted SSH на CentOS 7

Есть много руководств по созданию chrooted SFTP, но я хотел бы использовать SSH, потому что это намного быстрее, чем просто wget, unzip, mysqlи mysqldumpчем метаться между FTP и phpMyAdmin. Метод должен быть также чистым (без ручной lddмагии) и расширяемым, чтобы я мог легко добавлять и обновлять пакеты.

решение1

К счастью, мне удалось придумать, как это сделать.

Шаг 1: Добавьте группу для пользователей chroot

groupadd chrootusers

Шаг 2: Настройка SSH

nano /etc/ssh/sshd_config

Заменять

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

С

Subsystem     sftp    internal-sftp

Вставить в конец

Match Group chrootusers
  ChrootDirectory /home/%u

Бегать

systemctl restart sshd
systemctl status sshd

Шаг 3: Добавьте пользователя

Измените peterимя пользователя на желаемое.

export NEW_USER_NAME=peter

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

Шаг 4: Установка пакетов и создание необходимой структуры каталогов.

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

Шаг 5: Монтируем procи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

Бегать

mount -a

Шаг 6: Настройте DNS-серверы

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

Вот и все.

Имейте в виду, что $NEW_USER_NAMEэто привязано к текущему сеансу!

При добавлении другого пользователя начните с шага 3.

Чтобы установить дополнительные пакеты позже, используйте ту же команду, что и в шаге 4.


При входе через SSH вы получите сообщения типа cannot find name for user ID x. Их можно смело игнорировать, но если вы хотите от них избавиться, вам нужно будет продублировать пользователя в chroot:

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'

Связанный контент