Encapsulando BIND 9 e Apache 2 para obter maior segurança

Utilizar encapsulamento (uma técnica de chroot) aumenta a segurança do servidor, pois, caso um invasor consiga explorar alguma vulnerabilidade do programa, o meliante não conseguirá ter controle total sobre o sistema.

[ Hits: 17.102 ]

Por: Buckminster em 13/01/2014


BIND 9



Atualizando:

# aptitude safe-upgrade
# apt-get update


Instalando pacotes necessários:

# aptitude install binutils debootstrap  # Opcional

Instalando o BIND 9:

# aptitude install bind9 bind9-doc dnsutils

Após a instalação, pare o serviço (caso você já tenha o BIND 9 instalado, pare o serviço também):

# /etc/init.d/bind9 stop
Ou:
# service bind9 stop

Edite o arquivo /etc/default/bind9:

# vim /etc/default/bind9  # Usei o Vim, use seu editor de textos preferido

Adicione os parâmetros na linha OPTIONS="-u bind", devendo ficar assim:

OPTIONS="-u bind -t /var/lib/bind -t /var/lib/named"

Salve e saia.

Abaixo, está a sequência toda de comandos e depois, uma modesta explicação:

# mkdir -p /var/lib/named/etc
# mkdir /var/lib/named/dev
# mkdir -p /var/lib/named/var/cache/bind
# mkdir -p /var/lib/named/var/run/bind/run
# mkdir -p /var/lib/named/usr/sbin
# mv /etc/bind /var/lib/named/etc
# ln -s /var/lib/named/etc/bind /etc/bind
# mv /usr/sbin/named /var/lib/named/usr/sbin
# ln -s /var/lib/named/usr/sbin/named /usr/sbin/named
# mv /etc/init.d/bind9 /var/lib/named
# ln -s /var/lib/named/bind9 /etc/init.d/bind9
# mknod -m 666 /var/lib/named/dev/null c 1 3
# mknod -m 666 /var/lib/named/dev/zero c 1 5
# mknod -m 666 /var/lib/named/dev/random c 1 8
# chown -R bind:bind /var/lib/named/var/*
# chown -R bind:bind /var/lib/named/etc/bind
# chown -R bind:bind /var/lib/named/usr/sbin/named


Inicie o BIND:

# /etc/init.d/bind9 start
Ou:
# service bind9 start

Deverá iniciar sem erros.

Poderemos acessar os arquivos de configurações em /var/lib/named/etc/bind, ou no local padrão /etc/bind, tanto faz.

Para entendermos as linhas de comandos, veremos umas explicações sobre os parâmetros.

1. A linha OPTIONS em /etc/default/bind9:

OPTIONS="-u bind -t /var/lib/bind -t /var/lib/named"

Onde:
  • A opção "-u arquivo", é uma expressão condicional em Shell Script que verifica se o arquivo existe e se o bit SUID (Set-User-ID), está ativado.
  • A opção "-t arquivo", é uma expressão condicional que verifica se o FD (File DescriptorDescritor do Arquivo) está aberto e refere-se a um terminal.
  • Um Descritor de Arquivos em Linux, é um indicador utilizado para acessar um arquivo. Quando um processo precisa acessar um arquivo, ele faz isso através do descritor do arquivo, que é um número inteiro positivo, e o processo usa para referenciar um determinado arquivo aberto.

O shell define três descritores de arquivos muito importantes:
  • A entrada padrão (stdin): é o descritor de arquivo de onde um aplicativo lerá a entrada de dados se não for informado outro descritor de arquivos específico. Está normalmente associada ao terminal de entrada, geralmente o teclado.
  • A saída padrão (stdout): é o descritor onde será colocada a saída de qualquer aplicativo, se outro específico não for informado. Normalmente associada ao terminal de saída, o vídeo.
  • A saída de erro padrão (stderr): é onde são escritos os erros decorrentes do processamento. Está separada da saída padrão para que os possíveis erros ou avisos não contaminem os resultados em si. Também está associada ao terminal de saída.

2. O comando "mkdir -p" (--parents) cria diretórios, se já não existirem, e ignora argumentos de diretórios que já existem. Por exemplo, se o diretório /var existe, então "mkdir /var" vai provocar um erro, mas "mkdir -p /var" não vai provocar um erro, porém, irá ignorar os argumentos (permissões, donos, etc.) existentes no diretório.

3. O comando "mknod" cria discos candidatos, no caso, para os serviços do sistema operacional (../dev/null, ../dev/random, ../dev/zero, etc). É usado para criar manualmente um arquivo especial de dispositivo dos tipos caractere ou bloco.

Os dispositivos de bloco são os que trabalham com armazenamento de dados, como unidades de disco rígido, CD-R/RW, disquete e etc, e utilizam buffer. Os dispositivos de caractere não trabalham com buffer, utilizando transferência direta.

Um arquivo especial é um triplo (booleano, inteiro, inteiro) armazenado no sistema de arquivos. O booleano escolhe entre um arquivo especial de caractere ou de bloco. Os dois inteiros são o maior e o menor número de dispositivo.

O argumento seguinte ao nome, especifica o tipo de arquivo a ser criado:
  • p - Para um FIFO
  • b - Para um arquivo especial de bloco (com buffer)
  • c - Para um arquivo especial de caractere (sem buffer)

A opção "c" cria um arquivo especial de caractere sem buffer e os dois números inteiros são o maior e o menor número de dispositivo, respectivamente (c 1 3 e c 1 8). Caso fôssemos criar um dispositivo de bloco, colocaríamos a opção "b", mas não foi o caso.

Assim, um arquivo especial quase não ocupa lugar no disco, e somente é utilizado para comunicação com o sistema operacional, e não para a armazenagem de dados.

A opção "-m 666" funciona como "chmod", ou seja, com essa opção, o "mknod" cria o arquivo com as permissões 666.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. BIND 9
   3. Apache 2
   4. Conclusão
Outros artigos deste autor

Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

Permissões do Linux

Redes de Computadores · IPtables · Endereços IPs - Explicações básicas

Instalar Minecraft, League of Legends e Fortnite no Linux

Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

Leitura recomendada

Resenha do livro: Praticando a Segurança da Informação

Bloqueio de repetidas tentativas de login ao seu Linux

Enviando e recebendo e-mails criptografados através do Thunderbird

Controle de conteúdo: Como proteger seus usuários deles mesmos

Bloqueio de Países com IPTables

  
Comentários
[1] Comentário enviado por xjc em 15/01/2014 - 20:46h

artigo incompleto . faltou instalar o tal jaula ou explicar . e explicar os comandos .

[2] Comentário enviado por Buckminster em 15/01/2014 - 21:55h


[1] Comentário enviado por xjc em 15/01/2014 - 20:46h:

artigo incompleto . faltou instalar o tal jaula ou explicar . e explicar os comandos .


Por gentileza, leia o artigo inteiro.

[3] Comentário enviado por cromado em 17/01/2014 - 21:46h

Instalar o tal "jaula" é de foder heinn ahueuuuhaehaue.
Mas de fato, eu achei a explicação confusa em relação ao encapsulamento, jaula, chroot, whatever.
Nada que um google não resolva, mas cara iniciante vai se perder sobre o funcionamento da coisa.

[4] Comentário enviado por Buckminster em 18/01/2014 - 05:51h


[3] Comentário enviado por cromado em 17/01/2014 - 21:46h:

Instalar o tal "jaula" é de foder heinn ahueuuuhaehaue.
Mas de fato, eu achei a explicação confusa em relação ao encapsulamento, jaula, chroot, whatever.
Nada que um google não resolva, mas cara iniciante vai se perder sobre o funcionamento da coisa.


Concordo. Mas subentende-se que para ""encapsular" qualquer programa através dessa técnica, o cara já tenha algum conhecimento de GNU/Linux. Ou seja, o cara já saiba instalar e configurar o programa desejado. E, para tanto, ele já deve possuir algum conhecimento, não tanto de comandos, mas de entendimento sobre o funcionamento do Linux.

Eu não quis me estender, pois daí o artigo se tornaria muito extenso. O ponto é justamente o funcionamento da coisa, e isso não tem como ensinar em um único artigo.
E, como você disse, mesmo um iniciante, com alguma boa vontade, nada que um Google não resolva.


[5] Comentário enviado por px em 19/01/2014 - 04:49h

O ideal seria encapsular todo o computador! rsrs

Tem um "programa" chamado SELinux que faz um ótimo acréscimo á segurança no linux, talvez um tema para um futuro artigo! - mas como foi "criado" pela NSA e devido aos últimos acontecimentos... + minha preguiça fatídica ao escrever! KKKK

Ótimo artigo novamente, nota 10!



PS: To esperando aquele artigo voltado no Assembly, sem pressa brow... mas se apresse! rsrs

[6] Comentário enviado por Buckminster em 19/01/2014 - 20:30h


[5] Comentário enviado por px em 19/01/2014 - 04:49h:

O ideal seria encapsular todo o computador! rsrs

Tem um "programa" chamado SELinux que faz um ótimo acréscimo á segurança no linux, talvez um tema para um futuro artigo! - mas como foi "criado" pela NSA e devido aos últimos acontecimentos... + minha preguiça fatídica ao escrever! KKKK

Ótimo artigo novamente, nota 10!



PS: To esperando aquele artigo voltado no Assembly, sem pressa brow... mas se apresse! rsrs


Estou elaborando ele. Não me esqueci não.

[7] Comentário enviado por JJSantos em 15/11/2014 - 22:53h

Tal jaula! Sujeito sumido kkkk


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts