Como configurar o Linux jaulas chroot

O termo jaula foi usado pela primeira vez em 1992, em um artigo escrito por um proeminente pesquisador de segurança, Bill Cheswick, (o que é interessante, se você curte esse tipo de coisa, você pode encontrar o artigo aqui). As cadeias Chroot começaram a aparecer em 2003, com aplicações como IRC e FTP. Em 2005, a Sun introduziu sua tecnologia de “contêineres” chamada zonas, que por sua vez foi um precursor do conceito de espaços de nomes, que é uma tecnologia de núcleo usada com contêineres.

chroot basics

Chroot permite que um administrador controle o acesso a um serviço ou sistema de arquivos enquanto controla a exposição ao ambiente servidor subjacente. Os dois exemplos comuns que você pode encontrar São durante a sequência de inicialização e a” linha de emergência ” nos sistemas Red Hat/CentOS/Fedora, e em FTP seguro (SFTP).

o comando parece-se com isto:

chroot <newroot> ]

semelhante ao comando sudo, o comando chroot altera o ambiente do seguinte comando. Em outras palavras, ele vai mudar você para o diretório newroot, e também faz desse diretório o diretório “trabalho”. O command então executa nesse local, o que é útil para coisas como resgatar um sistema que não inicializa.

ao contrário de sudo, você estará ” no ” diretório. Esta prática, mais uma vez, é útil se você está iniciando a partir de mídia externa, mas precisa acessar um sistema de arquivos “local” ou comando para fazer o trabalho.

o outro uso comum de chroot é restringir um serviço ou usuário usando um wrapper para esconder o resto do sistema de arquivos, portanto restringindo a visão de um usuário remoto dos dados de outros usuários. Uma implementação popular usando esta abordagem SFTP.

exemplo

Antes de começar a trabalhar neste exemplo, deve certificar-se de que tem cópias de segurança. Neste caso, faça backup do arquivo /etc/ssh/sshd_config porque você vai estar fazendo alterações a esse especificamente:

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

por agora, você só vai restringir os usuários SFTP para suas diretorias home no servidor. Este requisito significa que você vai precisar adicionar usuários e colocá-los em um grupo:

# useradd -g sftpusers -s /sbin/nologin -p nick nick

lembre-se que ao fazer isto irá atribuir nick uma conta sem consola de autenticação. Esta técnica é prática e uma boa prática de segurança: se ele está apenas usando SFTP, ele não deve ter privilégios de login. Discutirei a possibilidade de fornecer uma shell a usuários remotos no próximo artigo.

Agora, você precisa dizer ao serviço ssh o que fazer quando os usuários do SFTP fazem login. Abrir o ficheiro /etc/ssh/sshd_config e adicionar o seguinte no final:

Subsystem sftp internal-sftpMatch Group sftpusersForceCommand internal-sftpChrootDirectory /homeX11Forwarding noAllowTcpForwarding no

é importante que adicione estas definições como um conjunto separado de itens, e que use a sintaxe Match para indicar que esta secção só se aplica aos utilizadores deste grupo. Se você fez as alterações aos itens existentes, eles se aplicariam a todos os usuários do SSH, o que poderia quebrar o acesso remoto.

as linhas de configuração decompõem-se da seguinte forma::

  • o ForceCommand faz ssh escolher a sua instalação incorporada para fornecer serviço SFTP (que você pode controlar de forma independente).
  • ChrootDirectory diz sshd onde restringir o usuário.
  • Subsystem sftp internal-sftp diz a sshd para carregar o serviço interno sftp e torná-lo disponível.

poderá ter de se certificar de que este Subsystem não é já definido comentando esta linha mais cedo no ficheiro de configuração:

# override default of no subsystems# Subsystem sftp /usr/libexec/openssh/sftp-server

depois de ter feito as alterações e verificado a ortografia, vá em frente e salve as alterações. Então, reinicie sshd:

# systemctl restart sshd

testar o novo utilizador:

$ sftp nick@showmenick@showme's password:Connected to [email protected]> lsaccounting ansible fred jason kenny lisa nicksftp> pwdRemote working directory: /sftp> exit

Oops, espere apenas um minuto: parece que você pode ver todos os diretórios dos outros usuários também. No entanto, você não pode navegar para esses diretórios:

sftp> cd fredsftp> lsremote readdir("/fred"): Permission denied

Você pode direcionar o chroot de usuário para seu próprio diretório alterando o ChrootDirectory linha sshd_config arquivo como este:

ChrootDirectory /

Esta rápida mudança faz com que ele olhe para o Nick que ele está em seu próprio diretório, e ele não vai ser capaz de ver todos os outros arquivos do usuário:

sftp> pwdRemote working directory: /home/nicksftp>sftp> exit$ touch test.txt$ sftp nick@showmenick@showme's password:Connected to [email protected]> put test.txtUploading test.txt to /home/nick/test.txttest.txt 100% 0 0.0KB/s 00:00sftp> lstest.txtsftp>

para Onde foi? Olha para isto.:

# ls /home/nicktest.txt

Note que a chroot jail não é considerada por si só uma restrição de segurança adequada. Embora impeça um usuário de mudar de um diretório Restrito, existem maneiras em torno disso (a idéia geral é referida na página de homem chroot(2), que você deve dar uma olhada Se você está considerando usar este truque em um contexto crítico de produção ou de negócios.)

embrulhar(por agora)

assim, você pode ver que chroot pode ser uma ferramenta bastante útil. Na parte 2, vou olhar mais para a atribuição de diretórios específicos para os usuários, e fornecer um ambiente de shell para um usuário remoto sem expor o resto do servidor.

novo em recipientes? Descarregue o iniciador de Containers e aprenda o básico de containers Linux.

Deixe uma resposta

O seu endereço de email não será publicado.