Uma maneira apropriada de criar um SSH chrooted no CentOS 7 [closed]

4

Existem muitos tutoriais sobre como criar um SFTP com chroots, mas eu gostaria de usar o SSH, porque é muito mais rápido simplesmente wget , unzip , mysql e mysqldump do que jogar por aí o FTP e o phpMyAdmin. O método também deve ser limpo (sem o manual ldd magic) e extensível, para que eu possa adicionar e atualizar pacotes facilmente.

    
por amq 16.06.2015 / 13:03

1 resposta

3

Por sorte, consegui encontrar uma maneira de fazer isso.

Etapa 1: adicionar um grupo para usuários chrooted

groupadd chrootusers

Etapa 2: configurar o SSH

nano /etc/ssh/sshd_config

Substituir

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

com

Subsystem     sftp    internal-sftp

Cole no final

Match Group chrootusers
  ChrootDirectory /home/%u

Executar

systemctl restart sshd
systemctl status sshd

Etapa 3: adicionar um usuário

Altere peter para o nome de usuário desejado.

export NEW_USER_NAME=peter

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

Etapa 4: instale os pacotes e crie a estrutura de diretórios necessária

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

Etapa 5: montar proc e 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

Executar

mount -a

Etapa 6: configurar os servidores 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

Isso é tudo.

Tenha em mente que $NEW_USER_NAME está vinculado à sessão atual!

Comece a partir do passo 3 ao adicionar outro usuário.

Para instalar mais pacotes, use o mesmo comando da Etapa 4.

Ao efetuar login usando o SSH, você receberá mensagens como cannot find name for user ID x . Eles são seguros para ignorar, mas se você quiser se livrar deles, você precisará duplicar o usuário no 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'
    
por 16.06.2015 / 14:32