Estoy ejecutando Debian estable y estoy buscando establecer el siguiente entorno para los usuarios de mi grupo 'sftponly':
- encarcelado
- puede transferir con SFTP
- puede transferir con SCP
- no puede iniciar sesión interactivamente con SSH
De mi experimentación e investigación, parece que la siguiente estrofa en sshd_config me lleva al 90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Esto me da SFTP encarcelado y no SSH, lo cual es bueno. Pero también deshabilita SCP, que es menos que ideal porque muchos clientes son procesos heredados con secuencias de comandos que usan SCP en lugar de SFTP (el servidor que estamos reemplazando admite ambos protocolos), y dado que esos clientes no están bajo nuestro control y fácilmente modificado, es probable que no sea práctico deshabilitar SCP por completo.
Tiene sentido que esta configuración deshabilite SCP, ya que las conexiones SCP entrantes hacen que sshd genere un proceso 'scp' a través del shell de inicio de sesión del usuario, como ese usuario. Parece que lo mismo sería normalmente cierto para SFTP, si no fuera por el controlador especial 'internal-sftp'.
Entonces, supongo que mi pregunta es: ¿hay alguna manera de lograr el mismo efecto que 'internal-sftp' pero para SCP, sin recurrir al uso de herramientas de terceros como scponly y rssh? Lo realmente bueno de 'internal-sftp' es que no requiere configurar una cárcel con archivos de soporte, o tratar con binarios setuid de terceros potencialmente explotables (rssh, en particular, tiene un historial de exploits).
Respuestas:
Eche un vistazo a rssh, que es un shell alternativo que permite un acceso limitado a un sistema.
Puede configurar qué comandos se pueden utilizar por usuario o en todo el sistema utilizando el archivo rssh.conf
Alternativamente, puede usar scponly para hacer lo que quiera. Actúa como un contenedor para la suite ssh y permite la transferencia de archivos pero no el acceso de shell.
fuente
¿Necesitas hacer esto a través de ssh?
SI es así, puede intentar configurar su shell para:
Y asegúrese de agregar lo anterior en / etc / shells
Si desea desacoplar el uso de cuentas integradas, puede configurar proftpd
Configuré un SFTP seguro usando proftpd. proftpd compilado así:
./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp
Puede usar este artículo a continuación y un poco más en Google sobre cómo configurarlo:
http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html
fuente
Me temo que no hay nada igualmente fácil o confiable con OpenSSH, ya que, como observó, hay un servidor SFTP incorporado, pero no hay un servidor SCP incorporado.
Una advertencia: la sugerencia de Vince Berk es mala por varias razones:
... y así. Este tipo de enfoque es demasiado frágil.
fuente
Esta es una herramienta de terceros, que no está dentro del alcance de la pregunta, pero pensé que merece una mención de todos modos.
Jailkit: https://olivier.sessink.nl/jailkit/
Tiene una colección de herramientas para facilitar la configuración de cárceles de usuario: copiar binarios y bibliotecas a la cárcel y configurar el registro desde el interior de la cárcel al sistema operativo. Lo he usado para construir chroots sftp / scp / rsync-only.
También viene con
jk_lsh
(shell limitado de jailkit) que se puede usar fuera de la cárcel para limitar los comandos que un usuario puede ejecutar, por ejemplo, si desea permitir scp / sftp / rsync solo sin chroot.fuente
Aquí hay un truco sobre cómo realizar este lado del servidor. Establezca el shell de los usuarios para, por ejemplo, bash:
Ahora cree en su homedir un '.bash_profile' con la siguiente línea:
Esto hace que las sesiones no interactivas (como 'scp') continúen. Sin embargo, si intentan un inicio de sesión 'ssh', se llama a la 'salida' y se cierra la conexión.
¡Asegúrese de que no puedan 'sftp' un nuevo '.bash_profile' en sus directorios personales!
¡Espero que ayude!
fuente