BIND (Berkeley Internet Name Domain ou, Berkeley Internet Name Daemon) é o servidor para o protocolo DNS mais utilizado na Internet.
Um servidor DNS tem função de resolver nomes. Como assim? Toda vez que você acessa a internet, como por exemplo o Rede Underground, você não está acessando redeunderground.blogspot.com, está acessando um endereço IP formado por 4 octetos (74.125.47.132). Imagine você ter que gravar números ao invés de nomes toda vez que você quiser acessar a internet, seria complicado... pra isso você configura o DNS para resolver isso pra você.
Mas e Chroot? O que é isso?
Devido ao sua larga utilização na internet, o Bind também é sujeito à detecção de falhas por hackers que ficam o dia inteiro tentando detonar a rede dos outros. Por conta disto se inventou um jeito de limitar o acesso de um determinado serviço dentro do servidor que é chamado de chroot.
Este sistema tem o objetivo de criar um mini-ambiente contendo apenas o necessário para aquele executável rodar com o propósito de minimizar uma possível invasão ao servidor. Este conceito chama-se Jail (engaiolar mesmo) o serviço, fazendo com que ele rode em um "cantinho" isolado do sistema.
Observações:
Um servidor DNS tem função de resolver nomes. Como assim? Toda vez que você acessa a internet, como por exemplo o Rede Underground, você não está acessando redeunderground.blogspot.com, está acessando um endereço IP formado por 4 octetos (74.125.47.132). Imagine você ter que gravar números ao invés de nomes toda vez que você quiser acessar a internet, seria complicado... pra isso você configura o DNS para resolver isso pra você.
Mas e Chroot? O que é isso?
Devido ao sua larga utilização na internet, o Bind também é sujeito à detecção de falhas por hackers que ficam o dia inteiro tentando detonar a rede dos outros. Por conta disto se inventou um jeito de limitar o acesso de um determinado serviço dentro do servidor que é chamado de chroot.
Este sistema tem o objetivo de criar um mini-ambiente contendo apenas o necessário para aquele executável rodar com o propósito de minimizar uma possível invasão ao servidor. Este conceito chama-se Jail (engaiolar mesmo) o serviço, fazendo com que ele rode em um "cantinho" isolado do sistema.
Observações:
- Iremos levar em consideração que você possui uma instalação “limpa”
do S.O. Debian GNU/Linux.
Instalando o pacote
# aptitude install bind9 dnsutils
Antes de continuarmos, é necessário parar o serviço
DNS, caso contrário, poderá ocorrer um erro com a chave rndc-key.
# /etc/init.d/bind9 stop
Criando o ambiente
Em seguida, vamos criar os diretórios necessários
para o funcionamento do bind9 em chroot.
# mkdir -p
/srv/bind/etc
# mkdir -p
/srv/bind/dev
# mkdir -p
/srv/bind/var/cache/bind
# mkdir -p
/srv/bind/var/log
# mkdir -p
/srv/bind/var/run/bind/run
# touch /srv/bind/var/cache/bind/managed-keys.bind
Agora vamos mover a estrutura tradicional para o
modo chroot.
# mv /etc/bind /srv/bind/etc
Para evitar problemas com atualização do sistema operacional, crie um
link simbólico /etc/bind
para /srv/bind/etc/bind.
# ln -s /srv/bind/etc/bind /etc/bind
Em seguida, precisamos criar alguns dispositivos e
ajustar algumas permissões.
# mknod /srv/bind/dev/null c 1 3
# mknod /srv/bind/dev/random c 1 8
# chmod 666
/srv/bind/dev/null
# chmod 666
/srv/bind/dev/random
# chown -R nobody:nogroup /srv/bind/var/*
# chown -R nobody:nogroup /srv/bind/etc/bind
Configurando o modo chroot
Agora vamos configurar o bind9 para operar
em modo chroot e também configurar o syslog para logar as entradas do bind9 em
modo chroot.
Primeiramente precisamos ajustar o chroot.
# vim /etc/default/bind9
# run resolvconf?
RESOLVCONF=yes
# startup options
for the server
#OPTIONS="-u
bind"
OPTIONS="-u
nobody -t /srv/bind"
Onde:
- -u = especifica o usuário (nobody)
- -t = especifica o diretório chroot, (/var/lib/named).
Abra um terminal e digite:
# tail -f
/var/log/syslog
Esse comando permite monitorar o arquivo de logs do
syslog para verificar possíveis problemas.
Em seguida reinicie os serviços sysklogd
e bind9.
# /etc/init.d/bind9 stop
# /etc/init.d/bind9 start
Vamos verificar agora se o bind9 está
operando em modo chroot. Verifique os logs.
# tail -f
/var/log/syslog
Nov 5 09:21:55 www named[5861]: shutting down: flushing changes
Nov 5 09:21:55 www named[5861]: stopping command channel on 127.0.0.1#953
Nov 5 09:21:55 www named[5861]: stopping command channel on ::1#953
Nov 5 09:21:55 www named[5861]: no longer listening on ::#53
Nov 5 09:21:55 www named[5861]: no longer listening on 127.0.0.1#53
Nov 5 09:21:55 www named[5861]: exiting
Nov 5 09:21:58 www named[6606]: starting BIND
9.3.4-P1.1 -u nobody -t /srv/bind
Nov 5 09:21:58 www named[6606]: found 1 CPU, using 1 worker thread
Nov 5 09:21:58 www named[6606]: loading configuration from '/etc/bind/named.conf'
Nov 5 09:21:58 www named[6606]: listening on IPv6 interfaces, port 53
Nov 5 09:21:58 www named[6606]: listening on IPv4 interface lo,
127.0.0.1#53
Nov 5 09:21:58 www named[6606]: command channel listening on 127.0.0.1#953
Nov 5 09:21:58 www named[6606]: command channel listening on ::1#953
Nov 5 09:21:58 www named[6606]: zone 0.in-addr.arpa/IN: loaded
serial 1
Nov 5 09:21:58 www named[6606]: zone 127.in-addr.arpa/IN: loaded
serial 1
Nov 5 09:21:58 www named[6606]: zone 255.in-addr.arpa/IN: loaded
serial 1
Nov 5 09:21:58 www named[6606]: zone localhost/IN: loaded serial 1
Nov 5 09:21:58 www named[6606]: running
NOTE: você sabe que está em modo chroot pois aparece no log
as seguintes informações:
starting BIND 9.3.4-P1.1 -u nobody -t /srv/bind
Para testar a resolução de nomes, edite o /etc/resolv.conf
eajuste o IP do servidor DNS.
# vim /etc/resolv.conf
nameserver 127.0.0.1
E em seguida, teste!
# nslookup
www.google.com.br
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative
answer:
www.google.com.br canonical name
= www.google.com.
www.google.com canonical name =
www.l.google.com.
Name: www.l.google.com
Address: 209.85.193.99
Name: www.l.google.com
Address: 209.85.193.104
Também podemos testar com ping.
# ping
www.google.com.br
PING www.l.google.com
(209.85.193.104) 56(84) bytes of data.
64 bytes from
br-in-f104.google.com (209.85.193.104): icmp_seq=1 ttl=247 time=7.12 ms
64 bytes from
br-in-f104.google.com (209.85.193.104): icmp_seq=2 ttl=247 time=7.79 ms
64 bytes from
br-in-f104.google.com (209.85.193.104): icmp_seq=3 ttl=247 time=8.21 ms
64 bytes from
br-in-f104.google.com (209.85.193.104): icmp_seq=4 ttl=247 time=7.05 ms
--- www.l.google.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7004ms
rtt min/avg/max/mdev =
6.931/7.953/11.367/1.355 ms
Com isso, nosso servidor de DNS está configurado em
modo cache, e pronto para ser utilizado desta forma.
Configurando um domínio no Bind
A primeira etapa é configurar os arquivos do
servidor bind9.
# cd /srv/bind/etc/bind/
O primeiro arquivo a se ajustar é o named.conf.options.
Verifique as entradas necessárias para alteração no exemplo a seguir:
# vim /srv/bind/etc/bind/named.conf.options
options {
directory
"/var/cache/bind";
// forwarders
{
//
0.0.0.0;
// };
auth-nxdomain
no; # conform
to RFC1035
listen-on-v6 {
any; };
listen-on
{ 127.0.0.1/32; 72.233.78.144/29; };
allow-query
{ any; };
allow-recursion
{ 127.0.0.1/32; };
allow-transfer
{ none; };
version
"Não Disponível";
};
Em seguida, vamos editar o arquivo named.conf.local
e adicionar nosso domínio no servidor bind9.
# vim /srv/bind/etc/bind/named.conf.local
//
// Do any
local configuration here
//
// Consider
adding the 1918 zones here, if
they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "dominio.com.br" {
type
master;
file
"db.dominio.com.br";
};
Agora precisamos adicionar as entradas de domínio.
Para isso, vamos criar o arquivo.
# vim /srv/bind/var/cache/bind/db.dominio.com.br
$TTL 86400
@ IN SOA dns.dominio.com.br.
root.dns.dominio.com.br. (
2007050701 ;
Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum
; NS
@ IN NS ns1.dominio.com.br.
@ IN NS ns2.dominio.com.br.
@ IN MX 0 mail.dominio.com.br.
; NAME SERVERS
@ IN A 200.1.1.1
dns IN A 200.1.1.1
ns1 IN A 200.1.1.1
ns2 IN A 200.1.1.2
; MAIL
mail IN A 200.1.1.2
smtp IN CNAME mail
pop IN CNAME mail
webmail IN CNAME mail
; WEB
www IN A 200.1.1.3
ftp IN CNAME www
Com isso, já podemos reiniciar o serviço bind9
e testar.
# /etc/init.d/bind9 restart
E para finalizar, vamos testar
# nslookup
www.dominio.com.br
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative
answer:
Name: www.dominio.com.br
Address: 200.1.1.3
Fonte:FabricioVC
Nenhum comentário:
Postar um comentário