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

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

4
задан 16 June 2015 в 15:43
1 ответ

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

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

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 вы получите сообщение типа не удается найти имя для идентификатора пользователя 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'
3
ответ дан 3 December 2019 в 03:41

Теги

Похожие вопросы