Como bloquear o usuário SFTP?

Como bloquear o usuário SFTP?

Eu realmente preciso de ajuda, estou tentando prender um usuário usando ubuntu.

Coisa a ser observada:

  1. jamesé o usuário
  2. sshusersé o grupo
  3. /home/james/upload/é o diretório onde desejo bloquear o usuário

sshd_config:

AllowGroups sshusers 

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

EUseguiu uma respostano askubuntu, aqui estão meus 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:

Eu recebo esse erro

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

Investiguei nos logs e encontrei isto:

fatal: propriedade ou modos incorretos para o componente do diretório chroot "/home/james/upload/"

Mas se eu executar os seguintes comandos

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

Funciona perfeitamente, o usuário pode se conectar, a pasta está bloqueadaMAS não é possível descartar arquivosno diretório

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, conselho, eu pesquisei tanto no Google que todos os links estão roxos agora (visitado :P)

Estou usando o cliente filezilla para testar o SFTP.

Responder1

A ChrootDirectorydiretiva espera que o diretório chroot seja de propriedade de roote não possa ser gravado por mais ninguém. Então vocênão podeprender um usuário em um diretório e conceder permissão ao usuário para gravar nesse diretório. Você pode:

Chroot para casa, carregue paraupload/

O primeiro conjunto de comandos que você tentou está correto para isso:

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

No entanto, a opção sshd_configseria:

Match Group sshusers
    ChrootDirectory %h
    ForceCommand internal-sftp

( %hé substituído pelo diretório inicial do usuário que está sendo autenticado, equivalente a /home/%una maioria dos casos.) Além disso, para limitar a visibilidade das pastas /home/jamese restringir a permissão de gravação, use as opções recursivas para chowne chmodno primeiro comando para /home/jamese remover readpermissões. O conjunto modificado ficaria assim:

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

Agora o usuário só deve poder acessar /home/james/upload, ou /upload.

Chroot para fazer upload, fazer upload paraupload/some_directory

Praticamente o mesmo que acima, substituindo /home/james/por /home/james/uploade /home/james/uploadpor /home/james/upload/some_directory. Nenhum ganho específico.

Altere o diretório inicial de jamespara/upload

O comportamento usual do ChrootDirectory é: "Após o chroot, o sshd(8) muda o diretório de trabalho para o diretório inicial do usuário." Então, mudamos jameso diretório inicial de:

usermod -d /upload  user

Em seguida, defina ChrootDirectorycomo /home/%u. Use as mesmas restrições da primeira opção.

Responder2

O mecanismo chroot sftp integrado no OpenSSH requer que o diretório chroot seja de propriedade do root (e não possa ser gravado pelos usuários). Isso pode ser um problema se o diretório for um compartilhamento SMB/CIFS, por exemplo, onde você teria que fazer a montagem vinculada.

Uma das soluções mais flexíveis seria usar MySecureShell (http://mysecureshell.readthedocs.io/en/latest/)

apt install mysecureshell

Funciona sem qualquer modificação nas configurações padrão do OpenSSH. Tudo o que você precisa fazer é transformar seu shell de login de usuário SFTP em mysecureshell, e ele cuidará do chroot ACL/virtual para você. Veja a documentação para detalhes,

Por exemplo, depois de instalar o MySecureShell, você pode adicionar um usuário SFTP (restrito ao seu diretório inicial) conforme abaixo,

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

Do exposto acima, o usuário 'sftpuser01' será virtualmente chrootado para '/home/sftpuser01' na sessão SFTP.

Ele também fornece muitas opções flexíveis para controlar ACL, grupo, etc., configurando '/etc/ssh/sftp-config'. Consultehttp://mysecureshell.readthedocs.io/en/latest/configuration.htmlpara detalhes.

informação relacionada