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.

[ Hits: 21.625 ]

Por: Gustavo Dorneles de Castro em 14/01/2012


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/
    Próxima página

Páginas do artigo
   1. Download, instalação e preparando o ambiente
   2. Configuração básica do Squid
   3. Permissões, criação dos diretórios e execução
Outros artigos deste autor

Instalação do Samba-3.6.1 + Kerberos + Winbind no Slackware 13.1.0

Leitura recomendada

Squid - Níveis de bloqueio para usuários

Squid + Winbind + Samba no AD - Autenticando por grupos

Compilação do Squid 3 no Debian Wheezy

Squid 2.6 + HTB-tools com cache full

Squid - Bloqueando definitivamente o MSN Messenger e Orkut

  
Comentários
[1] Comentário enviado por removido em 14/01/2012 - 14:03h

Bom dia amigo,

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

[2] Comentário enviado por gustavo.dorneles em 14/01/2012 - 15:43h

Edson,

Para inicialização do squid poderá ser feito um script simples, sempre utilizando o comando chroot para manipular o squid. Para parar o serviço você pode utilizar:

chroot /usr/local/squid/ sbin/squid -f etc/squid.conf -k shutdown

Bem como outras opções que podem ser vistas com:

chroot /usr/local/squid/ sbin/squid -f etc/squid.conf --help

Neste ambiente chroot não deve haver shell ativo, apenas o executável do squid e outros binários relacionados à ele. Logo, o ambiente chroot existirá apenas enquanto houver processos do squid rodando dentro dele.

Att.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts