MEET Mestrado em Engenharia de Electrónica e Telecomunicaçãoes IRS – Integração de Redes e Serviços Elaborado por: Pedro Ponte 22595 IRS – Integração de Redes e Serviços Índice de conteúdos Introdução..........................................................................................................................3 Instalação da máquina virtual............................................................................................3 Preparar ambiente.....................................................................................................3 Criar ambiente não volátil........................................................................................4 Criar partições.................................................................................................4 Criar sistema de ficheiros...............................................................................4 Instalar ficheiros do sistema...........................................................................5 Configura o Portage........................................................................................6 Comutar para o novo ambiente................................................................................6 Actualizar o Portage.......................................................................................6 Instalar Sources do Kernel..............................................................................7 Gerar o kernel.................................................................................................7 Gerir os módulos do kernel.............................................................................7 Ficheiro fstab..................................................................................................7 Boot Loader....................................................................................................7 Informação de sistema....................................................................................8 Configuração das interfaces de rede..................................................................................8 Suporte para IPv4..............................................................................................................9 Configurar o servidor de DHCP...............................................................................9 Configurar OSPFv4................................................................................................10 Suporte para IPv6............................................................................................................10 Configurar o servidor de DHCP.............................................................................10 Configurar OSPFv6................................................................................................11 Radius..............................................................................................................................12 Configuração do Servidor......................................................................................12 Parâmetros gerais..........................................................................................13 Configuração das redes a servir....................................................................13 Utilizadores...................................................................................................13 Autenticação.................................................................................................14 Configuração do Cliente........................................................................................14 Servidor DNS..................................................................................................................15 Insatalação do servidor ..........................................................................................16 TSIG para actualização dinâmica...........................................................................16 Suporte de DDNS.........................................................................................16 Transferência de zona...................................................................................17 Ficheiros de configuração......................................................................................19 Zonas de pesquisa directa.............................................................................21 Zonas de pesquisa inversa.............................................................................22 IRS – Integração de Redes e Serviços Introdução A elaboração deste trabalho tem como intuito a aplicação prática de conhecimentos de protocolos e tecnicas de redes, supostamente adquiridos em unidades curriculares anteriores, num ambiente virtual. O ambiente virtual foi implementado recorrendo ao VirtualBox e o sistema operativo adoptado foi o Gentoo. O Gentoo é uma distribuição baseada no gerenciador de pacotes portage que se baseia em scripts bash denominados por ebuilds que são executados pela sua principal ferramenta emerge. Instalação da máquina virtual O primeiro passo para a instalação da máquina virtual, que corresponde ao nosso target, consiste em criar uma máquina virtual no VirtualBox. As características da máquina a criar devem respeitar, no mínimo, os requisitos especificados pelo Handbook do Gentoo, desta forma iremos criar uma máquina com 8GB de disco rígido e 512 MB de RAM. O passo seguinte corresponde a escolher o suporte de instalação que, de entre as várias opções disponíveis, iremos optar por efectuar download do CD de instalação mínimo. Dos vários mirrors disponíveis iremos escolher o IST para efectuar o download, mais concretamente através do link http://darkstar.ist.utl.pt/gentoo/releases/x86/autobuilds/current-stage3-i686/stage3-i68620101207.tar.bz2. Ao arrancar a máquina virtual com o suporte de instalação mínimo, este disponibiliza uma imagem de disco que irá ser descomprimido pelo boot loader e colocado em memória RAM, montado no sistema de ficheiros tmpfs. Esta imagem, colocada em RAM, cria um ambiente de trabalho com os recursos mínimos e com um caracter volátil, ou seja, se reenicializarmos a máquina esta volta ao seu estado original. A estratégia a seguir num ambiente de instalação destes será adicionar os recursos adicionais e indispensáveis à instalação para se proceder à instalação de um ambiente não volátil. Preparar ambiente Depois de inicializar a máquina com a imagem podemos verificar que esta não dispõe de alguns recursos necessários à instalação pelo que teremos de os instalar. Para instalar a interface de rede eth0 podemos recorrer ao script net-setup por forma a termos conectividade IP. Por outro lado, se pretendermos trabalhar num ambiente mais agradável, como por exemplo ssh, primeiro teremos de redefenir a palavra passe do utilizador root através do utilitário passwd e iniciar o deamon sshd através do comando /etc/init.d/sshd start. IRS – Integração de Redes e Serviços Depois destes procedimentos poderemos aceder à máquina através de qualquer aplicação cliente de ssh recorrendo ao comando ifconfig para determinar o endereço IP da interface eth0. Criar ambiente não volátil O passo que se se segue prende- se em criar as condições para instalação de um ambiente não volátil da máquina. Criar partições As particões do sistema são um passo muito importante uma vez que vai afectar o desempenho da máquina e depende da finalidade que se pretende dar à máquina. Um maior número de partições irá permitir defenir o sistema de ficheiros que mais se adequa a cada ponto de montagem e os procedimentos de verificação do sistema de ficheiros são mais rápidos. Também se colocarmos o sistema operativo numa partição distinta a probabilidade de o estrangular será inferior. Para a máquina iremos particionar o disco da seguinte forma: Partição Sistema de ficheiros Dimensão Montagem /dev/sda1 ext2 32M /boot /dev/sda2 swap 1024M /dev/sda3 ext3 Restante /root As particções do disco, de 8GB, podem ser criadas com o utilitário fdisk indicando como argumento da linha de comandos o disco /dev/sda, ou seja, fdisk /dev/sda. Este utilitário disponibiliza as funcionalidades de listar, criar e eliminar particões através das opções p, n e d respectivamente. Para defenir a partição de boot recorre- se à opção a e selecciona- se a partição que, sendo a primeira a criar, será a partição 1. Para defenir uma partição swap recorre- se à opção t e selecciona- se a partição que, sendo a segunda a criar, será a partição 2. Para sair do utilitário e guardar a configuração gerada recorre- se à opção w. Criar sistema de ficheiros Depois de criar as partições é necessário criar o sistema de ficheiros nas mesmas. Tal como consta no quadro sintese do tópico anterior, iremos criar partição /dev/sda1 com o sitema de ficheiros ext2 e a partição /dev/sda3 com o sistema de ficheiros ext3. Este procedimento é efectuado recorrendo ao utilitário /sbin/mke2fs indicando no argumento a partição alvo, e no caso de ext3 terá de se indicar também a opção -j para activar a funcionalidade de journal que caracteriza este sistema de ficheiros. IRS – Integração de Redes e Serviços No caso da partição swap, terão de ser invocados os utilitários /sbin/mkswap e /sbin/swapon para inicializar e activar a partição swap (/dev/sda2). Partição Sistema de ficheiros Comando Montagem /dev/sda1 ext2 mke2fs /dev/sda1 /boot /dev/sda2 swap mkswap /dev/sda2 swapon /dev/sda2 /dev/sda3 ext3 mke2fs -j /dev/sda3 /root Instalar ficheiros do sistema Para instalar o sitema operativo Gentoo no sistema de ficheiros anteriormente criado, em primeiro teremos de montar as particções. Recorde- se que foram criadas duas partições para o sistema operativo, nomeadamente /dev/sda1 que vai ser montado em /boot e /dev/sda3 para montar em /root. O directório raiz /boot irá ser instalada a imagem do kernel e o boot loader e os restantes ficheiros que constituem o sistema operativo serão mantidos no directório raiz /root. Durante a instalação do sistema operativo os directórios raiz /boot e /root irão residir em /mnt/gentoo por forma a manter a hierarquia FHS (Filesystem Hierarchy Standard), que pode ser consultado em http://www.pathname.com/fhs. Para montar as partições recorre- se ao utilitário mount indicando a partição e ponto de montagem como argumentos da linha de comandos. Uma vez que o directório /mnt/gentoo já está criado basta criar o directório /boot com o comando mkdir /mnt/gentoo/boot. Partição Comando Montagem /dev/sda1 mount /dev/sda1 /mnt/gentoo/boot /boot /dev/sda3 mount /dev/sda3 /mnt/gentoo /root Antes de proceder com a instalação é aconselhável acertar a data do sistema com o utilitário date MMDDhhmmYYYY. Para efectuar o download dos ficheiros do sistema operativo devemos colocar a linha de comandos no directório raiz da máquina /mnt/gentoo e recorrer ao utilitário links para seleccionar o mirror ( links http://darkstar.ist.utl.pt/gentoo/releases/x86/currentstage3/stage3-i686-20101221.tar.bz2 ). De seguida procede- se à descompressão recorrendo ao utilitáriotar ( tar xvjpf stage3i686-20101221.tar.bz2 ). Esta desconpressão irá originar a criação do sistema de ficheiros do target em confirmidade com a hierarquia FHS. IRS – Integração de Redes e Serviços Configura o Portage O Portage é um conjunto de utilitários que visam automatizar o processo de instalação, actualização ou desisntalação de software de forma consistente. De seguida, à semelhança do passo anterior, iremos efectuar o download do Portage através do comando links http://darkstar.ist.utl.pt/gentoo/releases/snapshots/current/portage-latest.tar.bz2 e descomprimir com tar xvjf portage-latest.tar.bz2 -C /mnt/gentoo/usr/. O Portage utiliza a variável GENTOO_MIRROS do ficheiro make.conf que está no directório /mnt/gentoo/etc para determinar qual o mirror a utilizar. O utilitário mirrorselect pode ser utilizado para configurar esta variável de uma forma gráfica mirrorselect -i -o >> /mnt/gentoo/etc/make.conf. Outra variável do ficheiro make.conf, também utilizada pelo Portage é SINC que determina o servidor rsync utilizado para actualizar a àrvore de aplicações disponíveis para instalação. Esta variável também pode ser configurada recorrendo ao utilitário mirrorselect da seguinte forma:mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf. Comutar para o novo ambiente Antes de mudar para o ambiente que foi criado nos tópicos anteriores teremos de copiar o ficheiro de configuração de DNS, para que a conectividade se mantenha, através do comando cp -L /etc/resolv.conf /mnt/gentoo/etc/. Também será necessário montar os sistemas de ficheiros /proc e /dev pois sem estes o novo ambiente não terá autonomia para funcionar uma vez que, a título de exemplo, o sistema de ficheiros /dev contém os device nodes e sem eles o sistema não reconhece os periféricos da máquina. Para montar estes sistemas de ficheiros procedemos conforme o quadro sintese que se segue: Comando Montagem mount -t proc none /mnt/gentoo/proc /proc mount -o bind /dev /mnt/gentoo/dev /dev Note- se que os directórios /proc e /dev foram criados aquando a descompressão dos ficheiros de sistema. A comutação de ambiente é feita com o recurso ao comando chroot, que significa change root, e consiste na mudança do directório root da consola onde estamos a trabalhar e, consequentemente, todos os processos lançados na mesma. Desta forma, pretende- se comutar o directório root para o directório /mnt/gentoo uma vez que foi neste directório que montamos as partições anteriormente criadas, e após executarmos o comando chroot /mnt/gentoo /bin/bash esta deve ser a nossa raiz ficando disponível o sistema de ficheiros anteriormente criado. Também devem ser executados os seguintes comandos env-update, source /etc/profile e export PS1="(chroot) $PS1". Actualizar o Portage Este passo consiste na aplicação prática da variável SYNC anteriormente referida e é conseguido através do comando emerge –sync. IRS – Integração de Redes e Serviços Instalar Sources do Kernel O Gentoo disponibiliza uma série de pacotes com as sources do kernel para diversas arquitecturas com suporte para porting para arquitecturas mais específicas. Para instalar as sources recorre- se ao comando emerge gentoo-sources. As sources do kernel são instaladas no directório /usr/src/. Se executarmos o comando ls /usr/src -all podemos verificar que foi criado o directório linux-2.6.36-gentoo-r5 e um link simbólico para linux que nos permite trabalhar com versões de kernel distintas alterando apenas o link. Gerar o kernel A configuração do kernel pode ser feita de uma forma manual, normalmente utilizada para arquitecturas mais específicas, nomeadamente quando se pretende efectuar porting do Gentoo, ou então de forma automática através do utilitário genkernel. Para instalar o utilitário genkernel recorre- se ao comando emerge genkernel. O genkernel utiliza o ficheiro de configuração do kernel /usr/share/genkernel/arch/x86/kernel-config pelo que devemos disponibilizar o ficheiro utilizado pela imagem utilizada para o arranque inicial da máquina recorrendo ao comando zcat /proc/config.gz /usr/share/genkernel/arch/x86/kernel-config. O comando genkernel all irá gerar a imagem do kernel e o ramdisk inicial no directório /boot bem como os respectivos módulos no directório /lib/modules. Gerir os módulos do kernel Os módulos são pacotes de software que são gerados na compilação do kernel e cuja configuração define- os como parte não integrante da sua imagem. Estes pacotes, apesar de estarem presentes no sistema podem, ou não, ser carregados durante a inicialização do kernel. Esta gestão é feita indicando no ficheiro /etc/modules.autoload.d/kernel2.6. Ficheiro fstab O ficheiro /etc/fstab é responsável por guardar informação sobre as partições , respectivos sistemas de ficheiros e pontos de montagem. /dev/sda1 /boot ext2 defaults,noatime 1 2 /dev/sda2 none swap sw 00 /dev/sda3 / ext3 noatime 01 /dev/cdrom /mnt/cdrom auto noauto,user 00 proc /proc proc defaults 00 shm /dev/shm tmpfs nodev,nosuid,noexec 0 0 Ficheiro /etc/fstab Boot Loader Para as funcionalidades de boot loader iremos optar pelo GRUB pelo que para instalar recorre- se ao comando emerge grub. O ficheiro de configuração do GRUB é /boot/grub/grup.conf, e de seguida podemos ver o mesmo: IRS – Integração de Redes e Serviços default 0 timeout 30 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 2.6.34-r1 root (hd0,0) kernel /boot/kernel-genkernel-x86-2.6.36-gentoo-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 initrd /boot/initramfs-genkernel-x86-2.6.36-gentoo-r5 Ficheiro de configuração do GRUB Informação de sistema Defenir palavra passe do utilizador Recorrer ao utilitário passwd Configuração do layout do teclado Defenido no ficheiro /etc/conf.d/keymaps Informações genéricas do sistema Defenidas no ficheiro /etc/rc.conf Configuração das interfaces de rede Com vista a dar suporte à virtualização de um ambiente que nos permitisse a emulação de um router a máquina virtual, que corresponde ao nosso target, dispõe de duas interfaces ethernet. A interface externa eth0 foi configurada no modo bridge por forma a utilizar a interface do host para aceder ao mundo externo da rede. Por outro lado, a interface interna eth1, que tem como objectivo fornecer conectividade ao host através do target, foi configurada no modo host only. Desta forma, se desactivarmos os protocolos TCP/IP na interface do host, o único caminho possível entre o host e o mundo exterior é feito através do target, conseguindose um ambiente de emulação entre duas redes distintas interligadas pelo target que, por sua vez, disponibiliza uma série de serviços indispénsáveis às redes locais actuais. Para activar ambas as interfaces de rede no arranque da máquina deve- se criar um symbolic link, para cada uma das interfaces, no directório /etc/init.d para o script responsável pela inicialização das interfaces ethernet net.lo. Depois de criar os symbolic links, estes devem ser adicionados ao default runlevel para que sejam incluidos no processo de arranque do kernel. cd /etc/init.d ln -s net.lo net.eth0 ln -s net.lo net.eth1 IRS – Integração de Redes e Serviços rc-update add net.eth0 defaul rc-update add net.eth1 defaul A configuração das interfaces ethernet é feita no ficheiro /etc/conf.d/net. Tal como referido anteriormente a interface externa é eth0 e está configurada para obter endereço por DHCP. Por outro lado, a interface interna eth1 tem endereços fixos em conformidade com o bloco atribuido para ambas as versões IPv4 e IPv6. config_eth0=( "dhcp" ) config_eth1=( "10.62.203.126/28" "2001:690:2008:cfa0::1/64" ) Suporte para IPv4 Configurar o servidor de DHCP Para implementar o servidor de DHCP é necessária a instalação do pacote dhcp recorrendo ao comando emerge -av dhcp. No ficheiro /etc/conf.d/dhcpd, mais concretamente no parâmetro DHCPD_IFACE, defenir qual a interface que o deamon dhcpd deve atender a pedidos de DHCP, que neste caso concreto é a interface eth1. A configuração do deamon dhcpd é feita no ficheiro /etc/dhcp/dhcpd.conf option domain-name-servers 193.137.220.19, 193.137.220.20; default-lease-time 600; max-lease-time 7200; subnet 10.62.203.112 netmask 255.255.255.240 { range 10.62.203.113 10.62.203.125; #option domain-name-servers 193.137.220.20; #option domain-name "mynet.local"; option domain-name-servers 10.62.203.126; option domain-name "g7.lrcd.local"; option routers 10.62.203.126; #option broadcast-address 10.62.203.127; default-lease-time 600; max-lease-time 7200; } Depois de concluida a configuração do deamon é necessário adicionar ao arranque do kernel através do comando rc-update add dhcpd default. IRS – Integração de Redes e Serviços Configurar OSPFv4 O serviço OSPFv4, com vista a dar suporte de routing, foi implementado recorrendo ao quagga, instalado com o comando emerge -av quagga.e adicionando o deamon ospfd ao arranque do kernel com o comando rc-update add ospfd default. A interface de configuração do quagga está acessível através da aplicação vtysh e a sintaxe de configuração é igual à dos equipamentos cisco. De seguida podemos visualizar o excerto da configuração do quagga referente às configurações de OSPFv4. localhost# show running-config Building configuration... Current configuration: ! interface eth0 ip ospf message-digest-key 20 md5 mesmosimples ! interface eth1 ! interface lo ! router ospf network 10.62.75.0/24 area 0.0.0.75 network 10.62.203.112/28 area 0.0.0.75 area 75 authentication message-digest ! ip forwarding ! line vty ! Quagga - OSPFv4 Suporte para IPv6 Configurar o servidor de DHCP Com vista va implementar um servidor de DHCP para IPv6 optamos por utilizar o quagga uma vez que o pacote dhcp comporta- se de forma instavél para este tipo de serviços. Uma vez que o quagga não dispões de funcionalidades de servidor de DHCP, pois não foi concebido com este intuito, a alternativa passa por recorrer à configuração stateless e contar com o mecanismo de autoconfiguração por parte do cliente. Do lado do cliente, este, gera um endereço link-local constituido pelo prefixo FE80 e pelo EUI-64 gerado em função do endereço MAC da interface e junta- se aos grupos de multicast all-nodes multicast ( FF02::1 ) e solicited-node multicast (FF02::1:FFXX:YYZZ onde XX:YYZZ são os 3 bytes de menor peso do endereço IPv6). Com vista a verificar a unicidade do endereço link-local envia uma menssagem IRS – Integração de Redes e Serviços de NEIGHBOR SOLICITATION para o solicited-node multicast com o endereço linklocal no campo target. Num contexto de configuração stateless o deamon do quagga, ospfd6, responsável pela componente IPv6 irá enviar periódicamente mensagens de ROUTER ADVERTISEMENT com o prefixo da rede (2001:690:2008:CFA0::/64) para que o cliente possa gerar um endereço IPv6 fruto da combinação deste com o endereço MAC da interface. De seguida podemos visualizar o excerto da configuração do quagga referente às configurações de DHCPv6. interface eth0 ipv6 nd suppress-ra ! interface eth1 ipv6 nd prefix 2001:690:2008:cfa0::/64 ipv6 nd ra-interval 60 no ipv6 nd suppress-ra Configurar OSPFv6 Para dar suporte ao OSPFv6 recorreu- se ao Quagga associando o deamon ospf6d ao arranque do sistema, no runlevel default, através do comando rc-update add ospf6d default e rc-update add zebra default. O Quagga disponibiliza um ficheiro de configuração de exemplo na directoria /etc/quagga/samples/ospf6d.conf.sample pelo que podemos copiar este ficheiro para a directoria onde constam todos os ficheiros de configuração do Quagga (/etc/quagga/) através do comando cp /etc/quagga/samples/ospf6d.conf.sample /etc/quagga/ospf6d.conf. interface eth0 ipv6 ospf6 cost 1 ipv6 ospf6 dead-interval 40 ipv6 ospf6 hello-interval 10 ipv6 ospf6 instance-id 0 ipv6 ospf6 priority 1 ipv6 ospf6 retransmit-interval 5 ipv6 ospf6 transmit-delay 1 ! interface eth1 ipv6 ospf6 cost 1 ipv6 ospf6 dead-interval 40 ipv6 ospf6 hello-interval 10 ipv6 ospf6 instance-id 0 ipv6 ospf6 passive ipv6 ospf6 priority 1 ipv6 ospf6 retransmit-interval 5 ipv6 ospf6 transmit-delay 1 no ipv6 nd suppress-ra IRS – Integração de Redes e Serviços ! interface lo ! router ospf6 area 0.0.0.75 range 2001:690:2008:cfa0::/64 interface eth0 area 0.0.0.75 interface eth1 area 0.0.0.75 ! ipv6 forwarding Radius Para implenetar o servidor de RADIUS vamos recorrer ao FreeRadius. A sua instalação é feita através do comando emerge -av freeradius. Para implementar um cenário de testes optámos configurar um router Cisco por forma a que a autenticação via o servidor de RADIUS que está a correr no target Gentoo. O deamon radiusd deve ser adicionado ao runn-level default por forma a que este seja lançado automaticamente quando o target arranca com o comando rc-update add radiusd default. Numa fase inicial, e senpre que se desejar reenicializaro deamon recorre- se ao comando /etc/init.d/radiusd restart. Configuração do Servidor Os ficheiros de configuração estão localizados no directório /etc/raddb. Ficheiro Observações radiusd.conf Especificar parâmetros gerais do servidor e defenir quais os módulos a utilizar. clients.conf Especificar quais as redes a servir. eap.conf Especificar parametrizações EAP users Especificar utilizadores e respectivas palavras chave. modules/ Ficheiros de configuração dos módulos seleccionados no ficheiro radiusd.conf. sites-enabled/ Suporte para virtual hosting. Default é o ficheiro por defeito. modules/ Configuração do módulos Note- se que nas versões anteriores, onde ainda não existia suporte para hosting, a configuração relativa ao AAA era feita de uma forma global no ficheiro radius.conf. As versões mais recentes, como a actualmente em uso, já suportam hosting e a configuração é feita com base nos ficheiros que constam no directório sites-enabled/ e o ficheiro default toma efeitos para as soluções sem implementação de hosting. Uma vez que não nos vamos debruçar com uma solução de hosting apenas será considerado o ficheiro default. IRS – Integração de Redes e Serviços Para iniciar o deamon no modo debug efectuar o comando radiusd -X, caso o deamon esteja a correr terá de ser parado. Parâmetros gerais Tal como já foi referido, os parâmetros gerais constam no ficheiro radius.conf. Parâmetro Observações ipaddr Endereço ip da interface onde vão ser atendidos os pedidos. * significa todos. port Porta TCP/UDP. “0” significa que vão ser utilizados os valores especificados em /etc/services (1812) Configuração das redes a servir A configuração das redes a servir é feita nop ficheiro clients.conf. Esta consiste em, para cada rede a servir, especificar o parâmetro secret a utilizar. Neste caso concreto as redes serão 10.62.203.112/28 e 2001:690:2008:CFA0::/64 para os respectivos domínios Ipv4 e Ipv6. client 10.62.203.112/28 { secret = secret shortname = shortname } client 2001:690:2008:CFA0::/64 { secret = secret shortname = shortname } Utilizadores Independentemente do mecanismo de segurança a utilizar, a informação relativa aos utilizadores (utilizador e respectiva palavra passe) é configurada no ficheiro users. Estão disponíveis integração com outras fontes de autenticação, nomeadamente LDAP, SQL etc, no entanto estas facilidades não irão ser exploradas. telnet Cleartext-Password := "telnet" #"John Doe" Cleartext-Password := "hello" # Reply-Message = "Hello, %{User-Name}" IRS – Integração de Redes e Serviços Autenticação A autenticação é configurada activando os módulos pretendidos que implementam os mecanismos de autenticação pretendidos. Esta secção está no ficheiro sitesenabled/default, mais concretamente na secção authenticate{ … }. O primeiro passo para a configuração da autenticação consiste em activar os máodulos que implementam os mecanismos de autenticação pretendidos no ficheiro sitesenabled/default. E seguidamente, configurar os respectivos módulos no directório modules/. Neste ficheiro, podemos verificar que a secção authenticate está a enibir os mecanismos de autenticação eap mschap chap pap e unix. Destes iremos nos debruçar apenas nos mecanismos PAP e CHAP uma vez que os routers cisco disponibilizados em laboratório não disponibilizamos restantes mecanismos. Configuração do Cliente Na fase inicial de configuração do servidor de RADIUS, evitando- se a utilização do router, instalamos o utilitário de testes de RADIUS NTRadPing. De seguida podemos visualizar o output do deamon radiusd, lançado com o argumento -X, por forma a obtermos informação de debug da sessão. Podemos verificar que foi gerada uma sessão de autenticação utilizando o mecanismo PAP com as credenciais telnet para utilizador e palavra passe. Uma vez que as credenciais são descodificadas de forma correcta pelo servidor de radius podemos IRS – Integração de Redes e Serviços concluir que o parâmetro secret é do conhecimento de ambos os intervenientes neste processo, pois caso contrário o servidor não seria capaz de descodificar correctamente as credenciais e a sessão numca teria sucesso. Outro factor relevante é o facto de o servidor, ao receber uma sessão irá percorrer os mecanismos para os quais está habilitado pelo que o administrador tem aqui uma boa oprtunidade de preveligiar determinados tipos de autenticação. Outra aplicação cliente interessante é o Xsupplicant, disponível em http://www.open1x.org/, que implementa a parte cliente (Supplicant) de 802.1x-2001. Em http://www.tldp.org/HOWTO/8021X-HOWTO/xsupplicant.html podemos obter informação adicional acerca da sua instalação e configuração. De seguida podemos verificar o script de configuração do router: ################################################### # Autenticação RADIUS #################################################### username telnetuser privilege 15 password telnet aaa new-model radius-server host 10.4.1.119 auth-port 1812 acct-port 1813 key pass_radius radius-server key pass_radius # aaa group server radius vpn_radius server 10.4.1.119 auth-port 1812 acct-port 1813 aaa authentication login default local group vpn_radius aaa authentication enable default none aaa authentication ppp default group vpn_radius aaa session-id common # line vty 0 4 login authentication default exit Servidor DNS Neste capítulo iremos instalar o named que implementa um servidor DNS . Desta forma teremos um servidor a responder de forma autoritária para a zona g7.lrcd.local e para o nível superior da hierarquia anteriormnete referida. No entanto este será um servidor primário apenas para a zona g7.lrcd.local, e a restante zona será transferida dos restantes servidores que são os primários das restantes zonas da hierarquia. Para toda a hierarquia, as respostas serão autoritárias, pela activação do bit AA nas respostas, no entanto a hierarquia será transferoda dos respectivos servidores primários. Outra quetão importante na configuração de um servidor DNS diz respeito à recursividade que coresponde à habilidade de o servidor guardar em cache as zonas para o qual não é primário nem secundário. Por norma os servidores efectuam cache das zonas por forma a optimizar os recursos da rede e minimizar as latências no pedidos de DNS no entanto deve- se ter o cuidade de não permitir pesquizas recursivas através do IRS – Integração de Redes e Serviços mundo exterior, ou seja, o servidor DNS apenas deve agir de forma recursiva na interface interna eth1. Insatalação do servidor O servidor DNS será implementado através do pacote bind que distribui o named,e a sua instalação é feita através do comando emerge -av bind. O ficheiro de configuração do named está em /etc/bind/named.conf e as zonas estão no directório /var/bind. Para além do pacote bind interessa instalar o pacote bind-tools que, entre outros, disponibiliza a ferramenta dig indispensável para o teste de um servidor de DNS. TSIG para actualização dinâmica O TSIG é um protocolo, defenido no RFC 2845, utilizado no DNS para implementar autenticação e integridade nos procedimentos de actualização e transferência de zonas. Para gerar a chave recorre- se ao utilitário dnssec-keygen especificando o algoritmo de encriptação pretendido, a dimensão da chave e o nome do detentor da mesma: dnssec-keygen -a HMAC-MD5 -b 64 -n HOST rndc-key O comando anterior irá gerar dois ficheiros com as chaves privada e pública, pelo que para visualizar a chave privada podemos recorrer ao seguinte comando: cat Krndc-key*.private O passo que seguinte consiste em gerar um ficheiro .key para incluir na configuração dos intervenientes no processo de actualização key "dhcp-dns" { algorithm hmac-md5; secret "SNZcOrE2zBc="; }; Suporte de DDNS O DDNS consiste em abilitar o servidor de DHCP a registar os endereços IP dos hosts da rede na respectiva zona de pesquisa directa e inversa recorrendo ao protocolo TSIG por forma a evitar eventuais registos de caracter abusivo. Para além do recurso ao protocolo TSIG podemos acrescentar mais um nível de segurança expondo a zona, que está abilitada a receber estas actualizações por parte do servidor de DHCP, apenas à rede interna uma vez que na maioria dos casos o mundo externo não necessita de ter conhecimento dos hosts da rede. As alterações a efectuar no ficheiro de configuração do servidor de DHCP podem ser vistas no excerto que se segue: ddns-update-style interim; ignore client-updates; Include "/etc/bind/tsig.key"; subnet 10.62.203.112 netmask 255.255.255.240 { ddns-updates on; ddns-domainname "g7.lrcd.local"; ddns-rev-domainname "112.203.62.10.in-addr.arpa."; IRS – Integração de Redes e Serviços zone g7.lrcd.local { primary 10.62.203.126; key "dhcp-dns"; } zone 112.203.62.10.in-addr.arpa { primary 10.62.203.126; key "dhcp-dns"; } } /etc/dhcp/dhcpd.conf Por outro lado, no ficheiro de configuração do servidor DNS ambas as zonas, de pesquisa directa e inversa, devem permitir as actualizações provenientes do servidor de DHCP. include "/etc/bind/tsig.key"; Server 10.62.203.126 { Keys{dhcp-dns}; }; ... view "internal" { match-clients { trusted; }; ... zone "g7.lrcd.local" IN { type master; //also-notify {192.168.0.2;}; file "pri/g7.lrcd.local.internal.zone"; //allow-update { localhost; }; Update-policy {grant dhcp-dns subdomain g7.lrcd.local. A TXT;}; notify no; }; zone "112.203.62.10.in-addr.arpa" IN { type master; file "pri/112.203.62.10.zone"; //allow-update { localhost; }; Update-policy {grant dhcp-dns subdomain 112.203.62.10.in-addr.arpa PTR TXT;}; notify no; }; }; /etc/bind/named.conf Transferência de zona A transferência de zonas consiste no mecanismo utilizado pelos servidores DNS para replicarem as respectivas zonas entre os masters e slave. Este mecanismo, mais uma vez IRS – Integração de Redes e Serviços envolve certos riscos uma vez que um determinado slave pode ser alvo de ataques por parte de masters não filedignos. A formas mais simples de implementar alguma segurança na transferência de uma zona consiste em recorrer aos parâmetros allow-transfer e masters que são incluídos no ficheiro de configuração da zona no master e slave respectivamente. Desta forma, o slave apenas aceita uma transferência de zona do peer especificado no parâmetro masters. Uma outra alternativa ao cenário anterior consiste em recorrer ao protocolo TSIG para implementar autenticação e integridade no processo de transferência de zona. Neste cenário o parâmetro masters, incluído no slave, tem a mexma sintaxe mas o parâmetro allow-transfer, em vez de conter os endereços dos slaves para a zona, passa a conter a chave ( allow-transfer { key “dns1-dns2”; }; ). include "/etc/bind/tsig.key"; Server 10.62.203.126 { Keys{dns1-dns2}; }; options { ... allow-transfer{key “dns1-dns2”;}; }; view "external" { match-clients { any; }; zone "g7.lrcd.local" IN { type master; file "pri/g7.lrcd.local.external.zone"; }; }; Master - /etc/bind/named.conf include "/etc/bind/tsig.key"; Server 10.62.203.125 { Keys{dns1-dns2}; }; options { ... allow-transfer{key “dns1-dns2”;}; }; view "external" { match-clients { any; }; zone "g7.lrcd.local" IN { type slave IRS – Integração de Redes e Serviços masters { 10.62.203.125; };; file "pri/g7.lrcd.local.external.zone"; }; }; Slave - /etc/bind/named.conf Numa transferência de zona o slave vai efectuando polling ao master em intervais de tempo especificado no parâmetro REFRESH do registo SOA do ficheiro da zona que comtém os parâmetros globais para a zona. O polling consiste no envio de uma query pedindo o registo SOA e verificando se o parâmetro SERIAL se mantém, pois caso contrário verificaram- se alterações na zona. Nos cenários onde as zonas sofrem alterações com alguma dinâmica, ou seja, que ultrapassem em grande escala o valor do parâmetro REFRESH podemos recorrer aos parâmetros notify, also-notify e notify-source para que o master envie mensagens NOTIFY para o slave com o intuito de forcar a uma actualização. Ficheiros de configuração De seguida podemos vizualizar o ficheiro de configuração do servidor DNS: include "/etc/bind/tsig.key"; Server 10.62.203.126 { Keys{dhcp-dns}; }; acl "trusted" { 10.62.203.112/28; localhost; }; options { directory "/var/bind"; // uncomment the following lines to turn on DNS forwarding, // and change the forwarding ip address(es) : //forward first; //forwarders { // 123.123.123.123; // 123.123.123.123; //}; listen-on-v6 { none; }; listen-on { 127.0.0.1; 10.62.203.126; }; // to allow only specific hosts to use the DNS server: //allow-query { // 127.0.0.1; //}; // if you have problems and are behind a firewall: IRS – Integração de Redes e Serviços //query-source address * port 53; pid-file "/var/run/named/named.pid"; allow-query { any; }; allow-recursion { trusted; }; allow-query-cache { trusted; }; dnssec-enable yes; }; /*************************************************************** //provide recursive queries and caching for internal users ****************************************************************/ view "internal" { match-clients { trusted; }; zone "." IN { type hint; file "named.cache"; }; zone "localhost" IN { type master; file "pri/localhost.zone"; allow-update { none; }; notify no; }; zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; zone "g7.lrcd.local" IN { type master; //also-notify {192.168.0.2;}; file "pri/g7.lrcd.local.internal.zone"; //allow-update { localhost; }; Update-policy {grant dhcp-dns subdomain g7.lrcd.local. A TXT;}; notify no; }; zone "112.203.62.10.in-addr.arpa" IN { type master; file "pri/112.203.62.10.zone"; //allow-update { localhost; }; IRS – Integração de Redes e Serviços Update-policy {grant dhcp-dns subdomain 112.203.62.10.in-addr.arpa PTR TXT;}; notify no; }; /* zone "lrcd.local" IN { type slave; file "sec/lrcd.local.zone"; masters { 10.62.203.126; }; }; */ }; /****************************************************************** //provide nom recursive dns service *******************************************************************/ view "external" { match-clients { any; }; zone "g7.lrcd.local" IN { type master; //also-notify {192.168.0.2;}; //allow-transfer {192.168.23.1;192.168.23.2;); file "pri/g7.lrcd.local.external.zone"; }; }; Zonas de pesquisa directa A informação relativa às zonas é guardada nos ficheiros .zone no directório /var/bind. Estes ficheiros contêm os diversos tipos de registos da zona. $TTL 1W @ IN @ @ webmail ns ns www SOA IN IN IN g7.lrcd.local. root.g7.lrcd.local. ( 2008122601 ; Serial 28800 ; Refresh 14400 ; Retry 604800 ; Expire - 1 week 86400 ) ; Minimum NS ns MX 10 mail CNAME mail IN A 10.62.203.126 IN AAAA 2001:690:2008:cfa0::1 IN A 10.62.203.126 IRS – Integração de Redes e Serviços www mail IN AAAA 2001:690:2008:cfa0::1 IN A 10.62.203.126 zona g7.lrcd.local O primeiro registo da zona é o SOA que contém os parâmetros adminstrativos da zona, dos quais se destacam o parâmetro SERIAL para que o slave consiga verificar se a zona se mantem intacta e REFRESH que determina ao fin de quanto tempo o slave deve efectuar poll ao master. NS Definem quais os servidores DNS responsáveis por manter a zona MX Definem o endereço do servidor de smtp disponíveis para a zona CNAME Definem aliases para os hosts da rede A Definem a relação directa entre o host e o respectivo endereço IP. Zonas de pesquisa inversa O ficheiro da zona de pesquisa inversa é constituido pelo registo SOA, que tem as mensmas funcionalidades que o da zona de pesquisa directa e por registos PTR que definem a relação directa entre os endereços IP e os respectivos hosts. $ORIGIN . $TTL 86400 ; 1 day 112.203.62.10.in-addr.arpa IN SOA g7.lrcd.local. root.g7.lrcd.local. ( 2008122604 ; serial 10800 ; refresh (3 hours) 900 ; retry (15 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) IN NS localhost. $ORIGIN 112.203.62.10.in-addr.arpa. 126.203.62.10 PTR localhost. $TTL 300 ; 5 minutes 113.203.62.10 PTR pedro-portatil.g7.lrcd.local. zona 112.203.62.10. in-addr.arpa IRS – Integração de Redes e Serviços