¿Hay una manera simple de restringir un usuario SCP / SFTP a un directorio? Todos los métodos que he encontrado requieren que establezca una cárcel chroot copiando binarios, pero no creo que sea necesario.
36
SSH admite el encriptado de un usuario SFTP de forma nativa. Solo necesitas suministrar
ChrootDirectory
En su archivo de configuración sshd, y reinicie sshd.
Si solo estás haciendo sftp, entonces no tienes que hacer nada más. Desafortunadamente, esto no funciona para scp. Para el shell interactivo, deberá copiar los binarios y los nodos / dev en el chroot.
Un ejemplo de configuración, para un solo usuario, testuser:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
Algunas cosas a tener en cuenta, desde la página de manual de sshd_config:
Todos los componentes del nombre de ruta deben ser directorios propiedad de root que no sean escribible por cualquier otro usuario o grupo. Después del chroot, sshd (8) cambia el directorio de trabajo al directorio de inicio del usuario.
Busque ChrootDirectory en man sshd_config para obtener más información.
Subsystem sftp /usr/lib/openssh/sftp-server
línea aSubsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
sección.Un chroot es un método razonablemente simple. Dado que el sistema operativo ya tiene esta característica de seguridad, los escritores de demonios tienden a no intentar volver a implementarla.
Rssh viene con una guía sobre cómo configurar una cárcel chroot. Está en el
CHROOT
archivo en la distribución de origen. En pocas palabras, debe tener:/usr/bin/scp
,/usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
) que usan, también copiadas/etc/passwd
(posiblemente no sea una copia sino que se derive del maestro)/dev/null
,/dev/tty
, y también una/dev/log
toma para la explotación forestal (y tiene que informar a su demonio syslog para escuchar en ese socket)Consejo adicional que no está en la documentación de rssh: si necesita que algunos archivos sean accesibles en una cárcel chroot, puede usar bindfs o Linux
mount --bind
para crear jerarquías de directorios adicionales desde fuera de la cárcel.bindfs
permite que el directorio remontado tenga permisos más restrictivos, por ejemplo, solo lectura. (mount --bind
no a menos que aplique un parche del núcleo; Debian ha incluido este parche desde East Lenny, pero la mayoría de las otras distribuciones no lo han hecho a partir de 2011.)fuente
Es posible que desee mirar scponly (o más recientemente, rssh ); Es esencialmente un shell de inicio de sesión que solo se puede utilizar para iniciar scp o el subsistema sftpd. En la
scponlyc
variante realiza un chroot antes de activar el subsistema en cuestión.fuente