Con el lanzamiento de OpenSSH 4.9p1, ya no tiene que depender de hacks de terceros o configuraciones complicadas de chroot para limitar a los usuarios a sus directorios personales o darles acceso a los servicios SFTP.
edite / etc / ssh / sshd_config (/ etc / sshd_config en algunas distribuciones) y configure las siguientes opciones:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Asegúrese de que la directiva "Match" se encuentra al final del archivo. Esto le dice a OpenSSH que todos los usuarios en el grupo sftp deben pasar a su directorio de inicio (que% h representa en el comando ChrootDirectory
Para cualquier usuario que desee modificar, agréguelo al grupo sftp usando:
# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe
El comando usermod anterior agregará el usuario joe al grupo sftp y establecerá su shell en / bin / false para que nunca puedan obtener acceso al shell. Los comandos chown y chmod establecerán los permisos necesarios para el directorio. Con estos permisos establecidos, el usuario podrá cargar y descargar archivos, pero no podrá crear directorios o archivos en el directorio raíz
Chrooting cuentas de shell es un poco más complicado ya que requiere que ciertos archivos de dispositivo y un shell estén disponibles en el directorio de inicio del usuario. Los siguientes comandos configurarán un sistema chroot muy básico en Mandriva Linux:
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
Con lo anterior, el usuario Joe puede ingresar y estará restringido al chroot. Desafortunadamente, esto no hace mucho, pero le da una idea de cómo se puede configurar. Según lo que desee proporcionar, deberá instalar bibliotecas y binarios adicionales.
Creando un chroot
Instale los paquetes dchroot y debootstrap.
Como administrador (es decir, usando sudo), cree un nuevo directorio para el chroot. En este procedimiento, /var/chroot
se utilizará el directorio . Para hacer esto, escriba sudo mkdir /var/chroot
en una línea de comando.
Como administrador, abra
/etc/schroot/schroot.conf
en un editor de texto. Escriba cd /etc/schroot
, seguido de gksu gedit schroot.conf
. Esto te permitirá editar el archivo.
Agregue las siguientes líneas schroot.conf
y luego guarde y cierre el archivo. Reemplace
your_username
con su nombre de usuario.
Descripción [lucid] = Ubuntu Lucid location = / var / chroot priority = 3 usuarios = your_username groups = sbuild root-groups = root
Abra una terminal y escriba:
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \
http://mirror.url.com/ubuntu/
Esto creará una 'instalación' básica de Ubuntu 10.04 (Lucid Lynx) en el chroot. Los paquetes pueden tardar un tiempo en descargarse. Nota: Puede reemplazar lucid con la versión de Ubuntu que elija. Nota: Debe cambiar lo anterior mirror.url.com
con la URL de un espejo de archivo válido local para usted. Ahora se debería haber creado un chroot básico. Escriba sudo chroot /var/chroot
para cambiar a un shell de raíz dentro del chroot.
Preparando el chroot
Hay algunos pasos básicos que puede seguir para configurar el chroot, proporcionando servicios como la resolución de DNS y el acceso /proc
.
Nota: Escriba estos comandos en un shell que está fuera del chroot.
Escriba lo siguiente para montar el /proc
sistema de archivos en el chroot (requerido para administrar procesos):
sudo mount -o bind /proc /var/chroot/proc
Escriba lo siguiente para permitir la resolución DNS desde dentro del chroot (requerido para el acceso a Internet):
sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
Muy pocos paquetes se instalan por defecto en un chroot (incluso sudo no está instalado). Úselo apt-get install package_name
para instalar paquetes.