¿OpenSSH se parece a 'sftp interno' pero para SCP?

¿OpenSSH se parece a 'sftp interno' pero para SCP?

Estoy ejecutando Debian estable y busco establecer el siguiente entorno para los usuarios de mi grupo 'sftponly':

  • encarcelado
  • puede transferir con SFTP
  • puede transferir con SCP
  • no puedo iniciar sesión interactivamente con SSH

Según 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, lo cual no es nada ideal porque bastantes clientes son procesos heredados y con secuencias de comandos que utilizan SCP en lugar de SFTP (el servidor que estamos reemplazando admitía ambos protocolos), y dado que esos clientes no están bajo nuestro control y son fáciles de controlar. modificado, probablemente no sea práctico desactivar 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 normalmente ocurriría lo mismo con 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 un jail con archivos de soporte, ni tratar con binarios setuid de terceros potencialmente explotables (rssh, en particular, tiene un historial de exploits).

Respuesta1

Echa un vistazo arsshque es un shell alternativo que permite un acceso limitado a un sistema.

rssh es un shell restringido para proporcionar acceso limitado a un host a través de ssh(1), permitiendo a un usuario cuyo shell está configurado para rssh usar uno o más de los comandos scp(1), sftp(1) cvs(1 ), rdist(1) y rsync(1), y solo esos comandos.

Puede configurar qué comandos se pueden usar por usuario o en todo el sistema usando elrssh.confarchivo

Alternativamente puedes usarsolopara hacer lo que quieras. Actúa como un contenedor para la suite ssh y permite la transferencia de archivos pero no el acceso al shell.

Respuesta2

¿Necesitas hacer esto a través de ssh?

Si es así, puedes intentar configurar su shell en:

/usr/libexec/openssh/sftp-server

Y asegúrese de agregar lo anterior en /etc/shells

Si desea desvincularse del 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 utilizar este artículo a continuación y algo más en Google sobre cómo configurarlo:

http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html

Respuesta3

Me temo que no hay nada igualmente fácil o confiable con OpenSSH, ya que, como observó, hay un servidor SFTP incorporado, pero no un servidor SCP incorporado.

Una advertencia: la sugerencia en elrespuesta de Vince Berkes malo por varias razones:

  1. El comportamiento del shell con respecto a los archivos de inicio puede verse influenciado por variables de entorno, que SSH puede configurar de forma remota según la configuración del servidor.

  2. El usuario puede simplemente ejecutar ssh /bin/bashy obtener un shell. No tendrá tty y, por lo tanto, será incómodo de usar, pero ¿y qué? Sin mencionar todos los demás programas que puede ejecutar y que presumiblemente no quieres que lo haga.

  3. Cambiar los permisos de .bash_profileno sirve de nada si el usuario simplemente puede hacerlo ssh host rm -f .bash_profile. No se mencionó nada sobre los permisos del directorio de inicio.

… etcétera. Este tipo de enfoque es demasiado frágil.

Respuesta4

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.

Kit de cárcel:https://olivier.sessink.nl/jailkit/

Tiene una colección de herramientas para facilitar la configuración de cárceles de usuarios: copiar archivos binarios y bibliotecas a la cárcel y configurar el registro desde dentro de la cárcel al sistema operativo. Lo he usado para crear chroots solo para sftp/scp/rsync.

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, si, por ejemplo, desea permitir scp/sftp/rsync solo sin chroot.

información relacionada