Alterar permissões para o usuário do SSH

1

No meu Synology NAS, criei um usuário SSH cujo diretório pessoal é /volume1/USERNAME . No entanto, esse usuário pode acessar outros diretórios.

Existe uma maneira de limitá-lo a não conseguir acessar nada fora de seu diretório pessoal?

    
por Bijan 15.01.2016 / 23:59

1 resposta

1

Portanto, configurar o chroot para o SSH requer a ativação do SFTP (Protocolo de Transferência de Arquivo SSH), que faz parte do OpenSSH. Leia abaixo para as etapas exatas.

BTW, se vir USERNAME em maiúsculas, substitua USERNAME pelo nome de usuário que você está tentando fazer chroot.

Ativando o SFTP com Chrooted

Ativar o SFTP é muito fácil. Abra o / etc / ssh / sshd_config ...

vi /etc/ssh/sshd_config

e verifique se você tem a seguinte linha:

Subsystem sftp /usr/lib/openssh/sftp-server

Em seguida, adicione a seguinte estrofe no final do arquivo (adicione uma estrofe para cada usuário que você deseja chroot):

Match User USERNAME
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

Em vez de adicionar uma sub-rotina para cada usuário, você também pode fazer chroot em grupos, por exemplo, da seguinte forma:

Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

Isso iria chroot todos os membros do grupo de usuários para o diretório / home. Reinicie o OpenSSH:

/etc/init.d/ssh restart

Se você executar vários usuários chroot no mesmo diretório, mas não quiser que os usuários naveguem pelos diretórios base dos outros usuários, você poderá alterar as permissões de cada diretório base da seguinte forma:

chmod 700 /home/USERNAME

Em seguida, você pode efetuar login com um cliente SFTP, como o FileZilla ou o WinSCP.

Ativando o SSH do Chrooted

Ativar o SSH chrooted é um pouco mais complicado, porque precisamos configurar um ambiente chroot com todos os programas / ferramentas (por exemplo, / bin / bash, / bin / cp, etc.) que os usuários devem poder usar. Isso significa que também devemos copiar todas as bibliotecas que esses programas precisam para a cadeia chroot. Você pode fazer isso manualmente com o comando cp e descobrir quais bibliotecas uma ferramenta precisa usando o comando ldd, por exemplo,

ldd /bin/bash

Também precisamos criar alguns dispositivos como / dev / null, / dev / zero, / dev / tty e / dev / urandom dentro da jaula chroot com o comando mknod. No entanto, isso pode ser uma tarefa tediosa. Felizmente, há um script que pode fazer isso por nós. Primeiro, precisamos instalar alguns pré-requisitos:

apt-get install sudo debianutils coreutils

Em seguida, baixamos make_chroot_jail.sh para / usr / local / sbin e torná-lo executável para o usuário root:

cd /usr/local/sbin
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
chmod 700 /usr/local/sbin/make_chroot_jail.sh

Antes de usarmos o script, talvez você queira adicionar alguns programas (por exemplo, / usr / bin / vi) à linha APPS de sua distribuição nesse script, para que essas ferramentas sejam adicionadas automaticamente à cadeia chroot:

vi /usr/local/sbin/make_chroot_jail.sh


elif [ "$DISTRO" = DEBIAN ]; then
  APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync /usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/vi"
else

Em seguida, adicionamos um link simbólico / home / home que aponta para / home:

cd /home
ln -s . home

Agora já podemos usar o script. O uso é o seguinte:

make_chroot_jail.sh username [/path/to/chroot-shell [/path/to/chroot]]

O chroot-shell é um shell especial criado pelo script para chroot users. Como o OpenSSH agora suporta o chrooting por padrão, não precisamos do script para criar um shell especial; em vez disso, podemos usar / bin / bash ou / bin / sh. Não importa se o usuário já existe ou não. Se ele existir, ele será atualizado; se não, ele será criado.

make_chroot_jail.sh USERNAME /bin/bash /home

Isso criará / atualizará o usuário USERNAME com o chroot jail / home. Para atualizar todos os arquivos / bibliotecas na jaula chroot, execute

make_chroot_jail.sh update /bin/bash /home

Agora, precisamos configurar o OpenSSH, que é semelhante à configuração do SFTP. Abra o / etc / ssh / sshd_config ...

vi /etc/ssh/sshd_config

Adicione a seguinte estrofe no final do arquivo (adicione uma estrofe para cada usuário que você queira chroot):

Match User USERNAME
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no

Em vez de adicionar uma sub-rotina para cada usuário, você também pode fazer chroot em grupos, por exemplo, da seguinte forma:

Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no

Isso iria chroot todos os membros do grupo de usuários para o diretório / home. A diferença para a configuração do SFTP é que, desta vez, não devemos usar a linha ForceCommand / usr / lib / openssh / sftp-server nas estrofes Match! Isso faz com que os usuários ainda possam usar o SFTP com chroot (desde que você também tenha a linha Subsistema sftp / usr / lib / openssh / sftp-server em / etc / ssh / sshd_config), mas também o SSH chroot.

Reinicie o OpenSSH

/etc/init.d/ssh restart

Se você executar vários usuários chroot no mesmo diretório, mas não quiser que os usuários naveguem pelos diretórios base dos outros usuários, você poderá alterar as permissões de cada diretório base da seguinte forma:

chmod 700 /home/USERNAME

Depois, você pode fazer login com um cliente SSH, como o PuTTY.

    
por 16.01.2016 / 02:26