¿Cómo bloquear al usuario SFTP?

¿Cómo bloquear al usuario SFTP?

Realmente necesito ayuda, he estado intentando encarcelar a un usuario que usa ubuntu.

Cosa a tener en cuenta:

  1. jameses el usuario
  2. sshuserses el grupo
  3. /home/james/upload/es el directorio donde deseo bloquear al usuario

sshd_config:

AllowGroups sshusers 

Match Group sshusers
    ChrootDirectory /home/%u/upload/
    ForceCommand internal-sftp

Isiguió una respuestaEn Askubuntu, aquí están mis comandos.

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

Problema:

me sale este error

Error:  Network error: Software caused connection abort
Error:  Could not connect to server

Investigué en los registros y encontré esto:

fatal: propiedad o modos incorrectos para el componente del directorio chroot "/home/james/upload/"

Pero si ejecuto los siguientes comandos

sudo chown root /home/james/upload
sudo chmod go-w /home/james/upload

Funciona perfecto, el usuario puede conectarse, la carpeta está bloqueadaPERO no puedo soltar archivosen el directorio

Status: Listing directory /
Status: Directory listing successful
Status: Starting upload of C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm
Command:    put "C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm" "test"
Error:  /test: open for write: permission denied
Error:  File transfer failed

Por favor, aconseje, he buscado tanto en Google que ahora todos los enlaces son morados (visitado :P)

Estoy usando el cliente filezilla para probar SFTP.

Respuesta1

La ChrootDirectorydirectiva espera que el directorio chroot sea propiedad de rooty nadie más pueda escribirlo. Vos tambienno puedoencarcelar a un usuario en un directorio y permitirle permiso para escribir en ese directorio. Puede:

Chroot a casa, subir aupload/

El primer conjunto de comandos que probó es correcto para esto:

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

Sin embargo, la opción sshd_configsería:

Match Group sshusers
    ChrootDirectory %h
    ForceCommand internal-sftp

( %hse reemplaza por el directorio de inicio del usuario que se autentica, equivalente a /home/%uen la mayoría de los casos). Además, para limitar la visibilidad de las carpetas en /home/jamesy restringir el permiso de escritura allí, use las opciones recursivas para chowny chmoden el primer comando para /home/jamesy eliminar readpermisos. El conjunto modificado quedaría así:

sudo chown root /home/james -R 
sudo chmod go-rwx /home/james -R  # Disallow traversing any directory in home 
sudo chmod go+x /home/james       # Allow traversing this directory
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwx /home/james/upload

Ahora el usuario sólo debería poder acceder a /home/james/upload, o /upload.

Chroot para subir, subir aupload/some_directory

Más o menos lo mismo que el anterior, reemplazando /home/james/con /home/james/uploady /home/james/uploadcon /home/james/upload/some_directory. No hay ganancias particulares.

Cambie el directorio de inicio de jamesa/upload

El comportamiento habitual de ChrootDirectory es: "Después del chroot, sshd(8) cambia el directorio de trabajo al directorio de inicio del usuario". Entonces cambiamos jamesel directorio de inicio de:

usermod -d /upload  user

Luego establezca el ChrootDirectoryen /home/%u. Utilice las mismas restricciones en la primera opción.

Respuesta2

El mecanismo chroot sftp incorporado en OpenSSH requiere que el directorio chroot sea propiedad del root (y los usuarios no puedan escribirlo). Esto podría ser una molestia si el directorio es un recurso compartido SMB/CIFS, por ejemplo, donde tendría que realizar un montaje vinculado.

Una de las soluciones más flexibles sería utilizar MySecureShell (http://mysecureshell.readthedocs.io/en/latest/)

apt install mysecureshell

Funciona sin ninguna modificación en la configuración predeterminada de OpenSSH. Todo lo que necesita hacer es crear su shell de inicio de sesión de usuario SFTP en mysecureshell, y él se encargará de la ACL/chroot virtual por usted. Consulte la documentación para obtener más detalles.

Por ejemplo, una vez que haya instalado MySecureShell, puede agregar un usuario SFTP (restringido a su directorio de inicio) como se muestra a continuación:

sudo useradd -m -d /home/sftpuser01 --shell /usr/bin/mysecureshell sftpuser01

De lo anterior, el usuario 'sftpuser01' será chroot virtual a '/home/sftpuser01' en la sesión SFTP.

También proporciona muchas opciones flexibles para controlar ACL, grupos, etc. configurando '/etc/ssh/sftp-config'. Por favor refiérase ahttp://mysecureshell.readthedocs.io/en/latest/configuration.htmlpara detalles.

información relacionada