Como bloquear o usuário do SFTP?

2

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

Coisa a notar:

  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

Eu segui uma resposta no askubuntu, aqui estão os 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 este erro

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

Eu investiguei nos logs e achei isso:

  

fatal: propriedade incorreta ou modos para o componente de 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á bloqueada MAS não é possível descartar arquivos no 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 pesquiso no google tanto que todos os links estão roxos agora (visitou :P )

Estou usando o cliente filezilla para testar SFTP .

    
por meda 20.09.2014 / 01:23

2 respostas

3

A diretiva ChrootDirectory espera que o diretório chroot seja de propriedade de root e não seja gravável por mais ninguém. Então você não pode jailar um usuário para um diretório e permitir que o usuário tenha permissão para gravar nesse diretório. Você pode:

Chroot para casa, faça o upload para upload/

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

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 em sshd_config seria:

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/%u na maioria dos casos.) Além disso, para limitar a visibilidade das pastas em /home/james e restringir a permissão de gravação, use as opções recursivas para chown e chmod no primeiro comando para /home/james e remova read permissions. 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 conseguir acessar /home/james/upload ou /upload .

Chroot para upload, upload para upload/some_directory

Quase o mesmo que acima, substituindo /home/james/ por /home/james/upload e /home/james/upload por /home/james/upload/some_directory . Nenhum ganho particular.

Altere o diretório inicial de james para /upload

O comportamento usual do ChrootDirectory é: "Depois do chroot, o sshd (8) altera o diretório de trabalho para o diretório pessoal do usuário." Então, alteramos o diretório inicial de james :

usermod -d /upload  user

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

    
por muru 20.09.2014 / 04:49
0

O mecanismo interno chroot do sftp no OpenSSH requer que o diretório chroot seja de propriedade do root (e não gravável 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 de ligação.

Uma das soluções mais flexíveis seria usar o MySecureShell ( link )

apt install mysecureshell

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

Por exemplo, depois de ter instalado o MySecureShell, você pode adicionar um usuário do SFTP (restrito ao seu diretório pessoal) como abaixo,

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

Do que foi dito acima, o usuário 'sftpuser01' obterá chrooted virtual 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'. Consulte o link para obter detalhes.

    
por TL-Aiyor 09.07.2018 / 06:43