Instalação do Squid 3.2.0.14 no Slackware com execução em ambiente chroot
Tutorial mostrando uma instalação do software Squid no sistema Slackware e sua execução em um ambiente chroot. Onde será criado um sistema raiz separado do original, apenas para execução dos processos gerados pelo Squid, com o intuito de fornecer um nível elevado de segurança e proteção aos arquivos do sistema.
Download, instalação e preparando o ambiente
Download e instalação do Squid
O Squid poderá ser baixado na página de downloads do site oficial do projeto:# cd /usr/local/src
# wget http://mirrors.ccs.neu.edu/Squid/squid-3.2.0.14.tar.gz
# tar zxvf squid-3.2.0.14.tar.gz
# cd squid-3.2.0.14
# ./configure
# make
# make install
Preparando o ambiente para execução em modo chroot
Preparando o ambiente para execução em modo chroot# cd /usr/local/squid
# ls
Ao entrarmos no diretório criado pela instalação do Squid e listar o seu conteúdo, poderemos ver que foi criada uma estrutura de diretórios semelhante a que temos na raiz de nosso sistema:
bin/ etc/ include/ lib/ libexec/ sbin/ share/ var/
Porém dentro destas pastas estão contidos apenas arquivos ligados ao Squid, dos quais seu funcionamento é dependente. Como principais, temos o executável do Squid que encontra-se no diretório "sbin", seus arquivos de configuração que encontram-se no diretório "etc" e seus arquivos de cache e log no diretório "var".
O primeiro passo para realizarmos a configuração do sistema raiz no qual será executado o Squid será a descoberta das bibliotecas compartilhadas utilizadas pelo software. Para isso iremos recorrer ao programa "ldd", o que irá nos listar todas as bibliotecas utilizadas pelo executável "squid" localizado na pasta "sbin".
Após, estas bibliotecas serão copiadas para dentro da estrutura de diretórios criada pela instalação do Squid, exatamente da mesmo forma como estão em nosso sistema raiz padrão.
# ldd sbin/squid
A saída seria:
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb77a0000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb776d000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb767d000)
libnsl.so.1 => /lib/libnsl.so.1 (0xb7664000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb764c000)
librt.so.1 => /lib/librt.so.1 (0xb7643000)
libltdl.so.7 => /usr/lib/libltdl.so.7 (0xb763b000)
libdl.so.2 => /lib/libdl.so.2 (0xb7637000)
libm.so.6 => /lib/libm.so.6 (0xb7611000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb75f4000)
libc.so.6 => /lib/libc.so.6 (0xb7490000)
/lib/ld-linux.so.2 (0xb77d2000)
Antes de iniciar a cópia das bibliotecas, precisaremos criar a estrutura "usr/lib", para que possamos copiar algumas das bibliotecas mostradas acima, mantendo seu padrão estrutural.
# mkdir -p usr/lib
Obs.: As bibliotecas serão copiadas com exceção de linux-gate.so.1, por não tratar-se de um arquivo.
# cp /lib/libpthread.so.0 lib/
# cp /lib/libcrypt.so.1 lib/
# cp /usr/lib/libstdc++.so.6 usr/lib/
# cp /lib/libnsl.so.1 lib/
# cp /lib/libresolv.so.2 lib/
# cp /lib/librt.so.1 lib/
# cp /usr/lib/libltdl.so.7
# cp /usr/lib/libltdl.so.7 usr/lib/
# cp /lib/libdl.so.2 lib/
# cp /lib/libm.so.6 lib/
# cp /usr/lib/libgcc_s.so.1 usr/lib/
# cp /lib/libc.so.6 lib/
# cp /lib/ld-linux.so.2 lib/
Para execução do Squid usaremos o usuários e grupo de nome "squid". Os quais deverão ser criados no sistema, preferencialmente sem shell de execução.
# useradd -s /bin/false squid
Além das bibliotecas, mais alguns arquivos terão que ser copiados de nosso sistema padrão para o ambiente chroot onde será executado o Squid. Entre eles teremos os arquivos /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow e /etc/resolv.conf. Mantendo também a mesma estrutura da raiz padrão do sistema.
# cp /etc/passwd etc/
# cp /etc/shadow etc/
# cp /etc/group etc/
# cp /etc/gshadow etc/
# cp /etc/resolv.conf etc/
O mais importante, será editarmos estes quatro arquivos deixando-os apenas com as informações ligadas ao usuário e grupo squid. Pois é apenas o que será necessário para execução da aplicação.
# vim etc/passwd
squid:x:1001:1001::/home/squid:/bin/false
# vim etc/shadow
squid:!:15329:0:99999:7:::
# vim etc/group
squid:x:1001:# vim etc/gshadow
squid:!::
Para que o usuário e grupo squid sejam realmente reconhecidos como válidos dentro do ambiente chroot, será necessário copiáramos as bibliotecas do Name Service Switch (NSS) para dentro de nossa estrutura.
# cp /lib/libnss_* lib/
Também é utilizado pelo Squid o dispositivo nulo dev/null e o dispositivo de memória compartilhada dev/shm.
Os quais poderão ser criados da seguinte maneira:
Criaremos a pasta dev dentro de /usr/local/squid e montaremos o sistema de arquivos /dev dentro desta pasta:
# mkdir dev
# mount -o bind /dev dev/
belo artigo vou testar e vê se funciona,
Porém mesmo não testando fiquei com uma dúvida, após reiniciar o servidor que está rodando o serviço em chroot, terei que executar o serviço manualmente ou fazse ndo um script para automatizar ou ele vai iniciar em chroot automaticamente ?
e para parar o serviço qual comando uso, pois para carregar as configurações você usou o -k reconfigure após o arquivo de configuração ?
Se usar um exit para sair do chroot o squid vai continuar executando em chroot ?
fico grato pelo seu retorno