Como atribuir um IP / hostname adicional a um ambiente chrooted?

5

Embora eu possa simplesmente ter, por exemplo sshd em um ambiente chroot ("chrootenv") escuta uma porta diferente de seu pai ("parentenv"), seria mais conveniente que esse ambiente tivesse um IP e um nome de host adicionais e tivesse sshd listen to essa porta 22 do IP. Então, basicamente, eu gostaria de configurar um ambiente chroot de tal forma que ele se comportasse como um host separado na rede. Como isso pode ser alcançado? Ou isso é algo LXC ou no modo de usuário Linux (que eu não tenho experiência com) é mais adequado para?

    
por Tobias Kienzler 04.11.2013 / 14:50

2 respostas

7

Normalmente, o chroot trata de "limitar privilégios", não concedendo aos usuários seu próprio IF para jogar com ...

Mas em qualquer caso: se você sentir vontade de fazer algum trabalho, você pode iniciar seu ambiente chroot dentro de um novo namespace de rede. Você encontra uma introdução aqui . Então o último comando, aquele que coloca você no novo namespace de rede, que no guia acima é

 ip netns exec NAME_OF_THE_NET_NS /bin/bash

pode ser seguido pelo conjunto usual de comandos,

sudo mount -o bind /proc /pathtochroot/proc
sudo mount -o bind /dev /pathtochroot/dev
sudo mount -o bind /dev/pts /pathtochroot/dev/pts
sudo mount -o bind /sys /pathtochroot/sys
sudo chroot /pathtochroot /bin/bash

e agora você tem seu chroot com um IF.

Mas a pergunta que se segue é: você não acha que usar um contêiner Linux (LXC, OpenVZ, VServer) seria mais rápido e simples? Não é um chroot com uma interface a mesma coisa que um container Linux? Geralmente, quando questões de segurança não são preocupantes, é assim que eu vou.

Editar:

Ok, eu vejo sua situação. Ainda assim, existe uma possibilidade. Faça duas interfaces virtuais no mesmo cartão e certifique-se de que ambas obtenham um endereço IP do seu DHCP. Agora configure o ssh para ligar a um deles. Você pode fazer isso tanto para o cliente ssh quanto para o servidor ssh. Para o cliente, a instrução é

 ssh -b ip.address.tobin.to

enquanto para o servidor você precisa usar a instrução

 ListenAddress ip.address.tobind.to

no arquivo / etc / ssh / sshd_config. Dessa forma, você forçou o host a usar apenas uma interface. Em seguida, insira a jaula chroot e use a interface other . Estou instável com as capacidades do busybox, portanto não posso afirmar categoricamente que isso funcionará. Mas funcionaria, se isso fosse uma prisão chroot em um computador normal.

    
por 04.11.2013 / 16:55
0

Esta ferramenta pode ser útil:

chname Run command or interactive shell with a new system hostname

SYNOPSIS

chname hostname [command ...] DESCRIPTION

Create a new utsname namespace with a new system hostname and execute command. This is particularly useful for creating a chroot that has a hostname independent of the rest of the system.

This capability requires Linux 2.6.19 or later with CONFIG_UTS_NS=y.

funciona como um encanto. A vantagem sobre a receita na resposta proposta por @MariusMatutiae é que ela não requer a configuração de namespace (add veth's e.t.c). A desvantagem - não permite atribuir um endereço IP separado ao ambiente chrooted

    
por 18.05.2016 / 21:07