Vous êtes sur la page 1sur 67

Servidores Linux, Guia Prtico

Introduo
Durante as dcadas de 1960 e 1970, predominaram os mainframes, computadores de grande porte, que eram acessados atravs de terminais burros. A idia veio de uma necessidade simples: os computadores da poca eram caros e o volume de processamento e de memria oferecido por eles era pequeno, de forma que cada empresa ou universidade normalmente possua apenas um ou alguns poucos mainframes, que eram compartilhados entre todos os usurios.

Siegler ADM-3A: Um terminal burro bastante usado durante a dcada de 1970 A partir do incio da dcada de 1980, os computadores de mesa passaram a roubar a cena, substituindo os mainframes. Dois sintomas dessa poca foram a quase falncia da IBM, at ento uma empresa especializada em mainframes e o crescimento da Microsoft, que passou a ganhar muito dinheiro vendendo o MS-DOS e, em seguida, o Windows e o Office, usados em micros desktop. Com a popularizao das redes e da Internet, o cenrio novamente mudou. Passamos a depender da conexo com a Internet at mesmo para as tarefas mais bsicas e a armazenar cada vez mais informaes em servidores remotos. Com isso, a importncia do PC comeou a decair. Aplicativos como o Office e o Outlook deram lugar a servios online, como o Gmail e o Google Docs, e at mesmo os programas de mensagem instantnea passaram a ser usados via web, como no caso do Meebo. O fato de estarem disponveis via web permite o acesso a partir de qualquer computador, ou at mesmo de smartphones e outros dispositivos que ofeream um navegador. Embora eles no concorram diretamente em recursos com os aplicativos tradicionais, a questo da praticidade fez com que o uso crescesse rapidamente.

Os grandes mainframes de duas dcadas atrs deram lugar a servidores de baixo custo, montados usando componentes similares aos usados nos desktops, hospedados em datacenters e administrados remotamente. Os links de fibra ptica tambm caram brutalmente de preo, tornando viveis sites que disponibilizam vdeos (como no caso do YouTube) e outros tipos de mdia. Esse conjunto de mudanas abriu diversos campos de trabalho, tanto na rea de desenvolvimento, quanto na rea de infra-estrutura. Um sintoma interessante deste crescimento que (no apenas no Brasil, mas tambm em outros pases) a demanda por profissionais qualificados dentro da rea de tecnologia, sobretudo administradores de sistema e programadores experientes, passou a ser bem maior do que a oferta. Ou seja, diferente de outras reas, existem mais postos de trabalho do que vagas, sem falar nas oportunidades de abrir seu prprio negcio. Naturalmente, todas estas oportunidades esto abertas apenas para profissionais altamente qualificados, da a necessidade de estudar e dominar novas reas de conhecimento. Ser um administrador de redes exige um grande volume de conhecimento. Como existe muita coisa para estudar e a documentao nem sempre clara, muitas vezes voc fica sem saber por onde comear, da a idia de escrever este livro.

Servidores de Internet
Em seguida, entramos no mundo dos servidores de Internet, dominado pelos servidores dedicados e pelos datacenters. A Internet formada por uma malha de cabos de fibra ptica, que interligam praticamente todos os pases. Mesmo em locais mais remotos, possvel se conectar via modem, via celular (ou algum tipo de rede sem fio de longa distncia) ou mesmo via satlite. A pea central so os roteadores, que interligam diferentes segmentos da rede, formando uma coisa s. Cada roteador conhece os vizinhos, sabe quais redes esto conectadas a eles e sabe escolher o caminho mais curto para cada pacote de dados:

Naturalmente, os dados transmitidos precisam sair de algum lugar. Entram em cena, ento, os datacenters, que hospedam a grande maioria dos servidores responsveis por manter a Internet funcionando. Os datacenters so ambientes protegidos, que contam com links redundantes, instalaes eltricas de grande porte (com nobreaks e geradores, destinados a manterem os servidores funcionando mesmo em caso de interrupo no fornecimento eltrico), salas refrigeradas, equipes de manuteno disponveis 24 horas por dia e outros recursos. Em resumo, um datacenter oferece um ambiente controlado, onde os servidores podem operar de forma confivel:

Antigamente, ter um servidor dedicado era um luxo reservado para poucos. Alm da mquina em si, voc precisava de um link dedicado, que custava um brao e duas pernas (por ms ;). A soluo para colocar seu site no ar era pagar por um plano de shared hosting (hospedagem compartilhada), onde um mesmo servidor compartilhado por milhares de sites diferentes e voc fica restrito a uma quota de trfego e espao em disco, sem poder mexer na configurao do servidor. Hoje em dia, tudo est muito mais acessvel, graas ao barateamento tanto dos links quanto dos servidores propriamente ditos. Voc pode ter seu prprio servidor, hospedado em um datacenter dos

EUA (ou mesmo no Brasil), hospedando o site da sua empresa ou de seus clientes, armazenando backups, entre inmeras outras funes. A principal vantagem de alugar um servidor dedicado, hospedado em um datacenter, ao invs de montar seu prprio servidor e lig-lo na conexo via ADSL ou cabo que voc j tem, a questo da conectividade. Uma conexo via ADSL funciona bem para acessar a web como cliente e fazer downloads, mas no uma boa idia para hospedar servidores, pois o link de upload muito estreito (em geral apenas 256 ou 500 kbits, de acordo com o plano), sem falar na questo da confiabilidade. As grandes empresas de hospedagem trabalham com links absurdamente rpidos, sempre ligados simultaneamente a vrios dos principais backbones. Isso garante uma boa velocidade de acesso a partir de qualquer lugar do mundo. A confiabilidade tambm melhor, pois os datacenters so ambientes fechados, com geradores prprios, segurana fsica, links redundantes, etc. Os servidores dedicados mais baratos chegam a custar menos de US$ 100 mensais, sempre com um link de 10 ou 100 megabits (correspondente velocidade da porta do switch) e uma quota de trfego de um ou dois terabytes mensais, variando de acordo com o plano:

Existe tambm a opo de usar um VPS, um servidor virtual obtido atravs do uso do VMware Server, Xen ou outro sistema de virtualizao. Usando um VPS, voc tem acesso completo ao sistema, da mesma forma que ao usar um servidor real. A quantidade de memria RAM e de espao em disco menor e o processamento compartilhado entre os vrios servidores virtuais hospedados na mesma mquina, mas, em compensao, os preos so muito mais baixos. No final do captulo 1 voc encontra dicas de planos de baixo custo, onde voc pode locar um VPS por menos de US$ 10 mensais. Isso permite que voc tenha um servidor disponvel para estudar e testar tudo o que aprenderemos ao longo do livro, sem precisar arcar com o custo de um servidor dedicado:

O primeiro passo com relao administrao de um servidor dedicado ter uma boa familiaridade com o uso da linha de comando e com a edio dos arquivos de configurao. O captulo 1 contm um resumo dos comandos bsicos e do uso dos editores de texto, alm de um conjunto de dicas sobre a administrao do sistema, que serve como um bom ponto de partida. O uso do terminal acaba sendo uma necessidade, pois, quase sempre, a administrao do servidor feita via SSH, usando ferramentas em modo texto. Existem diversos utilitrios para automatizar a administrao do servidor (como o ISPConfig, que veremos no captulo 9), mas ao longo do livro voc ver que fazer a configurao manualmente oferece um controle muito maior sobre o servidor. Existem clientes SSH para todas as principais plataformas, incluindo clientes Windows e tambm clientes para diversas famlias de celulares e smartphones, o que permite executar tarefas rpidas de administrao at mesmo enquanto estiver preso no trnsito. :)

Para quem vem do Windows, administrar um servidor via linha de comando parece uma coisa extica, mas, com o tempo, voc percebe que realmente a forma mais rpida de fazer muitas coisas. A maior parte da configurao do servidor consiste em instalar pacotes e editar arquivos de configurao em texto, o que pode ser feito via linha de comando sem maiores problemas. Existem ainda ferramentas como o Webmin, phpMyadmin e outras, que so acessadas via navegador. Elas so bastante prticas, pois voc no precisa instalar o ambiente grfico no servidor para us-las, o que desejvel do ponto de vista da performance e at mesmo segurana.

Alm de permitir executar comandos e rodar aplicativos remotamente, o SSH permite transferir arquivos e executar diversas outras funes, como veremos em detalhes no captulo 10. Alm do bom conjunto de recursos, o SSH prima pela segurana, oferecendo respostas para praticamente todo tipo de ataque conhecido. Isso faz com que ele seja de longe a ferramenta de administrao mais usada no mundo Linux. Depois de ganhar acesso ao servidor, o prximo passo configurar o servidor web, que ser provavelmente o responsvel pela maior parte dos servios oferecidos pelo servidor. No captulo 6, veremos detalhes sobre como configurar um servidor LAMP, combinando o uso do servidor Linux com o Apache, o interpretador PHP e o banco de dados MySQL. Esta , justamente, a soluo de hospedagem mais usada atualmente, que permite rodar diversos tipos de gestores de contedo, fruns e outros tipos de aplicativos web, tais como o WordPress e o phpBB. Examinando os recursos de administrao disponveis, fcil entender porque eles se tornaram to populares. Eles automatizam toda a gerao das pginas, atualizao dos links, comentrios e assim por diante, permitindo que os autores do site ou blog se preocupem apenas com o contedo:

Para disponibilizar arquivos de forma pblica, voc poderia usar o prprio servidor web, ou instalar um servidor FTP (sobre o qual tambm estudaremos no captulo 6). Para acesso seguro ao servidor, voc pode usar o SFTP ou o RSSH, que permitem transferir arquivos de forma segura utilizando o SSH. Em casos em que outras pessoas tenham acesso limitado ao seu servidor (como ao hospedar vrios sites, onde cada webmaster tem acesso apenas a seus prprios arquivos), til incluir um sistema de quotas, de forma que cada um tenha sua parcela justa de espao, afastando assim o risco de algum entupir o HD do servidor sozinho. Ao hospedar sites, voc vai precisar tambm configurar o servidor DNS para responder pelos domnios registrados. Voc pode hospedar diversos sites no mesmo servidor, cada um deles com um domnio ou sub-domnio prprio, combinando a configurao do servidor DNS com a configurao dos virtual-hosts no Apache. No captulo 7 veremos detalhes sobre a configurao do Bind, que o servidor DNS mais tradicional, e tambm o mais usado. Temos tambm a questo dos e-mails, que pode ser resolvida rodando um servidor Postfix ou utilizando o Google Apps for you Domain, como veremos em detalhes no captulo 8. Com a evoluo dos processadores, aumento na capacidade dos HDs e o barateamento dos mdulos de memria, mesmo os servidores de configurao mais bsica acabam sendo subutilizados na

maioria das situaes. Uma boa forma de aproveitar os recursos ociosos e agregar mais funes ao servidor utilizar um sistema de virtualizao, que permite rodar vrias mquinas virtuais em um nico servidor, cada uma se comportando como se fosse um servidor completo. Dessa forma, voc pode ter vrios servidores pelo preo de um:

As mquinas virtuais podem ser usadas tambm como "caixas de areia", rodando servios potencialmente vulnerveis, de forma a no expor o servidor principal a riscos desnecessrios, ou at mesmo serem sub-locadas, um negcio que pode ser bastante rentvel. Veremos mais detalhes sobre o tema no captulo 12, reservado configurao do VMware Server. Outra tarefa essencial so os backups, que funcionam como um seguro contra imprevistos. Afinal, em um servidor que armazena dados importantes, voc no pode contar apenas com a sorte. Os backups podem ser automatizados atravs de scripts simples (como veremos em detalhes no captulo 13), que podem, inclusive, serem executados de forma automtica, fazendo backups dirios, semanais ou at mesmo backups rotativos, sem que voc precise se preocupar em logar diariamente no servidor apenas para execut-los. Alm da configurao e da manuteno do servidor, temos outra tarefa importante, que a escolha dos componentes a utilizar, de forma a dimensionar corretamente os recursos do servidor e eliminar gargalos. Apesar da maioria dos servidores serem montados usando processadores e placas de baixo custo, muitas vezes utilizando gabinetes tipo torre e placas-me para micros desktop, existe toda uma classe de componentes e tecnologias destinadas ao uso em servidores, como veremos em detalhes no captulo 14. Tudo isso pode parecer complicado de incio, mas, ao longo do livro, voc vai descobrir que bem mais simples do que parece. Assim como nos outros livros da srie, o principal objetivo explicar os temas de forma abrangente, porm em linguagem simples. Aperte os cintos e vamos l. :)

Captulo 2: Compartilhamento, DHCP e Proxy


Um dos usos mais comuns e mais simples para um servidor Linux de rede local simplesmente compartilhar a conexo. A vantagem de usar um servidor dedicado ao invs de simplesmente compartilhar usando o prprio modem ADSL que voc pode incluir outros servios, como um

cache de pginas (Squid), filtro de contedo (SquidGuard ou DansGuardian), firewall, servidor Samba (compartilhando arquivos com a rede interna), servidor de impresso e assim por diante. Em uma rede pequena ou mdia, com de 10 a 50 micros, possvel usar um nico servidor de configurao razovel para todas estas funes. Em redes maiores, com 100 micros ou mais, isso passa a depender muito do nvel de utilizao do servidor. Por exemplo, um simples Pentium 100, com 32 MB de RAM pode compartilhar a conexo com um link de at 8 megabits para um nmero indefinido de clientes. O mesmo servidor pode compartilhar uma impressora e compartilhar arquivos (servios mais pesados que simplesmente compartilhar a conexo), desde que estes servios no sejam utilizados de forma intensiva. Porm, uma configurao modesta como esta j no adequada para rodar um servidor proxy para uma rede de 50 micros, por exemplo. Uma mquina mais atual, como um Pentium E ou um Athlon X2, com 512 MB de RAM e um HD de 7200 RPM, j pode rodar o mesmo proxy para 100 ou 200 micros com folga, incluindo servios adicionais (como uma VPN, por exemplo). Adicione 2 GB de RAM e ele poder rodar tambm um servidor de arquivos para os mesmos 200 micros. Mquinas mais parrudas podem desempenhar funes mais pesadas. Voc pode, por exemplo, usar o VMware Server (que veremos em detalhes mais adiante) para rodar diversas mquinas virtuais, cada uma com um sistema operacional diferente, de forma a atender diversos usurios da rede. Dessa forma, voc pode concentrar aplicativos Windows em uma mquina virtual com o Windows 2003 e o Terminal Services, oferecer aplicativos para usurios remotos usando um servidor com o Fedora e o NX Server (que veremos em detalhes no captulo sobre acesso remoto) e assim por diante. Voc pode at mesmo manter algumas mquinas virtuais com sistemas antigos, como o Windows 98, para rodar aplicativos de legado que rodam apenas sobre ele. Mas, cada coisa a seu tempo :)

Compartilhando a conexo
Do ponto de vista da segurana e at mesmo da facilidade de configurao, sempre recomendvel usar um servidor com duas placas de rede, separando o trfego proveniente da internet do trfego da rede local. Com duas placas separadas, fica mais fcil criar as regras de firewall adequadas para bloquear acessos provenientes da internet e, ao mesmo tempo, permitir o trfego vindo da rede local. Se voc acessa via ADSL, recomendvel manter o modem configurado como bridge ao invs de configur-lo como roteador. Dessa forma, o servidor recebe todas as portas de entrada, permitindo que voc acesse o servidor remotamente via SSH (muito til para prestar suporte remoto em servidores instalados por voc) ou disponibilize um servidor web ou FTP. Embora acabe sendo mais trabalhoso, nada impede que voc configure o modem como roteador e use o servidor para novamente compartilhar a conexo recebida do modem, acrescentando os demais servios. Nesses casos, voc vai precisar configurar o modem para encaminhar ao servidor as portas que devem ficar abertas, como a porta 22, usada pelo SSH (caso voc pretenda administrar o servidor remotamente), por exemplo. Isso feito atravs da interface de administrao do modem, atravs da opo "Port Forwarding", ou similar:

Encaminhamento de portas dentro da configurao de um D-Link 500G As opes de configurao variam bastante de acordo com o modelo do modem, mas (com exceo de um punhado de modelos realmente muito antigos) deve estar disponvel pelo menos a opo de criar regras estticas de encaminhamento, onde voc pode encaminhar um conjunto de portas, incluindo uma regra para cada uma. Na maioria dos casos, a interface de configurao do modem permite tambm encaminhar faixas de portas, ou criar uma DMZ (o que faz com que todas as portas sejam encaminhadas para o servidor, como se ele estivesse diretamente conectado Internet). No final, sua rede ficaria com uma topologia similar a essa, com o servidor colocado entre a rede local e o modem. Uma das interfaces do servidor receberia um endereo de rede local, de forma a receber os acessos provenientes dos clientes da rede e a segunda seria configurada para acessar a Internet atravs do modem:

Ao usar uma conexo via cabo, o layout da rede continua o mesmo, a nica diferena que no acesso via cabo a configurao da conexo mais simples, j que preciso apenas obter a configurao da rede via DHCP e no necessrio configurar o roteamento de portas, j que o cable modem funciona como um bridge. Depois de montar o cabeamento da rede, comece configurando a rede local usando uma das faixas de endereos IP reservadas como, por exemplo, a 192.168.1.x, onde o servidor fica com o IP 192.168.1.1 (ou 192.168.1.254, caso prefira) e os micros da rede interna recebem endereos dentro da mesma faixa. O endereo IP de rede local do servidor (192.168.1.1 no exemplo) passa a ser o gateway da rede, j que a ele que os clientes iro contactar quando precisarem acessar qualquer endereo externo:

No caso do servidor, o gateway padro definido apenas ao configurar a conexo com a Internet, no ao configurar a rede local. Caso voc utilize um utilitrio de configurao para configurar as interfaces de rede no servidor, configure primeiro a interface de rede local, mantendo os campos do default gateway e dos servidores DNS em branco, deixando para configurar a interface da Internet por ltimo. Isso evita alguns erros comuns. Por exemplo, se voc configurar a conexo com a web e depois configurar a rede local, colocando um endereo qualquer no campo "default gateway", o gateway informado na configurao da rede local vai substituir o gateway do provedor (definido ao conectar na internet), fazendo com que a conexo deixe de funcionar. Aqui temos um exemplo de configurao manual da rede para distribuies derivadas do Debian, onde a interface eth0 usada como interface de rede local e a eth1 usada como placa de internet, configurada via DHCP: # /etc/network/interfaces auto lo eth0 eth1 iface lo inet loopback iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 iface eth1 inet dhcp Depois de configurada a rede, verifique se consegue pingar os PCs da rede interna (ex: ping 192.168.1.61) a partir do servidor. Se estiver usando Linux nas estaes, experimente ativar o servidor SSH em uma das estaes e tentar se conectar a ela a partir do servidor. Da primeira vez que configurar a rede, use endereos IP estticos para todas as estaes, pois assim mais fcil detectar problemas diversos. Depois de tudo funcionando, mude para configurao via DHCP, como veremos a seguir. Se alguma das estaes estiver inacessvel, verifique se no existe um firewall ativo, verifique o cabo de rede e experimente trocar a porta usada no switch. Ao utilizar o Debian Sarge, Etch ou Lenny (ou outra distribuio diretamente derivada deles), importante fixar os devices das interfaces depois de configurar a rede. Isso evita um problema recorrente, onde as interfaces mudam de posio a cada reset em servidores com duas ou mais interfaces de rede. A placa eth0 passa ento a ser a eth1 e assim por diante, o que logo se torna uma grande dor de cabea ao configurar um servidor para compartilhar a conexo, j que se as duas interfaces mudam de posio, nada funciona.

O problema solucionado atravs do uso de um pequeno utilitrio chamado "ifrename", que permite fixar os devices utilizados para as placas. Utiliz-lo bem simples. Comece instalando o pacote via apt-get: # apt-get install ifrename Com as duas placas de rede configuradas, da forma como sero usadas, cheque os endereos MAC das interfaces usando o comando "ifconfig -a" e crie o arquivo "/etc/iftab", relacionando o device de cada interface com o endereo MAC correspondente, seguindo o modelo abaixo: #/etc/iftab eth0 mac 00:16:36:D1:89:1D eth1 mac 00:02:44:95:1D:88 Uma vez criado, o arquivo verificado a cada boot e a configurao se torna persistente, resolvendo o problema. Esta dica no se aplica s verses recentes do Ubuntu/Kubuntu, onde o problema foi solucionado atravs do uso de regras do udev. No CentOS, Fedora e outras distribuies derivadas do Red Hat, usado um arquivo de configurao independente para cada interface, salvo dentro da pasta "/etc/sysconfig/networkscripts/", de forma que a configurao do exemplo anterior ficaria: # /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR= 00:16:36:D1:89:1D BOOTPROTO=static ONBOOT=yes NETMASK=255.255.255.0 IPADDR=192.168.1.1 NETWORK=192.168.1.0 #/etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 HWADDR=00:02:44:95:1D:88 BOOTPROTO=dhcp USERCTL=no As linhas "HWADDR" so configuradas com os endereos MAC das interfaces de rede. Elas no so obrigatrias, apenas servem como uma garantia adicional de que os devices das interfaces no sero alterados caso voc instale outras placas de rede no futuro. Note que ao conectar via ADSL com o modem configurado em modo bridge (onde voc usa o "pppoeconf" ou o comando "adsl-start" para conectar), ou outra modalidade de acesso discado, a interface eth0 ou eth1 substituda pela interface virtual ppp0. Ao usar uma placa wireless, a interface pode receber vrios nomes, como "wlan0", "ath0" ou "ra0", de acordo com o chipset e o driver utilizado. importante tomar nota dos devices utilizados por cada interface, j que precisaremos especific-los nos passos seguintes. Em caso de dvidas, cheque a configurao da rede usando o comando "ifconfig".

Ativando o compartilhamento
Depois de tudo preparado, ativar o compartilhamento propriamente dito bastante simples. No Linux, o compartilhamento feito usando o Iptables, o firewall integrado ao Kernel. Na verdade, o

Iptables expandido atravs de mdulos, por isso suas funes vo muito alm das de um firewall tradicional, incluindo funes avanadas de roteamento. Para ativar o compartilhamento, so necessrios apenas trs comandos: # modprobe iptable_nat # echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE Substitua o "eth1" pela placa da Internet. Este comando simplesmente compartilha a conexo proveniente da placa da internet com todas as demais placas de rede espetadas no servidor, por isso no necessrio especificar a placa de rede local. O primeiro comando ativa o "iptable_nat", o mdulo do Iptables responsvel por oferecer suporte ao roteamento de pacotes via NAT. O segundo ativa o "ip_forward", o mdulo responsvel pelo encaminhamento de pacotes, utilizado pelo mdulo iptable_nat. Finalmente, o terceiro cria uma regra de roteamento, que orienta o servidor a direcionar para a internet todos os pacotes (recebidos dos clientes) que se destinarem a endereos que no faam parte da rede local (ou seja, qualquer coisa fora da faixa 192.168.1.x). A partir da, o servidor passa a ser o gateway da rede. A maioria das distribuies instalam o executvel do Iptables por padro, mas sempre existem excees. No Mandriva, por exemplo, ele instalado ao marcar a categoria "firewall" durante a instalao. Para instal-lo posteriormente, use o comando "urpmi iptables". Em muitas distribuies com o Kernel 2.6, necessrio usar um quarto comando ao compartilhar uma conexo ADSL. Este comando ajusta os tamanhos dos pacotes recebidos do modem ao MTU usado na rede local. Note que, apesar da diagramao do livro tornar necessrio quebrar o comando em duas linhas, trata-se de um nico comando: # iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m \ tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu A barra invertida ("\") faz com que o shell no interprete o caractere seguinte (no caso, a quebra de linha), permitindo quebrar o comando em duas linhas, sem causar um erro. Esse um truque que permite incluir comandos longos demais para caberem na pgina, divididos em duas linhas ou mais. Na verdade, o comando forma uma nica linha. Como de praxe, importante proteger o servidor de ataques provenientes da Internet usando um firewall. Podemos ativar um firewall simples de bloqueio usando mais alguns comandos do Iptables, complementando os trs comandos anteriores: iptables -A INPUT -p icmp --icmp-type echo-request -j DROP echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter iptables -A INPUT -m state --state INVALID -j DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP O primeiro comando faz com que o seu servidor deixe de responder a pings, o que evita muitos ataques casuais. Os dois comandos seguintes protegem contra IP spoofing (uma tcnica usada em diversos tipos de ataques, onde o atacante envia pacotes usando um endereo IP falseado como remetente, tentando assim obter acesso a PCs da rede interna) e contra pacotes invlidos, que so comumente utilizados em ataques DoS e ataques de buffer overflow. As duas linhas seguintes autorizam pacotes provenientes da interface de loopback (lo), juntamente

com pacotes provenientes da rede local. Como pode ver, a sintaxe das regras do Iptables segue um padro lgico, onde voc especifica uma determinada condio e diz o que o firewall deve fazer com os pacotes que se enquadrarem nela. No caso da regra que autoriza os pacotes da rede local (iptables -A INPUT -i eth0 -j ACCEPT) usamos os parmetros "-A INPUT" (pacotes de entrada) e "-i eth0" (recebidos na interface eth0), seguidos da regra "-j ACCEPT", que diz que os pacotes devem ser aceitos sem checagem adicional. No se esquea de substituir o "eth0" pela interface de rede local correta, caso diferente. Continuando, a linha "iptables -A INPUT -p tcp --dport 22 -j ACCEPT" abre a porta 22, usada pelo SSH para conexes externas, permitindo que voc possa administrar o servidor remotamente. Voc pode abrir mais portas simplesmente adicionando mais linhas, com as portas desejadas. Concluindo, temos a linha "iptables -A INPUT -p tcp --syn -j DROP", que faz o trabalho pesado, bloqueando tentativas de conexo provenientes da Internet. Depois de testar o compartilhamento, falta fazer com que os comandos sejam executados durante o boot, tornando a configurao permanente. A forma mais simples de fazer isso colocar os comandos no arquivo "/etc/rc.local", um script prprio para a tarefa, que est disponvel tanto em distribuies derivadas do Debian quanto em distribuies da linhagem do Red Hat. Um exemplo de arquivo completo, incluindo os comandos para ativar o firewall seria: #!/bin/sh # /etc/rc.local modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE iptables -A INPUT -p icmp --icmp-type echo-request -j DROP echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter iptables -A INPUT -m state --state INVALID -j DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP Esta receita genrica, deve funcionar em qualquer distribuio. Lembre-se de substituir "eth1" pela interface de internet e o "eth0" pela interface de rede local, caso diferentes. Uma segunda opo, mais elegante, porm mais complicada, criar um servio de sistema, que pode ser ativado e desativado. Neste caso, crie o arquivo de texto "/etc/init.d/compartilhar". Dentro dele vo as linhas a seguir: #!/bin/bash # Interface da Internet: ifinternet="eth1" # Interface da rede local iflocal="eth0" iniciar(){ modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE iptables -A INPUT -p icmp --icmp-type echo-request -j DROP echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter iptables -A INPUT -m state --state INVALID -j DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i $iflocal -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP } parar(){ iptables -F iptables -F -t nat } case "$1" in "start") iniciar ;; "stop") parar ;; "restart") parar; iniciar ;; *) echo "Use os parmetros start ou stop" esac Este um shell script que aceita trs funes: start, stop e restart, executando dentro de cada uma os comandos que compartilham e param o compartilhamento da conexo. Esta estrutura similar usada nos demais scripts de inicializao do sistema, como os do Apache, Samba, Squid e outros servios. Veja que em vez de especificar as interfaces de internet e de rede local dentro dos comandos, passei a usar duas variveis no incio do script, que facilitam a configurao e tornam o script mais elegante. Quando precisar usar o script em outra mquina, onde as interfaces sejam diferentes, voc precisa apenas se lembrar de alterar as duas variveis. Note tambm que os comandos a partir do "iptables -A INPUT -p icmp --icmp-type echo-request -j DROP" correspondem s protees e ao firewall e podem ser removidos caso desejado. Para usar o script, transforme-o em um arquivo executvel, usando o comando: # chmod +x /etc/init.d/compartilhar A partir da, voc pode iniciar e parar o compartilhamento usando os comandos: # /etc/init.d/compartilhar start # /etc/init.d/compartilhar stop Para que o script seja executado durante o boot, voc pode adicionar o comando "/etc/init.d/compartilhar start" no arquivo "/etc/rc.local", em vez de colocar os comandos diretamente, como fizemos no exemplo anterior. Outra opo (mais elegante) criar um link para ele dentro da pasta "/etc/rc5.d", o que tambm faz com que ele seja executado durante o boot: # cd /etc/rc5.d # ln -s ../init.d/compartilhar S21compartilhar Como vimos no primeiro captulo, o "S" indica que o script deve ser executado com o parmetro "start" e o "21" indica a ordem em que deve ser executado durante o boot, em relao aos outros servios. A ordem de execuo dos servios muda de distribuio para distribuio, mas nessa posio garantimos que ele ser executado depois da ativao das interfaces de rede e de outros servios essenciais. Se voc um administrador paranico, verifique a configurao dos servios na distribuio em uso e altere a ordem de inicializao do script de firewall, de forma que ele seja carregado antes de qualquer outro servio que aceite conexes, como o Samba ou o Apache. Com isso voc garante que o firewall ser carregado primeiro e no fica com seu servidor vulnervel nem mesmo por um curto espao de tempo durante o boot. Isso nos leva a uma terceira opo para salvar a configurao, utilizando os prprios arquivos de

inicializao do sistema. Ela a mais "correta" do ponto de vista tcnico, embora menos flexvel. Nesse caso, a configurao seria feita em trs passos: A primeira parada seria o arquivo "/etc/modules", onde so listados os mdulos carregados pelo sistema durante o boot. Nele seria adicionada a linha "iptables_nat", ativando o carregamento do mdulo. Em seguida, voc adicionaria (ou descomentaria) a linha "net.ipv4.conf.default.forwarding=1" no arquivo "/etc/sysctl.conf", para ativar o roteamento de pacotes, tornando permanente o comando "echo 1 > /proc/sys/net/ipv4/ip_forward". Finalmente, depois de executar o comando "iptables -t nat -A POSTROUTING -o $placa -j MASQUERADE", que efetivamente ativa o compartilhamento, voc usaria o comando "/etc/init.d/iptables save active" (nas derivadas do Debian) ou "service iptables save" (nas derivadas do Red Hat) para salvar regra e fazer com que ela passe a ser reativada durante o boot.

Compartilhar usando uma nica placa de rede


Se voc est usando um notebook ou um barebone, com uma placa onboard e sem slots de expanso, existe a possibilidade de compartilhar a conexo usando uma nica placa de rede, criando um alias (apelido) para a placa principal. Normalmente, a topologia para compartilhar a conexo ligar o modem ADSL (ou cable modem) na placa eth0 do servidor, conectar a placa eth1 do mesmo servidor ao switch da rede, juntamente com as demais estaes. Ao compartilhar usando uma nica placa, todo mundo passa a ser conectado diretamente ao switch, inclusive o modem. O servidor configurado para ter duas placas de rede "lgicas", uma para se conectar na internet e outra para a rede local:

Uma dica que os modems ADSL geralmente utilizam um cabo de rede cross-over, j que so feitos para serem conectados diretamente a um PC e no ao hub. Nesses casos, voc precisa ligar o modem na porta up-link do hub. Note que isso no necessrio ao usar um switch ou hub-switch, pois eles so capazes de detectar o cabo cruzado e corrigir o sinal via software. Para ativar o compartilhamento, o primeiro passo se conectar normalmente internet no servidor, utilizando as configuraes de praxe. A partir do momento em que ele estiver acessando, crie o alias para a placa de rede "lgica" que o conectar aos micros da rede local, usando o comando: # ifconfig eth0:1 192.168.1.1/24 Isso far com que o servidor passe a se comportar como se tivesse duas placas de rede, uma ligada ao modem ADSL e outra ligada rede local, respondendo no endereo 192.168.1.1 (substitua por um endereo dentro da faixa usada na sua rede local). O "/24" indica a configurao da mscara de sub-rede no padro CIDR, equivale a digitar "255.255.255.0". Compartilhe a conexo da forma usual, configure os clientes da rede e eles j sero capazes de navegar. Lembre-se de que um alias para a placa de rede no o mesmo que uma placa de rede fsica espetada na placa-me. Por isso, o utilitrio para compartilhar a conexo includo na sua

distribuio pode ter problemas para trabalhar desta forma. Se por acaso ele falhar, use os quatro comandos para compartilhar diretamente atravs do Iptables que j vimos. Compartilhar a conexo usando uma nica placa de rede tambm relaxa bastante a segurana da rede. Embora o modem ADSL fique conectado diretamente ao switch da rede, ningum na internet ser capaz de enxergar os micros da rede local, pois eles utilizaro uma faixa de IPs invlida, como 192.168.1.x ou 10.0.0.x. Voc ainda pode adicionar um firewall "fecha tudo" no servidor, para que ele no responda a pings, feche todas as portas, etc. O problema que com o modem ADSL ligado diretamente ao hub, algum que consiga obter acesso configurao do modem poderia ganhar acesso aos micros da rede local atravs dele. Os modems ADSL no so apenas dispositivos burros que fazem a converso analgico/digital, eles possuem vrios recursos para rotear pacotes, criar vrios tipos de filtros e, em muitos casos, at mesmo tneis VPN. Por terem tantos recursos, sempre existe a possibilidade de surgirem bugs diversos de segurana. Pense no modem ADSL como um PC vulnervel, que nunca recebe atualizaes de segurana. Usando duas placas de rede ainda seria preciso passar pelo servidor de compartilhamento, que pode ser protegido com um bom firewall. Ao conectar o modem diretamente ao hub, esta linha de proteo perdida.

Configurando um servidor DHCP


Hoje em dia, quase todas as redes utilizam algum tipo de servidor DHCP. Em geral, eles so ativados automaticamente ao compartilhar a conexo ou junto com algum outro servio, de forma que voc acaba no aprendendo muita coisa sobre a sua configurao. De um modo geral, o trabalho de um servidor DHCP bastante simples. Ele responde aos pacotes de broadcast das estaes, enviando um pacote com um dos endereos IP disponveis e os demais dados da rede. Os pacotes de broadcast so endereados ao endereo "255.255.255.255" e so retransmitidos pelo switch da rede para todas as portas, diferente dos pacotes endereados a um endereo especfico, que so transmitidos apenas na porta relacionada a ele. Periodicamente o servidor DHCP verifica se as estaes ainda esto l, exigindo uma renovao do "aluguel" do endereo IP (opo "lease time"). Isso permite que os endereos IP sejam gastos apenas com quem realmente estiver online, evitando que os endereos disponveis se esgotem. O servidor DHCP mais usado no Linux o ISC DHCP, desenvolvido pela Internet Systems Consortium, uma organizao sem fins lucrativos dedicada a desenvolver servios de infra-estrutura usados na Internet, incluindo o Bind e o NTPD. Caso esteja curioso, a pgina com o cdigo fonte a: http://www.isc.org/sw/dhcp/. Nas distribuies derivadas do Debian, o pacote correspondente ao servidor DHCP se chama "dhcp3-server" e pode ser instalado via apt-get: # apt-get install dhcp3-server Com o pacote instalado, voc pode ativar e desativar o servio usando os comandos: # /etc/init.d/dhcp3-server start # /etc/init.d/dhcp3-server stop Como voc pode imaginar, o "3" corresponde verso do software. Eventualmente ele ser substitudo pelo "dhcp4-server", o que resultar tambm na mudana do nome da pasta onde fica o arquivo e do script de inicializao referente ao servio. No Fedora e no CentOS, o pacote se chama simplesmente "dhcp" e pode ser instalado usando o yum: # yum install dhcp

Embora o pacote se chame apenas "dhcp", o script referente ao servio se chama "dhcpd", de forma que os comandos para iniciar e parar o servio so: # service dhcpd start # service dhcpd stop Diferente do Debian, o servio no ser configurado para ser inicializado durante o boot depois de instalado. Voc precisa ativ-lo manualmente usando o comando "chkconfig": # chkconfig dhcpd on O arquivo de configurao o "dhcpd.conf". Nas distribuies derivadas do Debian, o caminho completo para ele "/etc/dhcp3/dhcpd.conf", enquanto no Fedora e no CentOS apenas "/etc/dhcpd.conf", ou seja, um diretrio acima. Apesar dessas diferenas estticas, o que interessa mesmo a configurao do arquivo e esta sim igual, independentemente da distribuio. Este um exemplo de arquivo de configurao bsico: # /etc/dhcp3/dhcpd.conf ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option routers 192.168.1.1; option domain-name-servers 208.67.222.222,208.67.220.220; option broadcast-address 192.168.1.255; } A opo " default-lease-time" controla o tempo de renovao dos endereos IP. O "600" indica que o servidor verifica a cada dez minutos se as estaes ainda esto ativas. Se voc tiver mais endereos IP do que mquinas, os endereos IP das estaes raramente vo precisar mudar. Mas, no caso de uma rede congestionada, o "max-lease-time" determina o tempo mximo que uma estao pode usar um determinado endereo IP. Isso foi planejado para ambientes onde haja escassez de endereos IP, como, por exemplo, em um provedor de acesso, onde sempre existem mais clientes do que endereos IP disponveis e se trabalha contando que nem todos vo ficar conectados simultaneamente. Em condies normais, essas duas opes no so muito importantes. O que interessa mesmo o bloco que vai logo abaixo, onde ficam as configuraes da rede. A opo "range" determina a faixa de endereos IP que ser usada pelo servidor. Se voc utiliza a faixa de endereos 192.168.1.1 at 192.168.1.254, por exemplo, pode reservar os endereos de 192.168.1.1 a 192.168.1.100 para estaes configuradas com IP fixo e usar os demais para o DHCP, ou ento reservar uma faixa especfica para ele, de 192.168.1.101 a 192.168.1.201, por exemplo. O importante usar faixas separadas para o DHCP e os micros configurados com IP fixo. Na "option routers" vai o endereo do default gateway da rede, ou seja, o endereo do servidor que est compartilhando a conexo. No necessrio que o mesmo micro que est compartilhando a conexo rode tambm o servidor DHCP. Pode ser, por exemplo, que na sua rede o gateway seja o prprio modem ADSL que est compartilhando a conexo e o DHCP seja um dos PCs. A opo "option domain-name-servers" contm os servidores DNS que sero usados pelas estaes. Ao usar dois ou mais endereos, eles devem ser separados por vrgula, sem espaos. Em geral, voc vai usar os prprios endereos DNS do provedor, a menos que voc configure um servidor DNS interno na sua rede (que pode ser instalado no prprio micro que est compartilhando a conexo e rodando o DHCP). Estes servios consomem poucos recursos da mquina.

O servidor DNS mais usado no Linux o Bind. Nas distribuies derivadas do Debian voc pode instal-lo com um "apt-get install bind". O servidor DNS pode ser configurado para implementar um sistema de domnios e subdomnios na sua rede, mas o uso mais comum simplesmente fazer um "cache", onde o servidor DNS simplesmente repassa as requisies para um dos 13 root servers da internet e vai armazenando os endereos que j foram acessados. Mais adiante teremos um captulo inteiro dedicado a ele. Voc pode substituir o arquivo de configurao padro por este modelo, ou edit-lo conforme a necessidade. Ao fazer qualquer alterao no arquivo, voc deve reiniciar o servidor DHCP usando o comando: # /etc/init.d/dhcp3-server restart ou: # service dhcpd restart Com o servidor DHCP configurado, voc pode testar a configurao em um dos clientes Linux, configurando a rede usando o "dhclient", seguido da interface a ser configurada. Ele mostra toda a negociao entre o servidor e o cliente, o que permite que voc verifique se o servidor est usando a configurao definida por voc: # dhclient eth0 Internet Systems Consortium DHCP Client V3.0.4 Copyright 2004-2006 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ Listening on LPF/eth1/00:15:00:4b:68:db Sending on LPF/eth1/00:15:00:4b:68:db Sending on Socket/fallback DHCPREQUEST on eth1 to 255.255.255.255 port 67 DHCPACK from 192.168.1.1 bound to 192.168.1.199 -- renewal in 245 seconds. Como voc pode ver, o cliente deve receber a resposta a partir do endereo IP do servidor rodando o servidor DHCP e ser configurado com um endereo dentro da faixa definida por voc. Uma observao importante que sempre que configurar um servidor com duas placas de rede, voc deve configurar o servidor DHCP para escutar apenas na placa da rede local. No Debian, esta configurao vai no arquivo "/etc/default/dhcp3-server". Procure pela linha: INTERFACES="" ... e adicione a placa que o servidor DHCP deve escutar, como em: INTERFACES="eth0" Para que a configurao entre em vigor, basta reiniciar o servio novamente.

DHCP com IP fixo


Mais uma opo interessante no servidor DHCP a possibilidade de relacionar um determinado endereo IP com o endereo MAC de certo micro da rede. Isso faz com que ele sempre obtenha o mesmo endereo a partir do servidor DHCP, como se tivesse sido configurado para usar IP fixo. Esse recurso usado em redes de terminais leves, para que o servidor "reconhea" os terminais e possa enviar a configurao adequada a cada um, mas pode ser usado tambm em outras situaes, como em uma pequena rede, onde alguns micros compartilham impressoras e arquivos e por isso

no podem ficar mudando de endereo IP a cada reboot. Configurar o servidor DHCP para dar a eles sempre o mesmo IP pode ser mais prtico que configur-los para usar IP fixo manualmente, pois eles continuaro recebendo o mesmo IP mesmo que voc reinstale o sistema (pois, apesar da mudana de sistema operacional, a placa de rede continuar a mesma). Veja o caso de quem usa distribuies Linux live-CD, por exemplo. Para usar este recurso, adicione uma seo como esta para cada host no final do arquivo dhcpd.conf, depois de todas as linhas de configurao, mas antes de fechar a chave (}): host m5 { hardware ethernet 00:0F:B0:55:EA:13; fixed-address 192.168.1.211; } Veja que a seo comea com o nome da mquina, "m5" no exemplo. Em seguida vo, entre chaves, o endereo MAC da placa de rede (que voc pode verificar atravs do comando "ifconfig") e o endereo IP que a estao deve usar. Um exemplo de arquivo completo, incluindo a configurao de IP fixo para duas mquinas seria: ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option routers 192.168.1.1; option domain-name-servers 208.67.222.222,208.67.220.220; option broadcast-address 192.168.1.255; host m5 { hardware ethernet 00:0F:B0:55:EA:13; fixed-address 192.168.1.211; } host semprao { hardware ethernet 00:0F:B0:45:BC:17; fixed-address 192.168.1.212; } } No se esquea de reiniciar o servidor DHCP depois de configurar o arquivo para que a nova configurao seja aplicada: # /etc/init.d/dhcp3-server restart Uma pergunta recorrente sobre o uso de servidores DHCP sobre a possibilidade de manter mais de um servidor DHCP ativo. Em situaes normais, voc nunca deve manter mais de um servidor DHCP ativo ao mesmo tempo, principalmente se ambos estiverem configurados para fornecer endereos dentro da mesma faixa. Caso contrrio, comeam a surgir problemas com micros configurados com o mesmo IP (cada um dado por um DHCP diferente) e assim por diante. Entretanto, em algumas situaes, uma configurao com dois servidores DHCP pode funcionar, naturalmente depois de bem testada. O dhcp3-server usado no Linux bastante rpido, por isso (desde que a configurao no seja muito complexa) costuma responder antes dos servidores DHCP usados nos servidores Windows e na maioria dos modems ADSL, o que pode ser usado a seu favor. Imagine um caso comum: uma rede de 10 ou 20 micros, com um ADSL de 1 megabit,

compartilhado pelo prprio modem. Para melhorar o desempenho da rede, voc resolve implantar um servidor com o Squid configurado para trabalhar como um proxy transparente, alm de um servidor DNS prprio e DHCP. Como este "servidor" o seu prprio micro, que precisa ser desligado de vez em quando, voc decide manter a rede da forma que est, com o modem compartilhando a conexo e o seu micro funcionando como um segundo gateway, dentro da rede local. Voc quer que a rede continue funcionando mesmo quando seu micro precisar ser desligado por um certo tempo, por isso mantm o servidor DHCP do modem ativo, junto com o servidor DHCP instalado no seu micro, configurados para fornecerem faixas diferentes de endereos, de forma a minimizar conflitos. No seu caso, o dhcp3-server mais rpido que o DHCP do modem. Por isso, enquanto ele est ligado, os micros da rede local so configurados para acessar atravs dele, passando pelo proxy transparente. Quando ele desligado, o modem ADSL passa a responder as chamadas e os micros passam a ser configurados para acessar diretamente atravs dele ( preciso reconfigurar os clientes via DHCP para que eles obtenham a configurao a partir do modem e passem a utiliz-lo como gateway). A rede continua funcionando mesmo que seu micro seja desconectado definitivamente. Note que isso tecnicamente errado e s funciona em redes pequenas, onde todos os micros so ligados ao mesmo hub ou switch. Quanto maior a rede, mais imprevisvel se torna o comportamento dos servidores DHCP e mais importante torna-se manter apenas um ativo.

IPV6
Se voc est chegando agora, o IPV6 a verso atualizada do protocolo IP, que utiliza endereos de 128 bits. Ele surgiu para solucionar o problema da escassez de endereos IP, que vem se tornando um problema cada vez mais grave. No IPV4 so usados endereos de apenas 32 bits, o que permitem apenas 4 bilhes de combinaes de endereos. Pode parecer bastante, mas a m distribuio dos endereos e peculiaridades do protocolo, como a necessidade de reservar o primeiro e o ltimo endereo de cada faixa, fazem com que o volume de endereos realmente disponveis seja muito menor. Com o crescimento no volume de servidores e de dispositivos conectados web, apenas questo de tempo at que os endereos IPv4 se esgotem definitivamente. Pode demorar, mas uma migrao em massa para o IPV6 vai acontecer mais cedo ou mais tarde. No IPV6 os endereos so escritos usando caracteres em hexa, conjunto que alm dos nmeros de 0 a 9, inclui tambm as letras A, B, C, D, E e F, totalizando 16 caracteres, cada um usado para representar um grupo de 4 bits. Como so utilizados endereos de 128 bits, so necessrios nada menos do que oito quartetos de caracteres em hexa, separados por ":", como em: 2001:bce4:5641:3412:341:45ae:fe32:65. Um atenuante que os endereos IPV6 podem ser abreviados de diversas formas. Em primeiro lugar, todos os zeros esquerda dentro dos quartetos podem ser omitidos. Por exemplo, em vez de escrever "0341", voc pode escrever apenas "341"; em vez de "0001" apenas "1" e, em vez de "0000" apenas "0", sem que o significado seja alterado. por isso que muitos quartetos dentro dos endereos IPV6 podem ter apenas 3, 2 ou mesmo um nico dgito. Os demais so zeros esquerda, que foram omitidos. muito comum que os endereos IPV6 incluam seqncias de nmeros 0, j que atualmente poucos endereos so usados, de forma que os donos preferem simplificar as coisas. Graas a isso, o endereo "2001:bce4:0:0:0:0:0:1" pode ser abreviado para apenas "2001:bce4::1", onde omitimos todo o trecho central "0:0:0:0:0". Assim como no IPV4, os endereos IPV6 so divididos em dois blocos. Os primeiros 64 bits (os 4 primeiros quartetos) identificam a rede, enquanto os ltimos 64 bits identificam o host. No endereo "2001:bce4:0:0:0:0:0:1", por exemplo, temos a rede "2001:bce4:0:0" e o host "0:0:0:0:1" dentro

dela. No existem mais mscaras de tamanho varivel como no IPV4. Para simplificar a configurao, a parte do endereo referente ao host definida automaticamente a partir do endereo MAC da placa de rede. Como os endereos MAC possuem apenas 12 dgitos (enquanto no IPV6 a parte do host contm 16 dgitos), so adicionados os dgitos "ffff" entre o sexto e stimo dgito do endereo. O endereo "00:16:F2:FE:34:E1", por exemplo, viraria ento "0016:f2ff:fffe:34e1". A atribuio de endereos em uma rede IPV6 segue um processo diferente (e at mais simples) do que em uma rede IPV4, onde os endereos so atribudos automaticamente, sem necessidade de utilizar um servidor DHCP especializado. Os roteadores IPV6 enviam constantemente pacotes especiais, chamados "RAs" (router advertisements). Como o nome sugere, estes pacotes divulgam a existncia do roteador e o endereo de rede utilizado por ele (os 64 bits iniciais do endereo). Ao receberem estes pacotes, os clientes geram seus endereos IPV6 automaticamente, combinando os 64 bits do endereo fornecidos pelo roteador com os 64 bits "pessoais", gerados a partir do endereo MAC da placa de rede. Como o endereo MAC s muda quando voc substituiu a placa de rede, o cliente continuar utilizando o mesmo endereo, reboot aps reboot. No Linux, o servio responsvel por enviar os router advertisements o radvd (router-advertising daemon). A configurao bastante simples; comece instalando o pacote, como em: # apt-get install radvd ou: # yum install radvd Em seguida, crie o arquivo "/etc/radvd.conf" especificando a interface de rede local e o prefixo, ou seja, a parte do endereo referente rede, como em: interface eth0 { AdvSendAdvert on; prefix fee::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; }; Nesse exemplo, estou utilizando o "fee::" como prefixo, que uma faixa de endereos fcil de lembrar. Naturalmente, voc deve utilizar um endereo IPV6 iniciado com o prefixo na configurao do servidor. Para especificar um endereo manualmente, use o comando "ifconfig interface add endereo", como em: # ifconfig eth0 add fee::0015:f2ff:ffa1:d9cc Para tornar a configurao definitiva, adicione as linhas abaixo no arquivo "/etc/network/interfaces", especificando a interface e o endereo IPV6 utilizado: iface eth0 inet6 static address fee::0015:f2ff:ffa1:d9c netmask 64 Terminada a configurao, reinicie o servio "radvd" e o servidor passar a divulgar o prefixo da rede, permitindo que os clientes configurem seus endereos IPV6 automaticamente, combinando o prefixo da rede com os 16 dgitos gerados a partir do endereo MAC da placa de rede:

# /etc/init.d/radvd restart Quase todas as distribuies Linux atuais e tambm o Windows Vista trazem o protocolo IPV6 ativado por padro, de forma que um roteador configurado para enviar os pacotes RA uma boa adio para a sua rede local. O radvd no conflita com dhcp3-server e os hosts da rede podem utilizar endereos IPV4 e IPV6 simultaneamente (sem problema algum), de forma que voc pode simplesmente adicionar o IPV6 sua rede IPV4 j configurada, sem contra-indicaes. Dessa forma, voc pode tanto continuar acessando os outros micros da rede utilizando os endereos IPV4 tradicionais quanto atravs dos endereos IPV6.

Configurando um servidor proxy com o Squid


O Squid permite compartilhar a conexo entre vrios micros, servindo como um intermedirio entre eles e a internet. Usar um proxy diferente de simplesmente compartilhar a conexo diretamente, via NAT. Ao compartilhar via NAT, os micros da rede acessam a internet diretamente, sem restries. O servidor apenas repassa as requisies recebidas, como um garoto de recados. O proxy como um burocrata que no se limita a repassar as requisies: ele analisa todo o trfego de dados, separando o que pode ou no pode passar e guardando informaes para uso posterior. Compartilhar a conexo via NAT mais simples do que usar um proxy como o Squid sob vrios aspectos. Voc compartilha a conexo no servidor, configura os clientes para o utilizarem como gateway e pronto. Ao usar um proxy, alm da configurao da rede, necessrio configurar o navegador e cada outro programa que for acessar a Internet (em cada um dos clientes da rede) para usar o proxy. Esta uma tarefa tediosa e que acaba aumentando bastante seu volume de trabalho, pois toda vez que um micro novo for colocado na rede ou for preciso reinstalar o sistema, ser preciso fazer a configurao novamente. A configurao do proxy muda de navegador para navegador. No Firefox, por exemplo, voc a encontra em "Editar > Preferncias > Avanado > Rede > Configuraes". No IE, a configurao est em "Opes da Internet > Opes > Configuraes da Lan > Usar um servidor Proxy": Alm do navegador, outros programas podem ser configurados para trabalhar atravs do proxy: clientes de MSN, VoIP e at mesmo programas P2P. As vantagens de usar um proxy so basicamente trs: 1- possvel impor restries de acesso com base no horrio, login, endereo IP da mquina e outras informaes, alm de bloquear pginas com contedo indesejado. por isso que quase todos os softwares de filtro de contedo envolvem o uso de algum tipo de proxy, muitas vezes o prprio Squid (j que, como o software aberto, voc pode inclu-lo dentro de outros aplicativos, desde que respeitando os termos da GPL). Mais adiante estudaremos sobre a configurao do SquidGuard e do DansGuardian. 2- O proxy funciona como um cache de pginas e arquivos, armazenando informaes j acessadas. Quando algum acessa uma pgina que j foi carregada, o proxy envia os dados que guardou no cache, sem precisar acessar a mesma pgina repetidamente. Isso acaba economizando bastante banda, tornando o acesso mais rpido. Hoje em dia, os sites costumam usar pginas dinmicas, onde o contedo muda a cada visita, mas, mesmo nesses casos, o proxy d uma boa ajuda, pois embora o html seja diferente a cada visita e realmente precise ser baixado de novo, muitos componentes da pgina, como ilustraes, banners e animaes em flash, podem ser aproveitados do cache, diminuindo o tempo total de carregamento. Dependendo da configurao, o proxy pode apenas acelerar o acesso s pginas ou servir como um verdadeiro cache de arquivos, armazenando atualizaes do Windows Update, downloads diversos

e pacotes instalados atravs do apt-get, por exemplo. Em vez de ter que baixar o ltimo Service Pack do Windows ou a ltima atualizao do Firefox nos 10 micros da rede, voc vai precisar baixar apenas no primeiro, pois os outros 9 vo baixar a partir do cache do Squid. 3- Uma terceira vantagem de usar um proxy que ele loga todos os acessos realizados atravs dele. Voc pode visualizar os acessos posteriormente usando o Sarg, um gerador de relatrios que transforma as longas listas de acessos dos logs em arquivos html bem organizados. Mesmo assim, voc pode estar achando que as vantagens no vo compensar o trabalho de sair configurando micro por micro, programa por programa para usar o proxy, e que mais fcil simplesmente compartilhar via NAT. Entretanto, existe a possibilidade de juntar as vantagens das duas formas de compartilhamento, configurando um proxy transparente como veremos adiante. Ao usar um proxy transparente, voc tem basicamente uma conexo compartilhada via NAT, com a mesma configurao bsica nos clientes. O proxy entra na histria como um adicional. Uma regra de firewall envia as requisies recebidas na porta 80 do servidor para o proxy, que se encarrega de responder aos clientes. Toda a navegao passa a ser feita automaticamente atravs do proxy (incluindo o cache dos arquivos do Windows update, downloads diversos e os pacotes instalados atravs do apt-get), sem que voc precise fazer nenhuma configurao adicional nos clientes.

Instalando o Squid
O Squid composto de um nico pacote, por isso a instalao simples. Instale o pacote "squid" usando o apt-get, yum ou urpmi, como em: # apt-get install squid Toda a configurao do Squid feita em um nico arquivo, o "/etc/squid/squid.conf". Caso voc esteja usando uma verso antiga do Squid, como a includa no Debian Woody, por exemplo, o arquivo pode ser o "/etc/squid.conf". Apesar da mudana na localizao do arquivo de configurao, as opes descritas aqui vo funcionar sem maiores problemas. O arquivo original, instalado junto com o pacote, realmente enorme, contm comentrios e exemplos para quase todas as opes disponveis. Ele pode ser uma leitura interessante se voc j tem uma boa familiaridade com o Squid e quer aprender mais sobre cada opo, mas, de incio, melhor comear com um arquivo de configurao mais simples, apenas com as opes mais usadas.

Em geral, cada distribuio inclui uma ferramenta diferente para a configurao do proxy. Uma das mais usadas o Webmin, disponvel em vrias distribuies. A funo dessas ferramentas disponibilizar as opes atravs de uma interface grfica e gerar o arquivo de configurao com base nas opes escolhidas. Em alguns casos, essas ferramentas ajudam bastante, mas, como elas mudam de distribuio para distribuio, acaba sendo mais produtivo aprender a trabalhar direto no arquivo de configurao, que, afinal, no to complicado assim. Assim como em outros tpicos do livro, vamos aprender a configurar o Squid "no muque", sem depender de utilitrios de configurao. Comece renomeando o arquivo padro, de forma a conserv-lo para fins de pesquisa: # mv /etc/squid/squid.conf /etc/squid/squid.conf.orig Em seguida, crie um novo arquivo "/etc/squid/squid.conf", contendo apenas as quatro linhas abaixo: http_port 3128 visible_hostname gdh acl all src 0.0.0.0/0.0.0.0 http_access allow all Estas linhas so o suficiente para que o Squid "funcione". Como viu, aquele arquivo de configurao gigante tem mais uma funo informativa, citando e explicando as centenas de opes disponveis. Apenas um punhado das opes so realmente necessrias, pois, ao omit-las, o Squid simplesmente utiliza os valores default. por isso que acaba sendo mais simples comear com um arquivo vazio e ir inserindo apenas as opes que voc conhece e deseja alterar. As quatro linhas dizem o seguinte: http_port 3128: A porta onde o servidor Squid vai ficar disponvel. A porta 3128 o default, mas muitos administradores preferem utilizar a porta 8080, que soa mais familiar a muitos usurios. visible_hostname gdh: O nome do servidor, o mesmo que foi definido na configurao da rede. Ao usar os modelos desse captulo, no se esquea de substituir o "gdh" pelo nome correto do seu servidor, como informado pelo comando "hostname". acl all src 0.0.0.0/0.0.0.0 e http_access allow all: Estas duas linhas criam uma acl (uma poltica de acesso) chamada "all" (todos), incluindo todos os endereos IP possveis. Ela permite que qualquer um dentro desta lista use o proxy, ou seja, permite que qualquer um use o proxy, sem limitaes. Para testar a configurao, reinicie o servidor Squid com o comando: # /etc/init.d/squid restart Se estiver no CentOS, Fedora ou Mandriva, pode utilizar o comando "service", que economiza alguns toques no teclado: # service squid restart No Slackware, o comando ser "/etc/rc.d/rc.squid restart", seguindo a lgica do sistema em colocar os scripts referentes aos servios na pasta /etc/rc.d/ e inicializ-los automaticamente durante o boot, desde que marcada a permisso de execuo. Para testar o proxy, configure um navegador (no prprio servidor) para usar o proxy, atravs do endereo 127.0.0.1 (o localhost), porta 3128. Se no houver nenhum firewall pelo caminho, voc conseguir acessar o proxy tambm atravs dos outros micros da rede local, basta configurar os navegadores para usarem o proxy, fornecendo o endereo do servidor na rede local. Caso necessrio, abra a porta 3128 na configurao do firewall, para que o Squid possa receber as conexes. Um exemplo de regra manual do Iptables para abrir a porta do Squid apenas para a rede local (a interface eth0 no exemplo) :

iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT

Criando uma configurao bsica


O problema com o modelo de configurao minimalista que acabamos de ver que com apenas estas quatro linhas o proxy ficar muito aberto. Se voc deixar o servidor proxy ativo no prprio servidor que compartilha a conexo e no houver nenhum firewall ativo, qualquer um na internet poderia usar o seu proxy, o que naturalmente no desejado. O proxy deve ficar ativo apenas para a rede local. Vamos gerar, ento, um arquivo mais completo, permitindo que apenas os micros da rede local possam usar o proxy e definindo mais algumas polticas de segurana. Neste segundo exemplo j aproveitei algumas linhas do arquivo original, criando regras que permitem o acesso a apenas algumas portas especficas e no mais a qualquer coisa, como na configurao anterior: http_port 3128 visible_hostname gdh acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # swat acl Safe_ports port 1025-65535 # portas altas acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all As acl's "SSL_ports" e a "Safe_ports" so as responsveis por limitar as portas que podem ser usadas atravs do proxy. Neste exemplo, usei a configurao-modelo indicada na documentao do Squid, que prev o uso de diversos protocolos conhecidos e tambm o uso de portas altas, acima da 1024. Ela to extensa porque cada porta especificada em uma linha diferente. Podemos simplificar isso agrupando as portas na mesma linha, o que resulta em um arquivo de configurao muito menor, mas que faz exatamente a mesma coisa: http_port 3128

visible_hostname gdh acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535 acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Veja que em ambos os exemplos adicionei duas novas acl's. A acl "localhost" contm o endereo 127.0.0.1, que voc utiliza ao usar o proxy localmente (ao navegar usando o prprio servidor), e a acl "rede local", que inclui os demais micros da rede local. Substitua o "192.168.1.0/24" pela faixa de endereos IP e a mscara de sub-rede usada na sua rede local (o 24 equivale mascara 255.255.255.0). Depois de criadas as duas polticas de acesso, vo duas linhas no final do arquivo que especificam que os micros que se enquadrarem nelas podero usar o proxy: http_access allow localhost http_access allow redelocal Lembra-se da acl "all", que contm todo mundo? Vamos us-la para especificar que os clientes que no se enquadrarem nas duas regras acima (ou seja, clientes no-autorizados, vindos da Internet) no podero usar o proxy: http_access deny all Esta linha deve ir no final do arquivo, depois das outras duas. A ordem importante, pois o Squid interpreta as regras na ordem em que so colocadas no arquivo. Se voc permite que o micro X acesse o proxy, ele acessa, mesmo que uma regra mais abaixo diga que no. Se voc adicionasse algo como: acl redelocal src 192.168.1.0/24 http_access allow redelocal http_access deny redelocal ... os micros da rede local continuariam acessando, pois a regra que permite vem antes da que probe. Existem alguns casos de sites que no funcionam bem quando acessados atravs de proxies, um exemplo comum o "Conectividade Social", da Caixa. Normalmente nesses casos o problema est em algum recurso fora do padro usado pelo sistema do site e no no servidor proxy propriamente dito, mas, de qualquer forma, voc pode solucionar o problema de forma muito simples orientando o servidor proxy a repassar as requisies destinadas ao site diretamente. Para isso, adicionamos uma ACL na configurao, especificando a URL do site e usando a opo

"always_direct": acl site dstdomain siteproblematico.com always_direct allow site Esta regra deve vir antes da regra que libera os acessos provenientes da rede local, como em: acl site dstdomain siteproblematico.com always_direct allow site acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Depois de configurar o arquivo, no se esquea de reiniciar o servio para que a configurao entre em vigor: # /etc/init.d/squid restart Nesse ponto o seu proxy j est completamente funcional. Voc pode comear a configurar os navegadores nos PCs da rede local para utiliz-lo e acompanhar o desempenho da rede. Agora que j vimos o arroz com feijo, vamos aos detalhes mais avanados da configurao:

Configurando o cache de pginas e arquivos


Uma das configuraes mais importantes com relao ao desempenho do proxy e otimizao do trfego da rede a configurao dos caches, onde o Squid guarda as pginas e arquivos j acessados de forma a fornec-los rapidamente quando solicitados novamente. O Squid trabalha com dois tipos de cache: 1- Cache rpido, feito usando parte da memria RAM do servidor; 2- Cache um pouco mais lento porm maior, feito no HD. O cache na memria RAM ideal para armazenar arquivos pequenos, como pginas html e imagens, que sero entregues instantaneamente para os clientes. O cache no HD usado para armazenar arquivos maiores, como downloads, arquivos do Windows Update e pacotes baixados via apt-get. O cache na memria RAM sempre relativamente pequeno, j que o volume de memria RAM no servidor sempre muito menor do que o espao em disco. O cache no HD pode ser mais generoso, afinal a idia que ele guarde todo tipo de arquivos, principalmente os downloads grandes, que demoram para serem baixados. A configurao do cache feita adicionando mais algumas linhas no arquivo de configurao: 1- A configurao da quantidade de memria RAM dedicada ao cache feita adicionando a opo "cache_mem", que contm a quantidade de memria que ser dedicada ao cache. Para reservar 64 MB, por exemplo, a linha ficaria: cache_mem 64 MB Como regra geral, voc pode reservar 32 ou 64 MB para o cache em um servidor no dedicado, que atende a apenas alguns micros (como o servidor de uma pequena rede local) e at 1/3 da memria RAM total em um servidor proxy dedicado, que atende a um volume maior de usurios (veja mais detalhes a seguir). Em um servidor com 1 GB de RAM, por exemplo, voc poderia reservar at 350 MB para o cache na memria. 2- Logo depois vai a opo "maximum_object_size_in_memory", que determina o tamanho mximo dos arquivos que sero guardados no cache feito na memria RAM (o resto vai para o cache feito no HD). O cache na memria muito mais rpido, mas como a quantidade de RAM

muito limitada, melhor deix-la disponvel para pginas web, figuras e arquivos pequenos em geral. Para que o cache na memria armazene arquivos de at 64 KB, por exemplo, adicione a linha: maximum_object_size_in_memory 64 KB 3- Em seguida vem a configurao do cache em disco, que armazenar o grosso dos arquivos. Por default, o mximo so downloads de at 16 MB e o mnimo zero, o que faz com que mesmo imagens e arquivos pequenos sejam armazenados no cache. Quase sempre mais rpido ler a partir do cache do que baixar de novo da web, mesmo que o arquivo seja pequeno. Se voc faz download de arquivos grandes com freqncia e deseja que eles fiquem armazenados no cache, aumente o valor da opo "maximum_object_size". Isso especialmente til para quem precisa baixar muitos arquivos atravs do apt-get ou Windows Update em muitos micros da rede. Se voc quiser que o cache armazene arquivos de at 512 MB, por exemplo, as linhas ficariam: maximum_object_size 512 MB minimum_object_size 0 KB Voc pode definir ainda a percentagem de uso do cache que far o Squid comear a descartar os arquivos mais antigos. Por padro, sempre que o cache atingir 95% de uso, sero descartados arquivos antigos at que a percentagem volte para um nmero abaixo de 90%: cache_swap_low 90 cache_swap_high 95 4- Depois vem a opo "cache_dir", que composta por quatro valores. O primeiro, (/var/spool/squid) indica a pasta onde o Squid armazena os arquivos do cache, enquanto o segundo (2048) indica a quantidade de espao no HD (em MB) que ser usada para o cache. Aumente o valor se voc tem muito espao no HD do servidor e quer que o Squid guarde os downloads por muito tempo. Continuando, os nmeros 16 e 256 indicam a quantidade de subpastas que sero criadas dentro do diretrio. Por padro, temos 16 pastas com 256 subpastas cada uma. O nmero "ideal" de pastas e subpastas para um melhor desempenho varia de acordo com o sistema de arquivos usado, mas esta configurao padro adequada para a maioria das situaes. Combinando as quatro opes, a linha ficaria: cache_dir ufs /var/spool/squid 2048 16 256 Assim como na maioria das opes do Squid, se a linha "cache_dir" for omitida, usada a configurao default para a opo, que usar o diretrio "/var/spool/squid" e fazer um cache em disco de 100 MB. 5- Voc pode definir ainda o arquivo onde so guardados os logs de acesso do Squid. Por padro, o Squid guarda o log de acesso no arquivo "/var/log/squid/access.log". Este arquivo usado pelo Sarg para gerar as pginas com as estatsticas de acesso: cache_access_log /var/log/squid/access.log Mais uma configurao que voc pode querer alterar o padro de atualizao do cache. Estas trs linhas precisam sempre ser usadas em conjunto, ou seja, voc pode alter-las, mas sempre as trs precisam estar presentes no arquivo. Eliminando uma, o Squid ignora as outras duas e usa o default. Os nmeros indicam o intervalo (em minutos) que o Squid ir aguardar antes de verificar se um item do cache (uma pgina, por exemplo) foi atualizado, para cada um dos trs protocolos. O primeiro nmero (o 15) indica que o Squid verificar (a cada acesso) se as pginas e arquivos com mais de 15 minutos foram atualizados. Ele faz uma verificao rpida, checando o tamanho do arquivo e, se o arquivo no mudou, ele continua fornecendo aos clientes o arquivo que est no cache, economizando banda da conexo O terceiro nmero (o 2280, equivalente a dois dias) indica o tempo mximo, depois do qual o objeto

sempre verificado. Alm do http e ftp, o Squid suporta o protocolo gopher, que era muito usado nos primrdios da internet para localizar documentos de texto, mas perdeu a relevncia hoje em dia: refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 Depois de adicionar todas estas configuraes, o nosso arquivo de configurao j ficar bem maior: http_port 3128 visible_hostname gdh cache_mem 64 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535 acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Aqui j temos uma configurao mais completa, incluindo um conjunto de regras de segurana (para que o proxy seja usado apenas a partir da rede local) e a configurao do cache. Esta uma configurao adequada para uso em uma rede domstica ou em um pequeno escritrio. A acl "Safe_ports", alimentada com um conjunto de portas (80, 21 e outras) usada para restringir as portas de sada do servidor proxy, evitando, por exemplo, que ele seja usado para enviar e-mails (porta 25). Isso evita um conjunto de abusos comuns e uma configurao importante em qualquer servidor que precise ser configurado de forma minimamente segura. Naturalmente, voc pode adicionar outras portas lista, conforme necessrio. Em uma rede maior, voc provavelmente iria querer adicionar algumas limitaes de acesso, limitando o acesso a algumas pginas, criando um sistema de autenticao ou limitando o uso com base no horrio, entre outras possibilidades. Vamos a elas.

Adicionando restries de acesso


Em um ambiente de trabalho, a idia que os funcionrios usem a internet para comunicao, pesquisa e outras funes relacionadas ao que esto fazendo. Muitas empresas permitem que sejam acessados os e-mails pessoais e coisas do gnero, mas sempre at um certo limite. Seu chefe no vai gostar se comearem a passar a maior parte do tempo no Orkut, por exemplo. Chegamos ento s regras para restrio de acesso, que so uma necessidade em muitas redes.

Bloqueando por domnios ou palavras


O Squid permite bloquear sites indesejados de forma bastante simples usando o parmetro "dstdomain". Ele permite que voc crie acl's contendo endereos de sites que devem ser bloqueados (ou permitidos). Isso feito em duas etapas. Primeiro voc cria a acl, especificando os endereos e, em seguida, usa o parmetro "http_access" para bloquear ou liberar o acesso a eles. Veja um exemplo: acl bloqueados dstdomain orkut.com playboy.abril.com.br http_access deny bloqueados Aqui eu criei uma acl chamada "bloqueados", que contm os endereos "orkut.com" e "playboy.abril.com.br" e em seguida usei o parmetro "http_access deny" para bloquear o acesso a eles. Voc pode incluir diversas acls diferentes dentro da configurao do Squid, desde que use um nome diferente para cada uma. De certa forma, elas so similares s variveis, que usamos ao programar em qualquer linguagem. Ao aplicar a regra, o Squid faz a resoluo do domnio e passa a bloquear todas sub-pginas que estiverem hospedadas dentro dele. Existe uma ressalva: muitos sites podem ser acessados tanto com o "www" quanto sem. Se os dois estiverem hospedados em servidores diferentes, o Squid considerar que tratam-se de dois sites diferentes, de forma que ao bloquear apenas o "www.orkut.com" os usurios ainda conseguiro acessar o site atravs do "orkut.com" e vice-versa. Nesses casos, para bloquear ambos, preciso incluir as duas possibilidades dentro da regra, como em: acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br http_access deny bloqueados Voc pode incluir quantos domnios quiser dentro da acl, basta separ-los por espao e deixar tudo na mesma linha. Se a regra comear a ficar muito grande, voc tem a opo de transferir as entradas para um arquivo. Nesse caso, crie um arquivo de texto simples, com todos os domnios desejados (um por linha), como em: orkut.com www.orkut.com playboy.abril.com.br www.myspace.com ... e use a regra abaixo na configurao do Squid para que ele seja processado e os domnios sejam includos na acl. No exemplo, estou usando o arquivo "/etc/squid/bloqueados": acl bloqueados url_regex -i "/etc/squid/bloqueados" http_access deny bloqueados

Naturalmente, no seria vivel tentar bloquear manualmente todos os sites pornogrficos, chats, comunidades online, e todos os outros tipos de sites que no so teis em um ambiente de trabalho. A idia seria logar os acessos (com a ajuda do Sarg, que veremos mais adiante) e bloquear os sites mais acessados, conforme tomar conhecimento deles. sempre uma corrida de gato e rato, mas, em se tratando de pessoas adultas, no h nada que uma boa conversa com o chefe no possa resolver. ;) De qualquer forma, em alguns ambientes pode ser mais fcil bloquear inicialmente o acesso a todos os sites e ir abrindo o acesso a apenas alguns sites especficos, conforme a necessidade. Neste caso, invertemos a lgica da regra. Criamos um arquivo com sites permitidos, adicionamos a regra que permite o acesso a eles e em seguida bloqueamos o acesso a todos os demais, como neste exemplo: acl permitidos url_regex -i "/etc/squid/permitidos" http_access allow permitidos http_access deny all Nas verses recentes do Squid, ao bloquear um domnio automaticamente bloqueado tambm o endereo IP do servidor correspondente. Isso evita que os usurios da rede consigam burlar o proxy, acessando os sites diretamente pelo IP. De qualquer forma, voc pode criar diretamente regras que bloqueiem determinados endereos IP, o que til em casos de servidores sem domnio registrado, ou que respondam por vrios domnios. Nesse caso, a regra ficaria: acl ips-bloqueados dst 200.234.21.23 200.212.15.45 http_access deny ips-bloqueados Voc pode descobrir rapidamente o endereo IP de um determinado domnio usando o comando "host", como em: $ host google.com google.com A 72.14.207.99 google.com A 64.233.187.99 google.com A 64.233.167.99 Depois de adicionar as novas regras, nosso arquivo de configurao ficaria assim: http_port 3128 visible_hostname gdh error_directory /usr/share/squid/errors/Portuguese/ cache_mem 64 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535 acl purge method PURGE acl CONNECT method CONNECT

http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl bloqueados url_regex -i "/etc/squid/bloqueados" http_access deny bloqueados acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Veja que coloquei as duas regras antes do "http_access allow redelocal", que abre tudo para a rede local. Como o Squid processa as regras seqencialmente, as pginas que forem bloqueadas pela acl "bloqueados" no chegam a passar pela regra que autoriza os acessos provenientes da rede local. Uma segunda possibilidade usar o parmetro "dstdom_regex", que permite bloquear sites de uma forma mais geral, com base em palavras includas na URL de acesso. Voc pode bloquear todas as pginas cujo endereo inclua a palavra "sexo" ou "orkut", por exemplo. Note que, ao usar esta regra, o Squid verifica a existncia das palavras apenas na URL do site e no no contedo da pgina. Para criar filtros baseados no contedo, voc pode utilizar o DansGuardian, que veremos mais adiante. Crie mais um arquivo de texto, contendo as palavras que devem ser bloqueadas, uma por linha, como em: orkut xxx sexo teens warez ... e adicione a regra abaixo, contendo a localizao do arquivo: acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas" http_access deny palavrasproibidas O uso desta regra um pouco mais problemtico, pois bloquear todas pginas que contenham qualquer uma das palavras listadas na URL. Esta opo sempre levar a alguns falsos positivos e por isso deve ser usada com mais cuidado. Uma vantagem que ela permite bloquear facilmente pginas dinmicas, onde a palavra passada como parmetro da URL. Um exemplo o Orkut, onde, depois da transferncia para o Google, os domnios principais passaram a encaminhar para URLs dinmicas dentro do domnio do Google, como em: https://www.google.com/accounts/ServiceLogin?service=orkut&continue=http%3A%2F %2Fwww.orkut.com %2FRedirLogin.aspx%3Fmsg%3D0%26page%3Dhttp%253A%252F%252F www.orkut.com%252FHome.aspx&hl=pt-BR&rm=false&passive=true Voc no poderia simplesmente bloquear o domnio "google.com" usando uma regra url_regex, mas poderia muito bem usar o dstdom_regex para bloquear a palavra "orkut" e assim bloquear o acesso ao site sem bloquear o acesso a outros servios do Google. No existe problema em combinar o bloqueio de domnios e de palavras dentro da URL, voc pode lanar mo de uma combinao das duas coisas, de acordo com a situao. Para isso, basta usar as

duas regras simultaneamente, como em: acl bloqueados url_regex -i "/etc/squid/bloqueados" http_access deny bloqueados acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas" http_access deny palavrasproibidas acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Includas as regras, os clientes passam a ver uma mensagem de erro ao tentar acessar pginas que se enquadrem nos bloqueios:

Por padro, as mensagens de erro aparecerem em ingls. No nosso caso elas esto aparecendo em portugus devido linha "error_directory /usr/share/squid/errors/Portuguese/" que inclu no modelo de configurao anterior. Voc pode personalizar as pginas de erro editando os arquivos dentro da pasta "/usr/share/squid/errors/Portuguese" ou "/usr/share/squid/errors/English" (de acordo com a lngua definida na configurao). A pasta contm vrias pginas html, uma para cada tipo de erro indicado.

Bloqueando por horrio


As regras a seguir fazem com que o proxy aceite ou recuse conexes feitas dentro de determinados horrios. Voc pode definir regras para perodos especficos e combin-las para bloquear todos os horrios em que voc no quer que o proxy seja usado ou vice-versa. Para que o proxy bloqueie acessos feitos entre meia-noite e 6:00 da manh e no horrio de almoo, por exemplo, voc usaria as regras: acl madrugada time 00:00-06:00 http_access deny madrugada acl almoco time 12:00-14:00 http_access deny almoco Estas regras iriam, novamente, antes da regra "http_access allow redelocal" no arquivo de configurao. Agora, imagine que voc quer fazer diferente. Ao invs de bloquear o acesso na hora de almoo, voc quer deixar o proxy aberto, para que aqueles que queiram acessar o Orkut ou acessar os e-

mails possam fazer isso fora do horrio de trabalho. Neste caso, voc usaria uma regra como: acl almoco time 12:00-14:00 http_access allow almoco Esta regra entraria no arquivo de configurao antes das regras "http_access deny bloqueados" e outras restries. Assim, os acessos que forem aceitos pela regra do almoo no passaro pelas regras que fazem o bloqueio, como em: acl almoco time 12:00-14:00 http_access allow almoco acl bloqueados url_regex -i "/etc/squid/bloqueados" http_access deny bloqueados acl extban url_regex -i "/etc/squid/extban" http_access deny extban acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Voc pode tambm combinar o bloqueio de palavras ou domnio com as regras de bloqueio por horrio, permitindo que os usurios acessem um determinado site apenas no horrio de almoo, por exemplo. Neste caso, a regra seria: acl almoco time 12:00-14:00 acl orkut dstdomain orkut.com www.orkut.com http_access allow orkut almoco http_access deny orkut Fazendo isso, o Squid entende que os endereos includos dentro da acl "orkut" devem ser permitidos, mas apenas dentro do horrio especificado na acl "almoco". Em seguida includa mais uma regra, que bloqueia o acesso ao site em outros horrios.

Gerenciando o uso da banda


O Squid oferece uma forma simples de limitar o uso da banda disponvel e definir o quanto cada usurio pode usar (mantendo parte do link livre para os demais), utilizando um recurso chamado "delay pools". Imagine, por exemplo, que voc tem um link de 1 megabit para uma rede com 20 usurios. Se cada um puder ficar baixando o que quiser, provvel que a rede fique saturada em determinados horrios, deixando a navegao lenta para todo mundo. Voc pode evitar isso limitando a banda que cada usurio pode usar e a banda total, que todos os usurios somados podero usar simultaneamente. recomendvel, neste caso, que o servidor proxy (que combina todos os acessos via http) consuma um pouco menos que o total de banda disponvel, de forma a sempre deixar um pouco reservado para outros protocolos. Um link de 1 megabit (1024 kbits) corresponde a 131.072 bytes por segundo. Nas regras do Squid, sempre usamos bytes, por isso lembre-se de fazer a converso, dividindo o valor em kbits por 8 e multiplicando por 1024 para ter o valor em bytes. Podemos, por exemplo, limitar a banda total usada pelo Squid a 114.688 bytes por segundo, deixando 128 kbits do link livres para outros protocolos e limitar cada usurio a no mximo 16.384 bytes por segundo, que correspondem a 128 kbits. Nem todos os usurios vo ficar baixando arquivos a todo momento, por isso o valor ideal reservado a cada usurio vai variar muito de acordo com a rede. Voc pode acompanhar o uso do link e ir ajustando o valor conforme a utilizao.

Neste caso, a parte final do arquivo de configurao ficaria: acl redelocal src 192.168.1.0/24 delay_pools 1 delay_class 1 2 delay_parameters 1 114688/114688 16384/16348 delay_access 1 allow redelocal http_access allow localhost http_access allow redelocal http_access deny all A acl "redelocal" est agora condicionada a trs novas regras, que aplicam o uso do limite de banda. O acesso continua sendo permitido, mas agora dentro das condies especificadas na linha "delay_parameters 1 114688/114688 16384/16384", onde vo (respectivamente) os valores com a banda total disponvel para o Squid e a banda disponvel para cada usurio. Veja que nessa regra limitamos a banda apenas para a acl "redelocal" e no para o "localhost". Isso significa que voc continua conseguindo fazer downloads na velocidade mxima permitida pelo link ao acessar a partir do prprio servidor; a regra se aplica apenas s estaes. possvel tambm criar regras de exceo para endereos IP especficos, que podero fazer downloads sem passar pelo filtro. Nesse caso, criamos uma acl contendo o endereo IP da estao que deve ter o acesso liberado usando o parmetro "src" e a colocamos antes da regra que limita a velocidade, como em: acl chefe src 192.168.1.2 http_access allow chefe acl redelocal src 192.168.1.0/24 delay_pools 1 delay_class 1 2 delay_parameters 1 114688/114688 16384/16348 delay_access 1 allow redelocal http_access allow localhost http_access allow redelocal http_access deny all Esta regra de exceo pode der usada tambm em conjunto com as demais regras de restrio de acesso que vimos anteriormente. Basta que a acl com o IP liberado seja colocada antes das acls com as restries de acesso, como em: acl chefe src 192.168.1.2 http_access allow chefe acl bloqueados url_regex -i "/etc/squid/bloqueados" http_access deny bloqueados acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas" http_access deny palavrasproibidas acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Concluindo, mais um tipo de bloqueio til em muitas situaes com relao a formatos de arquivos. Voc pode querer bloquear o download de arquivos .exe ou .sh para dificultar a instalao de programas nas estaes, ou bloquear arquivos .avi ou .wmv para economizar banda da rede, por exemplo.

Neste caso, voc pode usar a regra a seguir, especificando as extenses de arquivo desejadas. Ela utiliza o parmetro "url_regex" (o mesmo que utilizamos para criar o bloqueio de domnios), dessa vez procurando pelas extenses de arquivos especificadas: acl extban url_regex -i \.avi \.exe \.mp3 \.torrent http_access deny extban Esta regra aceita tambm o uso de um arquivo externo, de forma que se a lista comear a ficar muito grande, voc pode migr-la para dentro de um arquivo de texto e especificar sua localizao dentro da acl, como em: acl extban url_regex -i "/etc/squid/extban" http_access deny extban Dentro do arquivo, voc inclui as extenses desejadas (sem esquecer da barra invertida antes do ponto), uma por linha, como em: \.avi \.exe \.mp3 \.torrent Uma observao que bloquear arquivos .torrent usando essa regra no impede que os usurios da rede utilizem o bittorrent, mas apenas que baixem os arquivos .torrent para iniciarem o download (o que acaba sendo o suficiente para fazer os usurios menos tcnicos desistirem de baixar o arquivo). Para realmente bloquear o download de arquivos via bittorrent, necessrio bloquear diretamente os endereos dos trackers. Continuando, sempre que fizer alteraes na configurao, voc pode aplicar as mudanas usando o comando: # /etc/init.d/squid reload Evite usar o "/etc/init.d/squid restart" em ambientes de produo, pois ele fora um reincio completo do Squid, onde o proxy precisa finalizar todas as conexes abertas, finalizar todos os processos e desativar o cache, para s ento ler a configurao e carregar todos os componentes novamente. Isso faz com que o proxy fique vrios segundos (ou at minutos, de acordo com o nmero de clientes conectados a ele) sem responder conexes, fazendo com que o acesso fique fora do ar: # /etc/init.d/squid restart Restarting Squid HTTP proxy: squid Waiting.....................done. O parmetro "reload" permite que o Squid continue respondendo aos clientes e aplique a nova configurao apenas s novas requisies. Ele suportado por diversos outros servios onde o "restart" causa interrupo no servio, como no caso do Apache.

Proxy com autenticao


Voc pode adicionar uma camada extra de segurana exigindo autenticao no proxy. Este recurso pode ser usado para controlar quem tem acesso internet e auditar os acessos em caso de necessidade. Quase todos os navegadores oferecem a opo de salvar a senha, de modo que o usurio precisa digit-la apenas uma vez a cada sesso: A forma mais simples de implementar autenticao no Squid usando o mdulo "ncsa_auth", que faz parte do pacote principal. Ele utiliza um sistema simples, baseado em um arquivo de senhas, onde voc pode cadastrar e bloquear os usurios rapidamente.

Para criar o arquivo de senhas, precisamos do script "htpasswd". Nas distribuies derivadas do Debian ele faz parte do pacote apache2-utils, que voc pode instalar via apt-get: # apt-get install apache2-utils No CentOS e no Fedora ele faz parte do pacote principal do apache (o pacote "httpd"), que pode ser instalado atravs do yum. Em seguida, crie o arquivo que ser usado para armazenar as senhas, usando o comando "touch" (que simplesmente cria um arquivo de texto vazio): # touch /etc/squid/squid_passwd O prximo passo cadastrar os logins usando o htpasswd, especificando o arquivo que acabou de criar e o login que ser cadastrado, como em: # htpasswd /etc/squid/squid_passwd gdh Depois de terminar de cadastrar os usurios, adicione as linhas que ativam a autenticao no squid.conf: auth_param basic realm Squid auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados O "auth_param basic realm Squid" indica o nome do servidor, da forma como ele aparecer na janela de autenticao dos clientes; esta na verdade uma opo meramente esttica. O "/usr/lib/squid/ncsa_auth" a localizao da biblioteca responsvel pela autenticao. Eventualmente, ela pode estar em uma pasta diferente dentro da distribuio que estiver usando; nesse caso, use o comando "locate" ou a busca do sistema para encontrar o arquivo e altere a linha indicando a localizao correta. Finalmente, o "/etc/squid/squid_passwd" indica a localizao do arquivo de senhas que criamos no passo anterior. Estas quatro linhas criam uma acl chamada "autenticados" (poderia ser outro nome), que contm os usurios que se autenticarem usando um login vlido. Estas linhas devem ser colocadas antes de qualquer outra regra que libere o acesso, j que, se o acesso aceito por uma regra anterior, ele no passa pela regra que exige autenticao. Entretanto, se voc usar uma configurao similar a essa: auth_param basic realm Squid auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all ... vai notar que a regra de autenticao essencialmente desativa a regra que bloqueia o acesso de usurios fora da rede local. Todos os usurios tem acesso ao prompt de autenticao e todos que se autenticam ganham acesso, mesmo que estejam utilizando endereos fora da faixa usada na rede. Para evitar isso, necessrio restringir o acesso de usurios fora da rede local antes da regra de autenticao. Veja um exemplo: # Bloqueia acessos de fora da rede local antes de passar pela autenticao: acl redelocal src 192.168.1.0/24 http_access deny !redelocal

# Outras regras de restrio vo aqui, de forma que o acesso seja negado # antes mesmo de passar pela autenticao: acl bloqueados url_regex -i "/etc/squid/bloqueados" http_access deny bloqueados # Autentica o usurio: auth_param basic realm Squid auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados # Libera o acesso da rede local e do localhost para os autenticados, # bloqueia os demais: http_access allow localhost http_access allow redelocal http_access deny all Veja que agora usamos a regra "http_access deny !redelocal" no incio da cadeia. A exclamao inverte a lgica da regra, fazendo com que ela bloqueie todos os endereos que no fizerem parte da acl "redelocal". Ao implementar a autenticao, voc passa a poder criar regras de acesso com base nos logins dos usurios e no mais apenas com base nos endereos IP. Imagine, por exemplo, que voc queira que apenas dois usurios da rede tenham acesso irrestrito ao proxy. Os demais (mesmo depois de autenticados), podero acessar apenas no horrio do almoo, e quem no tiver login e senha vlidos no acessa em horrio nenhum. Neste caso, voc poderia usar esta configurao: auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED acl permitidos proxy_auth gdh tux acl almoco time 12:00-13:00 http_access allow permitidos http_access allow autenticados almoco Aqui temos os usurios que passaram pela autenticao divididos em duas regras. A acl "autenticados" inclui todos os usurios, enquanto a acl "permitidos" contm apenas os usurios gdh e tux. Graas regra "http_access allow permitidos", os dois podem acessar em qualquer horrio, enquanto os demais caem na regra "http_access allow autenticados almoco", que cruza o contedo das acls "autenticados" e "almoo", permitindo que eles acessem, mas apenas das 12:00 s 13:00. Alm do mdulo ncsa_auth que, como vimos, permite usar um arquivo de senhas separado, vlido apenas para o proxy, o Squid suporta tambm um conjunto de mdulos que permitem fazer com que o Squid se autentique em um servidor externo, integrando o proxy a um sistema de autenticao j existente. O mais simples o mdulo smb_auth, que permite que o Squid autentique os usurios em um servidor Samba, configurado como PDC. Com isso, os usurios passam a utilizar o mesmo login e senha que utilizam para fazer logon. Para usar o smb_auth, voc usaria a configurao a seguir, especificando o domnio (na opo -W) e o endereo do servidor PDC (na opo -U): auth_param basic realm Squid authenticate_ip_ttl 5 minutes auth_param basic program /usr/lib/squid/smb_auth -W dominio -U 192.168.1.254 acl autenticados proxy_auth REQUIRED http_access allow autenticados

Com o mdulo smb_auth, o Squid simplesmente repassa o login e senha fornecido pelo usurio ao servidor PDC e autoriza o acesso caso o PDC retorne uma resposta positiva. No necessrio que o servidor com o Squid faa parte do domnio, nem que exista uma cpia do Samba rodando localmente (so necessrios apenas os pacotes "samba-client" e "samba-common", que correspondem ao cliente Samba), por isso a configurao bastante simples. Naturalmente, para utilizar esta configurao voc deve ter um servidor PDC na sua rede, como aprenderemos a configurar em detalhes no captulo sobre o Samba. Outros mdulos que podem ser usados so o "squid_ldap_auth", que permite que o servidor autentique os usurios em um servidor LDAP e o "ntlm_auth", que permite integrar o servidor Squid ao Active Directory.

Configurando um proxy transparente


Uma garantia de que os usurios realmente vo usar o proxy e, ao mesmo tempo, uma grande economia de trabalho e dor de cabea para voc o recurso de proxy transparente. Ele permite configurar o Squid e o firewall de forma que o servidor proxy fique escutando todas as conexes na porta 80. Mesmo que algum tente desabilitar o proxy manualmente nas configuraes do navegador, ele continuar sendo usado. Outra vantagem que este recurso permite usar o proxy sem precisar configurar manualmente o endereo em cada estao. Basta usar o endereo IP do servidor rodando o proxy como gateway da rede. Lembre-se de que, para usar o proxy transparente, voc j deve estar compartilhando a conexo no servidor via NAT, como vimos anteriormente. O proxy transparente apenas far com que o proxy intercepte os acessos na porta 80, obrigando tudo a passar pelas suas regras de controle de acesso, log, autenticao e cache, diferente de um proxy tradicional, onde voc no ativa o compartilhamento via NAT, fazendo com que o proxy seja a nica porta de sada da rede. Para ativar o proxy transparente, rode o comando abaixo. Ele direciona as requisies recebidas na porta 80 para o Squid: # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j \ REDIRECT --to-port 3128 O "eth0" no comando indica a placa da rede local, onde o proxy recebe as requisies dos outros micros da rede e o "3128" indica a porta usada pelo Squid. Adicione o comando junto com os 4 comandos que compartilham a conexo no final do arquivo "/etc/rc.local" ou ao seu script de firewall para que ele seja executado durante o boot. Finalmente, voc precisa ativar o suporte ao modo transparente dentro do arquivo "/etc/squid/squid.conf" e reiniciar o servio. Se voc est usando uma verso recente, do Squid 2.6 em diante, a configurao mais simples. Basta substituir a linha "http_port 3128" no incio do arquivo por: http_port 3128 transparent Ou seja, na verdade voc precisa apenas adicionar o "transparent" para que o Squid passe a entender as requisies redirecionadas pela regra do firewall. No caso das verses mais antigas, anteriores 2.6 (como a usada no Debian Sarge e no Ubuntu 5.10), necessrio adicionar as quatro linhas abaixo, no final do arquivo "/etc/squid/squid.conf" (nesse caso, sem alterar a linha "http_port 3128"):

httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on Em qualquer um dos dois casos, voc precisa reiniciar o servio para que a alterao entre em vigor: # /etc/init.d/squid restart Em caso de dvida sobre qual verso do Squid est instalada, use o comando "squid -v", que alm de reportar a verso, informa todas as opes que foram usadas durante a compilao: # squid -v Squid Cache: Version 2.6.STABLE2 configure options: '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/sbin' '--sbindir=/usr/sbin' '-libexecdir=/usr/lib/squid' '--sysconfdir=/etc/squid' '--localstatedir=/var/spool/squid' '-datadir=/usr/share/squid' '--enable-async-io' '--with-pthreads' '--enable-storeio=ufs,aufs,diskd,null' '--enable-linux-netfilter' '--enable-linux-proxy' '--enable-arp-acl' '--enable-epoll' '--enable-removalpolicies=lru,heap' '--enable-snmp' '--enable-delay-pools' '--enable-htcp' '--enable-cache-digests' '-enable-underscores' '--enable-referer-log' '--enable-useragent-log' '--enable-auth=basic,digest,ntlm' '--enable-carp' '--with-large-files' 'i386-debian-linux' 'build_alias=i386-debian-linux' 'host_alias=i386-debian-linux' 'target_alias=i386-debian-linux' Em resumo, ao usar o proxy transparente voc vai ter a conexo compartilhada via NAT no servidor e configurar os clientes para acessar atravs dela, colocando o servidor como gateway da rede. Ao ativar o proxy, a configurao dos clientes continua igual, a nica diferena que agora (graas nova regra do Iptables) todo o trfego da porta 80 passar, obrigatoriamente, pelo servidor Squid. Isso permite que voc se beneficie do log dos acessos e do cache feito pelo proxy, sem ter que se sujeitar s desvantagens de usar um proxy, como ter que configurar manualmente cada estao. Uma observao importante que esta configurao de proxy transparente no funciona em conjunto com o sistema de autenticao incluso no Squid. Ao usar o proxy transparente a autenticao deixa de funcionar, fazendo com que voc precise escolher entre as duas coisas. Outra limitao importante do uso do proxy transparente que ele atende apenas ao trfego da porta 80. Como a conexo compartilhada via NAT, todo o trfego de outros protocolos (incluindo pginas em HTTPS, que so acessadas atravs da porta 443) encaminhado diretamente, sem passar pelo proxy. Ou seja, embora seja uma forma simples de implementar um sistema de cache e algumas restries de acesso, o uso do proxy transparente est longe de ser uma soluo ideal. Em situaes onde voc realmente precisa ter controle sobre o trfego da rede, a nica opo acaba sendo utilizar um proxy "normal", sem NAT. Uma soluo para reduzir seu trabalho de administrao nesse caso implantar um sistema de configurao automtica de proxy nos clientes.

Configurao automtica de proxy nos clientes


Usar um proxy transparente a forma mais simples de fazer com que todas as estaes da rede utilizem o proxy, sem precisar configurar cada uma das mquinas manualmente. Entretanto, usar um proxy transparente est longe de ser uma soluo perfeita, pois o proxy s atende a requisies na porta 80 (ou seja, no funciona para FTP, HTTPS e outros protocolos) e usar o proxy transparente automaticamente impede que seja usada autenticao dos usurios. Se voc acha as limitaes de usar um proxy transparente pesadas demais, mas tambm no quer arcar com o trabalho de configurar cada estao para usar o proxy manualmente, existe a opo de usar um script PAC (Proxy Auto-Configuration), um arquivo que disponibilizado na rede local atravs de um servidor web.

Os clientes so ento configurados para buscarem a configurao de proxy no script. Esta no exatamente uma configurao automtica (voc ainda tem o trabalho de configurar os clientes para utilizarem o script), mas um bom ponto de partida. A principal vantagem em relao configurao manual que ao usar o script voc pode alterar a configurao de proxy em todas as estaes simplesmente modificando o script, em vez de precisar reconfigurar cada estao manualmente. Para comear, voc precisa instalar um servidor web em algum servidor da rede, que ser usado para disponibilizar o arquivo. Para manter as coisas simples, voc pode utilizar o prprio servidor que est disponibilizando o proxy. Basta instalar o Apache usando o gerenciador de pacotes, como em: # apt-get install apache2 ou: # yum install httpd Em seguida, crie o arquivo "/var/www/wpad.dat" (no servidor), com o seguinte contedo: function FindProxyForURL(url, host) { return "PROXY 192.168.1.1:3128"; } No exemplo, o "192.168.1.1:3128" corresponde ao endereo do servidor proxy e a porta utilizada pelo Squid. O diretrio "/var/www" o diretrio raiz do servidor web, de forma que ao colocar o arquivo wpad.dat dentro dele, ele passar a ser disponibilizado atravs do endereo "http://ip-doservidor/wpad.dat", como em "http://192.168.1.1/wpad.dat". O arquivo contm um pequeno javascript que ser processado pelos clientes antes de cada requisio orientando-os a utilizarem o proxy. O arquivo wpad.dat pode incluir diversos outros parmetros. Aqui temos uma verso um pouco mais incrementada do arquivo, que inclui excees para o site da empresa (ou outro site qualquer, que voc defina) e para a faixa de endereos da rede local; endereos que devem ser acessados diretamente, sem passar pelo proxy: function FindProxyForURL(url, host) { if (shExpMatch(url,"*.gdhpress.com.br/*")) {return "DIRECT";} if (isInNet(host, "192.168.1.0", "255.255.0.0")) {return "DIRECT";} return "PROXY 192.168.1.101:3128"; } Voc pode ver uma lista com outros parmetros que podem ser usados no: http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html Depois de disponibilizar o arquivo, falta apenas configurar os clientes para obterem a configurao de proxy atravs dele. No Firefox, o endereo vai no "Editar > Preferncias > Avanado > Rede > Configuraes > Endereo para configurao automtica de proxy", enquanto no IE vai no "Ferramentas > Opes da Internet > Conexes > Configuraes da LAN > Usar script de configurao automtica": Depois de feita a configurao, voc pode checar o uso do proxy pelos clientes monitorando o arquivo "/var/log/squid/access.log" do servidor. Voc ver vrias entradas referentes aos acessos feitos pelos clientes. Essa a configurao mais elementar, onde os clientes so manualmente configurados para

utilizarem o arquivo. O degrau seguinte o WPAD (Web Proxy Auto-Discovery protocol), que permite automatizar a configurao dos clientes, permitindo que eles localizem o arquivo automaticamente. Para usar o WPAD, precisaremos configurar tambm o servidor DHCP e o servidor DNS da rede para orientarem os clientes a utilizarem o arquivo. A alterao do servidor DHCP consiste em adicionar duas linhas no arquivo "/etc/dhcp3/dhcpd.conf", a primeira contendo a diretiva "code 252 = text" e a segunda contendo a localizao do arquivo wpad.dat: option wpad-url code 252 = text; option wpad-url "http://192.168.1.1/wpad.dat\n"; A primeira linha includa na seo global da configurao, enquanto a segunda includa na seo correspondente subnet, como em: ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; option wpad-url code 252 = text; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option routers 192.168.1.1; option domain-name-servers 208.67.222.222; option broadcast-address 192.168.1.255; option wpad-url "http://192.168.1.1/wpad.dat\n"; } O "/n" na ltima linha insere uma quebra de linha. Ele um workaround para um bug do IE 6.0, que no l a configurao se o \n no estiver presente. Depois de alterar o arquivo, no esquea de reiniciar o servio para que a alterao entre em vigor. Depois de configurar o DHCP, voc pode configurar os clientes com a opo "Detectar automaticamente as configuraes" na configurao do proxy, em vez de especificar a localizao do arquivo manualmente: Atualmente, apenas o Internet Explorer compatvel com a configurao automtica via proxy. Voc pode selecionar a opo "Autodetectar as configuraes de proxy para esta rede" no Firefox, mas voc perceber que os clientes continuaro tentando acessar a web diretamente, sem lerem o arquivo wpad.dat e sem utilizarem o proxy:

Isso nos leva configurao do DNS, que complementa a configurao, atendendo a mquinas com o Firefox, Opera e outros navegadores. A configurao do DNS um pouco mais complexa, pois necessrio configurar tambm um domnio para a rede local e ajustar (novamente) tambm a configurao do servidor DHCP para que os clientes utilizem o domnio. Mais adiante teremos um captulo dedicado configurao de servidores DNS utilizando o Bind, onde veremos mais detalhes sobre a configurao de domnios. Por enquanto, vou apenas me limitar a uma receita rpida para que voc coloque o domnio no ar e possa assim ativar a configurao automtica do proxy. O primeiro passo instalar o Bind usando o gerenciador de pacotes, como em: # apt-get install bind

O arquivo de configurao padro o "/etc/bind/named.conf". A configurao do domnio feita em duas partes. Primeiro adicionamos uma entrada referente ao domnio no arquivo principal, indicando a localizao de um arquivo externo (onde vai a configurao) e em seguida adicionamos a configurao propriamente dita neste segundo arquivo. Como estamos configurando um domnio local, voc pode especificar qualquer domnio, no necessrio que ele esteja realmente registrado. No exemplo, estou usando o domnio "gdhn.com.br". Comece adicionando a configurao referente a ele no final do arquivo "/etc/bind/named.conf" (no Debian voc pode tambm utilizar o arquivo "/etc/bind/named.conf.local", que carregado como um include): zone "gdhn.com.br" IN { type master; file "/etc/bind/db.gdhn"; }; Veja que na terceira linha especificamos o arquivo externo (db.gdhn), onde ir a configurao do domnio. Esse arquivo precisa ser criado na mesma pasta do arquivo principal, ou seja, ser o arquivo "/etc/bind/db.gdhn". O contedo do arquivo ser o seguinte (veja mais detalhes sobre o significado das opes no captulo sobre DNS): @ IN SOA etch.gdhn.com.br. hostmaster.gdhn.com.br. ( 2008030645 3H 15M 1W 1D ) NS etch.gdhn.com.br. gdhn.com.br. A 192.168.1.1 wpad IN A 192.168.1.1 O "etch" no exemplo o nome do servidor, enquanto o "192.168.1.1" o endereo IP usado por ele. Isso cria o domnio "gdhn.com.br" e o "wpad.gdhn.com.br", ambos apontando para o endereo IP do servidor. Dessa forma, ao tentarem baixar o arquivo "http://wpad.gdhn.com.br/wpad.dat", os clientes baixaro na verdade o "http://192.168.1.1/wpad.dat". Depois de terminar, no esquea de reiniciar o Bind para que a alterao entre em vigor: # /etc/init.d/bind restart Naturalmente, para que o domnio seja utilizado, necessrio tambm configurar os clientes para utilizarem o servidor DNS interno que acabamos de configurar. Isso feito especificando o endereo IP do servidor como nico servidor DNS na opo "domain-name-servers" da configurao do DHCP e adicionando duas novas opes na seo global do arquivo: ddns-domainname "gdhn.com.br."; option domain-name "gdhn.com.br."; Este um exemplo de arquivo "/etc/dhcp3/dhcpd.conf", depois das alteraes: ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; option wpad-url code 252 = text; ddns-domainname "gdhn.com.br."; option domain-name "gdhn.com.br."; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option broadcast-address 192.168.1.255; option wpad-url "http://192.168.1.1/wpad.dat\n";

} Com essa configurao, os clientes Linux recebero a seguinte configurao de DNS (salva no arquivo "/etc/resolv.conf") do servidor DHCP: search gdhn.com.br. nameserver 192.168.1.1 Veja que includa a linha "search gdhn.com.br", que especifica que eles devem fazer pesquisas dentro do domnio e que o endereo do servidor usado como DNS primrio. Naturalmente, a mesma configurao fornecida aos clientes Windows configurados via DHCP. Veja um exemplo:

Com isso, voc pode configurar o Firefox para localizar o proxy automaticamente e, graas configurao do DNS, ele ser capaz de encontrar o arquivo wpad.dat e utilizar a configurao definida por voc. Uma pequena exceo fica por conta de verses antigas do Firefox para Linux, que possuem um bug na varivel usada para localizar o arquivo. Em vez de procurarem o arquivo wpad.dat no host "wpad" dentro do domnio da rede (que leva ao nosso servidor), elas tentam sempre baixar o arquivo a partir da URL "http://wpad/wpad.dat", sem respeitar a configurao do DNS. Ao usar clientes Linux rodando alguma das verses afetadas pelo bug, voc ver uma srie de entradas como essa no log do Squid: 192.168.1.183 TCP_MISS/503 1479 GET http://wpad/wpad.dat - DIRECT/wpad text/html A soluo nesses casos editar o arquivo "/etc/hosts" nos clientes afetados, adicionando uma entrada relacionando o host "wpad" com o endereo do seu servidor, como em: 192.168.1.1 wpad Com isso, as requisies passam a ser destinadas ao endereo correto, solucionando o problema.

Mais detalhes sobre a configurao dos caches


A configurao dos caches o parmetro da configurao que afeta mais diretamente o desempenho do servidor proxy e por isso deve ser sempre definida com cuidado em qualquer servidor que ir atender a um grande volume de usurios. Embora a configurao parea simples, ela na verdade esconde diversos detalhes pouco intuitivos. Como comentei a pouco, em um servidor de rede local que atende um pequeno volume de clientes, voc pode reservar apenas 32 ou 64 MB de memria RAM para o cache do Squid (de forma que ele no consuma toda a memria do servidor, prejudicando seu desempenho em outras tarefas) e, em um servidor dedicado para uma rede de maior porte voc pode reservar at 1/3 da memria total do servidor. Voc deve ter se perguntado por que reservar apenas 1/3 da memria, se a funo do servidor ser rodar apenas o proxy. Porque no reservar logo toda a memria para o Squid?

A resposta que alm da RAM reservada ao cache em memria, o Squid precisa de memria RAM para diversas outras tarefas, incluindo o gerenciamento das conexes e armazenamento da metadata dos arquivos armazenados no cache em disco, sem falar da memria RAM consumida pelo sistema operacional para fazer cache de disco e outras atividades. Reservando muita memria para o cache, o sistema obrigado a utilizar memria swap, o que acaba reduzindo o desempenho em vez de aumentar. Em uma pequena rede, raramente o desempenho do HD ser um gargalo, j que o proxy precisar atender a um pequeno volume de requisies. Entretanto, em uma grande rede, com mais do que 100 ou 200 clientes o desempenho do proxy freqentemente gargalado pelo volume de leituras que o HD capaz de realizar. Uma dica nesse caso utilizar HDs SATA (ou SCSI) com suporte a NCQ; neles a controladora pode realizar leituras fora de ordem, levando em conta a posio dos arquivos nos discos magnticos. Isso faz com que eles sejam capazes de realizar um volume de leituras de pequenos arquivos muito maior do que HDs IDE e HDs SATA sem NCQ (em algumas situaes especficas, at duas vezes mais), o que melhora assustadoramente o desempenho em servidores proxy. Verifique tambm a possibilidade de adicionar mais memria RAM ao servidor, j que com um cache maior na memria RAM, menos arquivos precisaro ser lidos a partir do HD. Outra dica que voc pode reduzir bastante o volume de operaes de acesso a disco fazendo com que o cache despreze arquivos muito pequenos (menores do que 2 KB, por exemplo) atravs da opo "minimum_object_size", como em: maximum_object_size 512 MB minimum_object_size 2 KB Isso faz com que pequenas imagens e outros tipos de arquivos muito pequenos, usados em profuso em muitas pginas web sejam simplesmente baixados novamente a cada acesso, em vez de precisarem ser lidos no cache do HD. Como os arquivos so muito pequenos, o aumento no uso do link no deve ser considervel. Continuando, se voc precisar alterar a localizao da pasta do cache na linha "cache_dir" (para coloc-lo em uma pasta em uma partio separada, por exemplo), voc vai logo perceber que o Squid deixar de inicializar, acusando um erro de permisso no diretrio do cache, como nesse exemplo: Restarting Squid HTTP proxy: squid* Creating squid spool directory structure 2008/06/31 16:35:46| Creating Swap Directories FATAL: Failed to make swap directory /mnt/sda2/squid/00: (13) Permission denied Squid Cache (Version 2.6.STABLE5): Terminated abnormally. CPU Usage: 0.000 seconds = 0.000 user + 0.000 sys Maximum Resident Size: 0 KB Page faults with physical i/o: 0 Para solucionar o problema, pare o Squid, ajuste as permisses da nova pasta, de forma que a posse seja transferida para o usurio "proxy" e o grupo "proxy" (usados pelo Squid) e, para concluir, execute o comando "squid -z", que faz com que ele reformate o diretrio do cache, criando a estrutura apropriada: # /etc/init.d/squid stop # chown -R proxy.proxy /mnt/sda2/squid # squid -z # /etc/init.d/squid start Em verses antigas do Squid voc ficava limitado a um nico diretrio de cache, de forma que a nica forma de adicionar uma nova partio era realmente movendo o cache para ela. Nas verses atuais (desde o Squid 2.0) existe a opo de simplesmente adicionar novas linhas "cache_dir" na

configurao, sem apagar as antigas. Isso permite que voc simplesmente adicione novas pastas e parties ao cache, mantendo as antigas, como em: cache_dir ufs /var/spool/squid 2048 16 256 cache_dir ufs /mnt/sda2/squid 5120 16 256 cache_dir ufs /mnt/sda3/squid 10240 16 256 No esquea de que, ao adicionar uma nova pasta, voc deve parar o proxy, ajustar as permisses de acesso e rodar o comando "squid -z" para que o Squid crie as estruturas necessrias, como no exemplo anterior. Note que, mesmo ao usar uma partio separada s para o cache, voc no deve reservar mais do que 80% do espao total da partio para ele, pois o Squid precisa de um pouco de espao extra para manter um arquivo com o status do cache e para operaes de organizao em geral, sem falar que importante manter uma pequena percentagem de espao livre na partio para reduzir a fragmentao. Se voc tiver uma partio de 10 GB e usar na configurao "cache_dir ufs /var/spool/squid 10480 16 256" (reservando exatamente 10 GB para o cache), o Squid vai travar depois de algum tempo, por falta de espao em disco. O correto no caso seria usar "cache_dir ufs /var/spool/squid 8192 16 256", reservando 8 GB em vez de 10. Uma observao final que o volume de espao em disco reservado ao cache tem efeito sobre o volume de memria RAM consumido pelo Squid (em adio ao cache na memria), pois o Squid precisa manter carregadas informaes sobre os arquivos armazenados no cache para localiz-los de forma eficiente. De uma forma geral, para cada gigabyte de espao em disco reservado para o cache, o Squid consome cerca de 10 MB a mais de memria RAM (o valor real varia de acordo com o tamanho dos arquivos armazenados no cache), de forma que um cache de 20 GB, por exemplo, aumenta o volume de memria usado pelo Squid em aproximadamente 200 MB. Devido a isso, no recomendvel usar um cache em disco muito grande, a menos que o servidor realmente possua muita memria disponvel e precise atender a um volume muito grande de clientes. Para um servidor de rede local, um cache de 5 ou 10 GB j mais do que suficiente.

Usando o Sarg para monitorar o acesso


O Sarg um interpretador de logs para o Squid, assim como o Webalizer para o Apache. Sempre que executado, ele cria um conjunto de pginas, divididas por dia, com uma lista de todas as pginas que foram acessadas e a partir de que mquina da rede veio cada acesso. Caso voc tenha configurado o Squid para exigir autenticao, ele organiza os acessos com base nos logins dos usurios. Caso contrrio, ele mostra os endereos IP das mquinas. A partir da, voc pode acompanhar as pginas que esto sendo acessadas (mesmo que no exista nenhum filtro de contedo) e tomar as medidas cabveis em casos de abuso. Todos sabemos que os filtros de contedo nunca so completamente eficazes, eles sempre bloqueiam algumas pginas teis e deixam passar muitas pginas imprprias. Se voc tiver algum tempo para ir acompanhando os logs, a inspeo manual acaba sendo o mtodo mais eficiente. Voc pode ir fazendo um trabalho incremental, ir bloqueando uma a uma as pginas onde os usurios perdem muito tempo, ou fazer algum trabalho educativo, explicando que os acessos esto sendo monitorados e estabelecendo algum tipo de punio para quem abusar. Aqui est um exemplo do relatrio gerado pelo Sarg. Por padro, ele gera um conjunto de pginas html dentro da pasta "/var/www/squid-reports/" (ou "/var/www/html/squid/", nas distribuies derivadas do Red Hat), que voc pode visualizar atravs de qualquer navegador: Os acessos so organizados por usurio (caso esteja sendo usada autenticao) ou por IP, mostrando as pginas acessadas por cada um, quantidade de dados transmitidos, tempo gasto em cada acesso,

tentativas de acesso bloqueadas pelos filtros de contedo e outras informaes. Os logs so inicialmente organizados por perodo, sendo que os relatrios antigos so mantidos quando o relatrio atualizado (com o tempo o relatrio acaba armazenando um volume muito grande de informaes). Dentro do relatrio de cada perodo, voc tem a lista dos endereos IP e/ou dos usurios autenticados que utilizaram o proxy e, dentro do relatrio referente a cada um, voc pode acompanhar o log das pginas acessadas e outras informaes, de forma bastante detalhada. O Sarg includo na maioria das distribuies atuais, em alguns casos instalado por padro junto com o Squid. No Debian e derivados ele pode ser instalado via apt-get: # apt-get install sarg No Mandriva, ele instalado usando o urpmi e assim por diante: # urpmi sarg Depois de instalado, chame o comando "sarg" (como root) para que os relatrios sejam gerados a partir do log do Squid. O Sarg no um daemon que fica residente, voc precisa apenas cham-lo quando quiser atualizar o relatrio: # sarg Para automatizar esta tarefa, voc pode usar o cron para que ele seja executado automaticamente todos os dias ou uma vez por hora, por exemplo. No Debian (e na maioria das outras distribuies) criado automaticamente um script dentro da pasta "/etc/cron.daily/", que faz com que ele seja executado todos os dias s 6:25 da manh. Dentro da mesma pasta, voc encontrar um script que executa o logrotate, o servio do sistema responsvel por rotacionar os logs, evitando que eles cresam at ocupar todo o espao disponvel no HD do servidor. Todos os dias, o logrotate renomeia e compacta os arquivos de log, incluindo o log do Squid, fazendo com que o log do dia anterior receba a extenso ".1" e os logs seguintes as extenses ".2.gz", ".3.gz" e assim por diante. Com isso, a pasta "/var/log/squid" conter uma seqncia de arquivos (access.log, access.log.1, access.log.2.gz, access.log.3.gz e assim por diante). No caso do Debian, o logrotate corretamente configurado para executar o Sarg antes de rotacionar os logs, de forma que ele no deixe de contabilizar os acessos. Caso tenha problemas em outras distribuies, experimente renomear o arquivo "/etc/cron.daily/sarg" para "/etc/cron.daily/ksarg", de forma que ele seja executado imediatamente antes do "/etc/cron.daily/logrotate". Voc pode alterar a pasta onde so salvos os relatrios, limitar o acesso s estatsticas e alterar vrias opes cosmticas no arquivo de configurao do Sarg, que o "/etc/squid/sarg.conf" (ou o "/etc/sarg/sarg.conf", de acordo com a distribuio usada). O arquivo auto-explicativo, nele voc pode alterar os diretrios-padro, alterar o layout da pgina, cores e ttulos, etc. Outro recurso interessante o envio de uma cpia do relatrio por e-mail sempre que o Sarg for executado. As duas linhas mais importantes dentro do arquivo so a "output_dir /var/www/squid-reports", onde especificada a pasta onde sero armazenados os relatrios (que, naturalmente, precisa existir no sistema) e a "access_log /var/log/squid/access.log", onde indicada a localizao do arquivo de log do Squid. Ao configurar o Squid para salvar os logs em outro arquivo, necessrio especific-lo dentro da configurao do Sarg. Se voc quer que o relatrio seja gerado em Portugus, substitua a linha "language English" (logo no incio do arquivo) para "language Portuguese". Inicialmente, o relatrio poder ser visualizado apenas a partir do prprio servidor, o que pode ser imprtico se voc o acessa remotamente. Se voc manteve o default, que salvar os relatrios dentro do diretrio "/var/www", pode disponibilizar o relatrio para a rede simplesmente instalando o Apache, como em: # apt-get install apache2 A partir da, voc pode acessar os relatrios atravs do http://ip-do-servidor/squid-reports", como

em "http://192.168.1.1/squid-reports". Para evitar que outros usurios da rede fiquem bisbilhotando nos relatrios, voc pode proteger a pasta com senha, usando um arquivo .htaccess, como veremos em detalhes no captulo sobre o Apache.

Monitorando com o ntop


Um dos problemas em utilizar um proxy transparente que o log do Squid e, consequentemente, o relatrio do Sarg, mostra apenas o trfego HTTP, deixando de fora todos os demais protocolos. Uma forma simples de monitorar o trfego global da sua rede interna instalar o ntop no gateway da rede. Ele monitora todo o trfego, mostrando o volume de banda consumido por cada mquina da rede e, dentro de cada relatrio, informaes detalhadas sobre os protocolos utilizados. Atravs dele, fcil identificar mquinas da rede que esto consumindo uma grande quantidade de banda devido utilizao de programas P2P como o Kazaa ou o Bittorrent, por exemplo. Para instalar o ntop em distribuies derivadas do Debian, basta instalar o pacote via apt-get: # apt-get install ntop Caso o ntop no esteja disponvel atravs do gerenciador de pacotes da distribuio em uso, voc pode baix-lo no http://www.ntop.org/, onde esto disponveis pacotes para vrias distribuies. Com o pacote instalado, execute o comando "ntop" como root para definir a senha de administrao: # ntop ntop startup - waiting for user response! Please enter the password for the admin user: ******** Please enter the password again: ******** Ter 06 Mai 2008 07:36:34 BRT Admin user password has been set Com a senha definida, pressione "Ctrl+C" para abortar o comando e inicialize o servio para que o ntop passe a operar em background: # /etc/init.d/ntop start A partir da, voc pode acessar os relatrios, atualizados em tempo real a partir do "http://ip_do_servidor:3000", como em "http://192.168.1.1:3000". Caso o suporte a SSL tenha sido ativado durante a compilao do pacote (ele um componente opcional, que vem desativado por padro em muitas distribuies), voc poder acessar a interface tambm atravs do "https://ip_do_servidor:3001": O relatrio do ntop pode parecer simples primeira vista, mas ele esconde um volume surpreendente de detalhes sobre as conexes. Acessando a seo "All Protocols > Traffic" (no menu superior), por exemplo, voc tem acesso a um relatrio dos hosts de internet que foram acessados atravs da conexo, organizados de acordo com o volume de dados transferidos: Os hosts recebem um cone de classificao de acordo com o tipo de trfego predominante. Uma bandeira verde indica um site que hospeda arquivos legtimos, enquanto um "K" indica um servidor do Kazaa ou um tracker Bittorrent. Clicando sobre os hosts, voc tem acesso a um relatrio detalhado com o tipo de trfego, horrios de maior acesso e, o mais importante, uma lista dos endereos IP da rede que acessaram o servidor, o que permite localizar estaes rodando programas P2P ou outros aplicativos que consomem muito trfego da rede:

Diferente do relatrio do Sarg, que loga apenas o trfego que passa pelo Squid, o ntop realmente monitora todo o trfego de dados que passa pelo servidor, independentemente do protocolo usado. Desde que todo o trfego de internet realmente passe pelo servidor (ou seja, que ele seja o nico gateway disponvel), voc pode ter certeza de que tudo ser logado. Da prxima vez que algum reclamar que a rede est lenta, bastar olhar o relatrio para descobrir o motivo. Uma dica que no Debian Etch existe um pequeno bug no script de instalao do pacote que faz com que no seja criado o diretrio "/var/lib/ntop/rrd" (onde o ntop armazena sua base de dados) e as permisses do diretrio "/var/lib/ntop/" sejam definidas incorretamente, impedindo a operao normal do servio. Voc pode solucionar o problema usando os comandos abaixo: # mkdir /var/lib/ntop/rrd # chown -R ntop.ntop /var/lib/ntop/

Usando o SquidGuard para bloquear pginas imprprias


Bloquear domnios e endereos IP individuais funciona bem para bloquear pginas especficas, mas no funciona para bloquear pginas pornogrficas, por exemplo, simplesmente porque existem muitas delas e voc iria morrer louco se tentasse bloquear todas manualmente. Existem grupos destinados a manter listas com URLs de pginas pornogrficas, pginas de cassinos e jogos e pginas ilcitas em geral, que so atualizadas freqentemente. Por serem construdas atravs da combinao dos esforos de muitas pessoas, auxiliadas por ferramentas semi-automticas de indexao e classificao de contedo, estas listas permitem bloquear a maior parte das pginas ilcitas sem muito esforo. Apenas a lista mantida pelo Shalla Security possui mais de um milho e meio de URLs cadastradas, que formam um arquivo compactado de 9 MB. A lista mais usada provavelmente a MESD blacklists, que a indicada pela equipe do SquidGuard, por ser completamente livre e utilizvel para qualquer fim. Ela tem pouco mais de 1 milho de links e pode ser baixada no: http://squidguard.mesd.k12.or.us/blacklists.tgz. Outra lista muito usada a Shalla's Blacklists, disponvel no: http://www.shallalist.de/. A lista livre para uso pessoal ou no-comercial e mais completa que a lista do MESD, com mais de 1.500.000 de URLs. O uso comercial permitido, desde que voc preencha um contrato de uso, sem custo. Outra opo a lista do URLBlacklist.com. Ela uma lista comercial, que conta com mais de 2 milhes de links e atualizada regularmente, contando inclusive com um script de atualizao automtica. A assinatura custa de US$ 6 a US$ 55 mensais, de acordo com o tipo de uso. Estas listas nada mais so do que longas listas de links, com um por linha. Elas at podem ser usadas diretamente no Squid, atravs da opo url_regex (a mesma que usamos para criar uma lista de sites bloqueados), mas, por serem arquivos muito grandes, o desempenho seria ruim, j que o Squid processa cada linha dos arquivos a cada acesso, o que consome muito processamento. Entra em cena ento o SquidGuard, que permite usar longas listas de URLs, com milhes de links sem uma grande perda de desempenho. Ele permite integrar as listas que vimos a pouco sem

comprometer o desempenho do seu servidor proxy. As listas se encarregaro de bloquear a maior parte das pginas imprprias e voc poder fazer ajustes manuais conforme necessrio. A pgina do projeto a: http://www.squidguard.org/. Nas distribuies derivadas do Debian, voc pode instal-lo rapidamente via apt-get: # apt-get install squidguard A configurao feita em trs fases. O primeiro passo baixar os arquivos das listas desejadas e descompact-los no diretrio "/var/lib/squidguard/db". Em seguida, necessrio configurar o arquivo "/etc/squid/squidGuard.conf", especificando os arquivos de listas que sero usados e o comportamento do SquidGuard ao bloquear os acessos e, finalmente, editar o "/etc/squid/squid.conf", adicionando a linha que ativa o uso do SquidGuard. Vamos comear baixando as listas. Vou usar como exemplo as listas do Shalla e do MESD, mas voc pode usar os mesmos passos para utilizar outras listas que desejar. Comece baixando as listas em um diretrio qualquer, como em: $ wget -c http://squidguard.mesd.k12.or.us/blacklists.tgz $ wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz Copie os dois arquivos para o diretrio "/var/lib/squidguard/db" e descompacte-os, como em: # cp blacklists.tgz shallalist.tar.gz /var/lib/squidguard/db/ # cd /var/lib/squidguard/db/ # tar -zxvf blacklists.tgz # tar -zxvf shallalist.tar.gz Aproveite para remover os dois arquivos, j que no precisaremos mais deles: # rm -f blacklists.tgz shallalist.tar.gz Com isso, voc ter as pastas "BL" (as listas do Shalla) e "blacklists" (listas do MESD) dentro do diretrio, cada uma contendo um conjunto de subpastas, como neste screenshot: Como pode ver, as listas so divididas por assunto. A lista do MESD concentrada em temas ilegais, enquanto a lista do Shalla inclui listas relacionadas a temas diversos, que voc pode bloquear ou no de acordo com a situao. Dentro de cada pasta, voc encontra dois arquivos, "domains" e "urls", o primeiro contendo domnios que so bloqueados completamente e o segundo contendo URLs isoladas. Alguns dos temas cobertos pelas listas so: adv - Sites que hospedam banners e anncios em geral, exibidos em outras pginas (bloqueando estes domnios, voc bloqueia boa parte dos banners de anncios). Na lista do MESD a categoria se chama "ads". audio-video - Pginas (no necessariamente ilegais) que hospedam vdeos e msicas, como o youtube. chat - Pginas com salas de bate-papo ou contendo clientes web para acesso ao MSN ou outras redes. drugs - sites que vendem remdios e pginas com contedo relacionado ao uso de drogas ou apologia s drogas. finance - Pginas com informaes financeiras, incluindo bancos, empresas de seguros e de crdito. Esta pasta inclui vrias subpastas, com as pginas divididas em categorias. gamble - Cassinos e outras pginas relacionadas a jogos de aposta. porn - Este dispensa comentrios. a categoria com o maior nmero de entradas e a primeira que voc precisar bloquear. sex - Similar "porn", contm pginas de contedo adulto. proxy - Esta outra lista que voc sempre deve incluir no bloqueio. Ela rene URLs e endereos IP

de proxys externos, que podem ser usados pelos usurios para furar o bloqueio, como o http://proxy.org. socialnet - Inclui redes sociais, como o Orkut e o Myspace. tracker - Endereos de trackers com torrents. interessante bloque-los para dificultar o download de arquivos .torrent atravs da rede, o que tem potencial para consumir muita banda. warez - Pginas que hospedam programas piratas. webradio, webtv - Rdios e TVs online. interessante bloque-las junto com a categoria "audiovideo", caso voc queira reduzir o uso de banda da rede. Com isso, voc tem as duas listas disposio e pode escolher qual delas utilizar, ou mesmo combinar sees de ambas para incrementar o filtro. O prximo passo configurar o arquivo "/etc/squid/squidGuard.conf", especificando as listas a utilizar. Um exemplo bsico de arquivo de configurao, usando apenas duas das sees da lista do MESD, seria: # /etc/squid/squidGuard.conf dbhome /var/lib/squidguard/db/blacklists logdir /var/log/squid dest porn { domainlist porn/domains urllist porn/urls } dest proxy { domainlist proxy/domains urllist proxy/urls } acl { default { pass !porn !proxy all redirect http://www.gdhpress.com.br } } As duas primeiras linhas indicam o diretrio contendo as blacklists e o diretrio onde sero armazenados os logs. No exemplo, estou usando as listas do MESD, da o "/var/lib/squidguard/db/blacklists" e estou orientando o SquidGuard a salvar o log no mesmo diretrio utilizado pelo Squid, gerando o arquivo "/var/log/squid/squidGuard.log". Em seguida, temos duas ACLs, batizadas de "porn" e proxy", cada uma incluindo os dois arquivos da categoria correspondente dentro das listas. Para que fossem adicionadas mais sees, bastaria adicionar uma nova ACL para cada uma. No final, a opo "pass" indica como as duas ACLs sero usadas. No exemplo, usei a linha "pass ! porn !proxy all", que indica que os acessos a pginas citadas nas listas devem ser bloqueados, mas o acesso a outras pginas aceito. Concluindo, usei a linha "redirect http://www.gdhpress.com.br", que faz com que todos os acessos bloqueados sejam redirecionados de forma transparente URL especificada. Dessa forma, o usurio tentando acessar pginas imprprias sutilmente direcionado a uma pgina com contedo mais saudvel :). Voc pode substitu-la pelo site da empresa, ou mesmo pela localizao de uma pgina de aviso. Temos aqui um segundo exemplo de configurao, bem mais incrementado, que usa um nmero bem maior de ACLs, combinando listas do MESD e do Shalla: # /etc/squid/squidGuard.conf

dbhome /var/lib/squidguard/db logdir /var/log/squid

dest ads { domainlist blacklists/ads/domains urllist blacklists/ads/urls } dest aggressive { domainlist blacklists/aggressive/domains urllist blacklists/aggressive/urls } dest audio-video { domainlist blacklists/audio-video/domains urllist blacklists/audio-video/urls } dest drugs { domainlist blacklists/drugs/domains urllist blacklists/drugs/urls } dest gambling { domainlist blacklists/gambling/domains urllist blacklists/gambling/urls } dest porn { domainlist blacklists/porn/domains urllist blacklists/porn/urls } dest proxy { domainlist blacklists/proxy/domains urllist blacklists/proxy/urls } dest redirector { domainlist blacklists/redirector/domains urllist blacklists/redirector/urls } dest spyware { domainlist blacklists/spyware/domains urllist blacklists/spyware/urls } dest violence { domainlist blacklists/violence/domains urllist blacklists/violence/urls } dest warez{ domainlist blacklists/warez/domains urllist blacklists/warez/urls } dest porn2{ domainlist BL/porn/domains urllist BL/porn/urls } dest socialnet{ domainlist BL/socialnet/domains urllist BL/socialnet/urls }

dest tracker{ domainlist BL/tracker/domains urllist BL/tracker/urls } acl { default { pass !ads !aggressive !audio-video !drugs !gambling !porn !proxy !redirector !spyware !violence !warez !porn2 !socialnet !tracker all redirect http://www.gdhpress.com.br } } Veja que nesse segundo exemplo, usei a linha "dbhome /var/lib/squidguard/db". Isso permite que voc combine sees das duas listas, indicando o caminho at cada uma, a partir do diretrio principal. Esta mesma idia pode ser usada para combinar outras listas a que voc tenha acesso. Basta colocar todas as listas dentro do diretrio "/var/lib/squidguard/db" e incluir as ACLs correspondentes dentro da configurao. Antes que possam ser efetivamente utilizadas, as listas precisam ser convertidas para o formato Berkeley DB, que permite um acesso muito mais rpido do que seria possvel ao manipular diretamente os arquivos em texto. Para isso, use, depois de configurar o arquivo "/etc/squid/squidGuard.conf", o comando: # squidGuard -C all (este comando deve ser executado novamente sempre que voc incluir novas listas na configurao) Embora no seja necessrio em muitas configuraes, recomendvel usar tambm o comando abaixo para ajustar as permisses de acesso aos arquivos, garantindo que o Squid tenha acesso a eles. O "proxy:proxy" indica o usurio e o grupo utilizados pelo Squid, que podem eventualmente ser diferentes, de acordo com a distribuio usada: # chown -R proxy:proxy /var/lib/squidguard/db/* Os dois comandos a seguir complementam a configurao, fazendo com que todos os arquivos dentro da pasta sejam configurados com permisses 644 e as pastas com 755, que a configurao correta. Isso previne o aparecimento de erros diversos relacionados a permisses incorretas para os arquivos: # find /var/lib/squidguard/db -type f | xargs chmod 644 # find /var/lib/squidguard/db -type d | xargs chmod 755 Depois de gerar a configurao do SquidGuard, o prximo passo alterar a configurao do Squid, para que ele seja utilizado. Para isso, edite o arquivo "/etc/squid/squid.conf", adicionando a linha: redirect_program /usr/bin/squidGuard Ela deve ser colocada depois das ACLs restritivas (destinadas a bloquear acessos, como no caso das ACLs para bloquear o acesso a uma lista de sites personalizados, ou em determinados horrios), mas entretanto antes das regras finais, que permitem o acesso. Um exemplo de arquivo squid.conf completo seria: # /etc/squid/squid.conf http_port 3128 transparent visible_hostname gdh cache_mem 128 MB maximum_object_size_in_memory 128 KB maximum_object_size 512 MB cache_dir ufs /var/spool/squid 4096 16 256

cache_access_log /var/log/squid/access.log acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535 acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports redirect_program /usr/bin/squidGuard acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all A posio da regra que ativa o SquidGuard importante, pois se ela for colocada depois da regra "http_access allow redelocal" (ou similar), as requisies sero liberadas antes de passarem pelo SquidGuard, fazendo com que ele nunca seja usado. Opcionalmente, voc pode incluir tambm as duas linhas abaixo, logo aps a linha que ativa o SquidGuard: redirect_children 8 redirector_bypass on A opo "redirect_children" ajusta o nmero de processos do SquidGuard que o servidor Squid manter abertos. Aumentar o nmero ajuda a melhorar o desempenho do proxy em grandes redes, onde o servidor recebe um volume muito grande de requisies. A opo "redirector_bypass on" faz com que o Squid continue funcionando mesmo que o SquidGuard trave ou deixe de funcionar por qualquer motivo. Us-la tem seus prs e contras, j que pode ser prefervel que o acesso pare completamente, at que voc consiga solucionar o problema, do que permitir que o Squid funcione com os bloqueios desativados. Pense no caso de uma escola primria, por exemplo. Depois de tudo terminado, reinicie o Squid para que a configurao entre em vigor: # /etc/init.d/squid restart Se voc estiver configurando um servidor de produo, com usurios acessando o proxy enquanto est configurando, use o comando abaixo para ativar a configurao sem derrubar os usurios conectados: # squid -k reconfigure Com tudo pronto, verifique se o SquidGuard est mesmo ativo usando o comando abaixo: # tail /var/log/squid/squidGuard.log Ele mostrar as mensagens de inicializao do SquidGuard. Se tudo estiver correto, as duas ltimas linhas sero:

2008-06-14 09:16:02 [4521] squidGuard 1.2.0 started (1208175362.060) 2008-06-14 09:16:02 [4521] squidGuard ready for requests (1208175362.105) Se algum erro impedir a inicializao do servio, ele exibir a mensagem de erro, permitindo que voc localize o problema, como em: 2008-06-14 10:45:04 [4408] init domainlist /var/lib/squidguard/db/BL/socialnet/domains 2008-06-14 10:45:04 [4408] /var/lib/squidguard/db/BL/socialnet/domains: Permission denied Nesse caso, temos um problema com as permisses de acesso de uma das listas especificadas na configurao, o que poderia ser resolvido usando os comandos para acertar as permisses que vimos no incio do tpico. Com o SquidGuard ativo, os acessos a pginas imprprias sero drasticamente reduzidos e voc conserva a possibilidade de refinar o bloqueio, adicionando novos endereos manualmente. No esquea de atualizar os arquivos das blacklists periodicamente, j que elas so atualizadas de forma freqente. Com o tempo, provvel que voc precise desbloquear algumas pginas manualmente (depois de verificar seu contedo), a pedido dos usurios. Nesse caso, voc pode criar uma lista branca, autorizando o acesso aos sites manualmente inseridos nela. Para isso, adicione uma nova ACL no arquivo squidGuard.conf, adicionando as seguintes linhas prximo ao incio do arquivo: dest white { domainlist white/domains urllist white/urls } No final do arquivo, ao especificar o uso das ACLs, inclua o parmetro "white" (sem a exclamao) antes dos demais, como em: acl { default { pass white !porn !proxy all redirect http://www.gdhpress.com.br } } Com isso, o contedo da ACL "white" ser processado primeiro e o acesso s pginas especificadas no arquivo ser liberado. Falta agora criar a pasta e os dois arquivos citados na configurao: # mkdir /var/lib/squidguard/db/white # touch /var/lib/squidguard/db/white/domains # touch /var/lib/squidguard/db/white/urls Use o arquivo "domains" para incluir domnios que devem ser permitidos por completo, como em "gdhn.com.br" e o arquivo "urls" para incluir pginas ou sees isoladas, como em "gdhn.com.br/tutoriais/", sempre um por linha. Depois de editar os arquivos, necessrio fazer com que o SquidGuard atualize a converso das listas e reiniciar o Squid para que as alteraes entrem em vigor, como em: # squidGuard -C all # squid -k reconfigure

Usando o DansGuardian
O DansGuardian outra opo de filtro de contedo desenvolvido para trabalhar em conjunto com

o Squid, filtrando contedo indesejado. A grande diferena entre ele e o SquidGuard que o SquidGuard se limita a bloquear pginas contidas nas listas, enquanto o DansGuardian utiliza um filtro adaptativo, que avalia o contedo da pgina e decide se ela uma pgina imprpria com base no contedo, utilizando um conjunto de regras adaptativas. Ele inclui um conjunto de regras prontas, que contm palavras, frases e tipos de arquivos freqentemente usados em pginas imprprias, alm de uma lista de pginas conhecidas e trabalha cruzando todas essas informaes. Se voc quer um filtro de contedo que possa implantar rapidamente e manter ativo sem ter muito trabalho, o SquidGuard a melhor opo, pois ele permite obter bons resultados mesmo com apenas uma configurao rpida. Se, por outro lado, voc quer um filtro programvel, que voc possa adaptar e personalizar de forma a obter melhores resultados, ento o DansGuardian pode ser uma boa opo. No screenshot abaixo, por exemplo, temos uma pesquisa do Google por um termo indecoroso, que foi bloqueada por ter retornado um grande nmero de pginas imprprias. O domnio "google.com" naturalmente no foi bloqueado no filtro, mas mesmo assim o DansGuardian foi capaz de bloquear a pgina baseado no contedo: Originalmente, o DansGuardian foi desenvolvido como um filtro de contedo para uso em escolas primrias e para quem tem crianas pequenas em casa, mas nada impede que ele seja usado tambm em outras situaes. Atualmente, o DansGuardian um produto "semicomercial", que tem o cdigo aberto e gratuito para uso pessoal ou para qualquer fim no-comercial (pode ser usado em uma escola ou escritrio, por exemplo, desde que implementado internamente), mas pago para uso comercial (quando voc cobra pelo servio de implantao, ou o fornece como parte de uma soluo comercial). Voc pode ver mais detalhes sobre a licena de uso no: http://dansguardian.org/?page=copyright2 Ao instalar, comece verificando se j no existe um pacote disponvel na distribuio que est usando. O DansGuardian um pacote de uso muito comum; por isso, a maioria das distribuies o inclui nos CDs de instalao. No Debian, por exemplo, voc pode instal-lo com um: # apt-get install dansguardian Voc pode tambm encontrar pacotes para vrias distribuies, junto com o tradicional pacote com cdigo fonte no http://dansguardian.org/?page=download2. Depois de instalar o pacote, inicie-o com o comando: # /etc/init.d/dansguardian start ou: # dansguardian & Para que o DansGuardian funcione, preciso que o Squid esteja instalado e ativo. Ele trabalha sobre o Squid, implementando suas polticas de acesso, mas deixando que o prprio Squid faa o acesso web, cache e autenticao. O principal arquivo de configurao o "/etc/dansguardian/dansguardian.conf". Ao edit-lo pela primeira vez, importante verificar algumas opes: # UNCONFIGURED Esta linha deve ficar comentada, indicando que o arquivo j foi configurado por voc. language = 'portuguese' Esta opo configura a lngua em que as mensagens de acesso bloqueado sero mostradas aos clientes.

loglocation = '/var/log/dansguardian/access.log' Aqui vai a localizao do arquivo de log do dansguardian, onde ficam armazenados os endereos das pginas cujo acesso foi bloqueado. Serve tanto para verificar a eficincia do filtro, quanto para identificar falsos-positivos, ou seja, pginas legtimas que esto sendo bloqueadas por engano. Essas excees podem ser especificadas individualmente no arquivo "/etc/dansguardian/exceptionsitelist", que funciona como uma white list, contendo uma lista de pginas que sempre so permitidas, mesmo que sejam encontradas palavras proibidas dentro do texto. filterport = 8080 A porta onde o DansGuardian fica ativo. Ele sempre deve utilizar uma porta diferente do Squid, pois so duas coisas separadas. O padro a porta 8080. proxyip = 127.0.0.1 O endereo IP do servidor proxy que ser usado. Por padro ele vai utilizar uma cpia do Squid ativa na mesma mquina, mas possvel utilizar outro servidor Squid disponvel na rede. proxyport = 3128 A porta TCP onde o servidor Squid especificado na opo acima est ativo. Lembre-se de que, por padro, o Squid usa a porta 3128. A filtragem de pginas funciona em dois nveis. Ao receber a requisio do cliente, o DansGuardian verifica se o endereo a ser acessado est em uma das listas de domnios ou IPs proibidos. Caso esteja, o cliente recebe a mensagem de erro e o acesso sequer feito, economizando banda. Se no existir nenhum bloqueio relacionado ao domnio, a requisio enviada ao Squid e o acesso realizado. Ao receber os arquivos da pgina, o DansGuardian verifica o contedo em busca de expresses e palavras "ruins", freqentemente encontradas em pginas indesejadas, e tambm palavras "boas", normalmente encontradas em pginas de bom contedo. Cada palavra ruim soma um certo nmero de pontos. Por exemplo, a palavra "sexy" soma apenas 5 pontos, enquanto a expresso "sex orgies" soma 80 pontos. Palavras "boas", por outro lado, subtraem pontos, fazendo com que a pgina tenha uma possibilidade menor de ser bloqueada. A palavra "education" subtrai 20 pontos, enquanto "medical problem" subtrai 50. As listas com palavras boas e ruins, juntamente com o peso positivo ou negativo de cada uma, so armazenadas na pasta "/etc/dansguardian/phraselist". No final, o site recebe uma nota, apelidada pelos desenvolvedores de "naughtynesslimit", ou "ndice de sem-vergonhice", resultado da soma de todas as palavras boas e ruins. Voc define um ndice mximo a ser tolerado no arquivo "/etc/dansguardian/dansguardianf1.conf", na opo: naughtynesslimit = 160 Quanto mais baixo o nmero, mais severa a censura, porm mais pginas boas acabam sendo bloqueadas por engano (falsos positivos). Os valores recomendados pelos desenvolvedores so "60" para crianas pequenas, "100" para pr-adolescentes e "160" para adolescentes. Para um pblico adulto, onde a principal preocupao seja no bloquear pginas teis, mesmo que isso faa com que uma ou outra pgina inadequada passe pelo filtro de vez em quando, voc pode arriscar "200" ou mesmo "240". Como voc pode notar dando uma olhada no contedo dos arquivos das listas de palavras, o DansGuardian vem configurado com listas em ingls, que deixam passar muitos sites nacionais. Voc pode baixar um arquivo com listas em outras lnguas, incluindo portugus no: http://dansguardian.org/downloads/grosvenor/languages.tar.gz Para instalar, descompacte o arquivo "languages.tar.gz" e copie os arquivos de dentro da pasta "languages", que ser criada para a pasta "/etc/dansguardian/phraselist/". Falta agora configurar o

DansGuardian para utilizar os novos arquivos. Para isso, abra o arquivo "/etc/dansguardian/weightedphraselist" e adicione as linhas: .Include</etc/squid/dansguardian/languages/weightedphraselist.pornsites.portuguese> .Include</etc/squid/dansguardian/languages/weightedphraselist.pornwords.portuguese> Antes de usar estas listas de palavras, verifique o contedo dos arquivos. As listas de palavras em portugus so excessivamente rigorosas, o que faz com que seja bloqueado o acesso a um nmero muito grande de sites "bons", mesmo ao usar um naughtynesslimit alto. Use-os com cautela. Aparentemente, os arquivos disponveis no site foram escritos por um estrangeiro, por isso, no se adaptam bem nossa realidade. Se decidir corrigir os arquivos, no deixe de envi-los para os mantenedores, para que sejam includos no pacote. Note que na configurao so especificados todos os arquivos de palavras que so utilizados. Na pasta existem vrias categorias diferentes e, em algumas situaes, voc pode querer desabilitar algumas delas, a fim de flexibilizar o filtro. Voc pode adicionar novas palavras ou editar o peso de cada uma, editando diretamente os arquivos. Concluindo, abra tambm o arquivo "/etc/dansguardian/bannedphraselist" e inclua a linha: .Include</etc/squid/dansguardian/languages/bannedphraselist.portuguese> Lembre-se de que necessrio reiniciar o DansGuardian para que qualquer uma das alteraes tenha efeito: # /etc/init.d/dansguardian restart O DansGuardian pode ser usado tanto dentro da rede, quanto localmente. Alm de ser utilizado em redes de todos os tamanhos, muita gente com crianas em casa se d ao trabalho de instal-lo avulso, no micro de casa. Nas configuraes do proxy (nos clientes), coloque o endereo IP do servidor (como, por exemplo, 192.168.1.1) e a porta do DansGuardian, definida no arquivo de configurao. Lembre-se de que, por padro, ele usa a porta 8080. No Firefox, a opo de configurar um proxy est em "Editar > Preferncias > Proxy". Ou seja, com exceo da porta diferente, a configurao para usar o DansGuardian a mesma que seria usada em conjunto com um proxy tradicional. Em casos onde ele usado num micro domstico, com o objetivo de servir como um simples filtro de contedo, voc pode at mesmo rod-lo localmente. Neste caso, use o endereo "127.0.0.1" como proxy:

Atualizando as blacklists
Alm do filtro com base em palavras, o DansGuardian utiliza uma lista de sites proibidos, que sequer chegam a ser acessados. Por padro, o DansGuardian vem com uma lista muito pequena e desatualizada, apenas como exemplo. Para efetivamente usar este recurso, preciso baixar uma lista mais elaborada. Voc pode baixar uma lista longa e atualizada no http://urlblacklist.com/, o mesmo site que citei no tpico sobre o SquidGuard. As listas do UrlBlacklist so mais adequadas para uso no DansGuardian, pois incluem tambm listas de termos (que so usadas pelo DansGuardian para complementar o filtro esttico baseado em URLs), mas ele possui a desvantagem de ser um servio no-gratuito, onde voc precisa assinar o servio para ter acesso completo s listas. O link completo para a verso mais recente : http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist Para instalar, basta descompactar o arquivo e mover o contedo para dentro da pasta "/etc/dansguardian/", substituindo a pasta "/etc/dansguardian/blacklists" existente: $ tar -zxvf bigblacklist.tar.gz # cp -a --reply=yes blacklists/ /etc/dansguardian/ Depois de instalar o arquivo completo, voc pode usar o script de atualizao, disponvel no site, para baixar atualizaes de forma automtica. Baixe-o em: http://urlblacklist.com/downloads/UpdateBL Basta ativar a permisso de execuo e execut-lo. Em algumas distribuies preciso criar a pasta "/var/lib/lrpkg/", onde ele guarda os logs. Sem esta pasta, ele exibe um erro e no conclui a atualizao. # mkdir -p /var/lib/lrpkg/ # chmod +x UpdateBL # ./UpdateBL O pacote inclui vrias listas diferentes, separadas por assunto. Assim como na lista do Shalla's, as listas incluem muitos assuntos inocentes como, "cellphones", "sports" e "childcare" (sade infantil). Ele no uma "blacklist" no sentido estrito da palavra, mas sim um conjunto de listas que incluem

tambm sites sobre contedos diversos. A idia aqui que voc pode bloquear todos os assuntos desejados. Dentro de cada uma das subpastas, voc encontra trs arquivos: domains (sites completamente bloqueados), expressions (palavras comumente encontradas em sites de contedo imprprio) e urls (pginas especficas, dentro de sites permitidos). Para ativar o uso das blacklists, edite os arquivos "/etc/dansguardian/bannedsitelist" e "/etc/dansguardian/bannedurllist", adicionando (ou descomentando) as linhas referentes s categorias que devem ser ativadas. Para bloquear pginas de contedo adulto (adult), drogas (drugs), pginas pornogrficas (porn) e warez, adicione (ou descomente) no arquivo "/etc/dansguardian/bannedurllist" as linhas: .Include</etc/dansguardian/blacklists/adult/urls> .Include</etc/dansguardian/blacklists/drugs/urls> .Include</etc/dansguardian/blacklists/porn/urls> .Include</etc/dansguardian/blacklists/warez/urls> No arquivo "/etc/dansguardian/bannedsitelist" vo as linhas: .Include</etc/dansguardian/blacklists/adult/domains> .Include</etc/dansguardian/blacklists/drugs/domains> .Include</etc/dansguardian/blacklists/porn/domains> .Include</etc/dansguardian/blacklists/warez/domains> Voc pode usar tambm os arquivos com expresses proibidas, includos no pacote para reforar a lista adicional, com os termos em portugus, que j ativamos anteriormente. Para isso, abra novamente o arquivo "/etc/dansguardian/bannedphraselist" e adicione as linhas: .Include</etc/dansguardian/blacklists/adult/expressions> .Include</etc/dansguardian/blacklists/drugs/expressions> .Include</etc/dansguardian/blacklists/porn/expressions> .Include</etc/dansguardian/blacklists/warez/expressions> Faa o mesmo com outras categorias que quiser adicionar.

Proxy transparente com o DansGuardian


Como vimos at agora, o DansGuardian funciona como uma camada extra, uma espcie de "pedgio", por onde as requisies passam antes de chegarem ao Squid e por onde as respostas passam antes de serem enviadas ao cliente. Normalmente, os clientes precisam ser configurados manualmente para utilizar o DansGuardian como proxy, acessando-o atravs da porta 8080. Isso traz de volta o problema de configurar manualmente cada um dos micros e evitar que os usurios removam a configurao para acessar diretamente caso voc mantenha o compartilhamento via NAT ativo em adio ao proxy. Contudo, possvel configurar o DansGuardian para trabalhar como proxy transparente, da mesma forma que fizemos anteriormente com o Squid. Neste caso, o firewall redireciona as requisies recebidas na porta 80 para o DansGuardian e ele as repassa para o Squid, que finalmente faz o acesso. Os clientes precisam apenas ser configurados para acessar a internet usando o servidor onde esto instalados o Squid e DansGuardian como gateway. Para isso, comece configurando o Squid para trabalhar em modo transparente, adicionando a opo "transparent" na linha "http_port" do squid.conf: http_port 3128 transparent Depois vm as regras de firewall para habilitar o compartilhamento da conexo e direcionar as requisies recebidas na porta 80 para a porta usada pelo DansGuardian. Novamente, a mesma

configurao usada para fazer um proxy transparente no Squid, mudando apenas a porta. Lembre-se de que o "eth0" deve ser substitudo pela interface ligada na rede local e o "eth1" pela interface ligada Internet: modprobe iptable_nat iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT \ --to-port 8080 iptables -A INPUT -m tcp -p tcp -s ! 127.0.0.1 --dport 3128 -j DROP A ltima regra bloqueia a porta 3128 usada pelo Squid, para impedir que algum espertinho configure o navegador para acessar diretamente atravs do Squid, sem passar pelo DansGuardian. A nica exceo o endereo 127.0.0.1, ou seja, o prprio servidor. Lembre-se de colocar estes comandos no arquivo "/etc/rc.local" (ou no seu script de compartilhamento da conexo) para no precisar ficar digitando tudo a cada boot.

Servidores Linux, Guia Prtico


Por Carlos E. Morimoto em 1 de agosto de 2008 s 02h00 142 Anterior: Proxy transparente com o DansGuardian Capa Introduo ---- Servidores Linux ---- Servidores de rede local ---- Servidores de Internet Captulo 1: Instalao e administrao do sistema ---- Instalando o Debian ---- Instalando o Ubuntu ---- Instalando o CentOS -------- Red Hat x RHEL x CentOS x Fedora -------- Instalando ---Gerenciamento de pacotes e servios -------- Usando o apt-get ------------ Atualizando o sistema ------------ Usando o dpkg ------------ O cache do apt-get ------------ Chaves de autenticao -------Usando o yum ------------ Repositrios adicionais ------------ Plugins -------- Gerenciamento de servios ---- Mais dicas de administrao do sistema -------- O bsico da linha de comando ------------ Compactando e descompactando ------------ Bash_completion -------- Entendendo o path -------- Editores e arquivos de configurao ---- Gerenciando usurios e grupos ---- Gerenciando permisses de acesso ---- Reparando sistemas de arquivos ---- Introduo ao SSH ---- Servidores dedicados e planos de hospedagem ---- Servidores dedicados -------- Servidores virtuais (VPS) -------- Shared hosting Captulo 2: Compartilhamento, DHCP e Proxy ---- Compartilhando a conexo -------- Ativando o compartilhamento -------- Compartilhar usando uma nica placa de rede ---- Configurando um servidor DHCP -------- DHCP com IP fixo -------- IPV6 ---- Configurando um servidor proxy com o Squid -------- Instalando o Squid -------- Criando uma configurao bsica -------- Configurando o cache de pginas e arquivos -------- Adicionando restries de acesso ------------ Bloqueando por domnios ou palavras ------------ Bloqueando por horrio -------Gerenciando o uso da banda -------- Proxy com autenticao -------- Configurando um proxy transparente -------- Configurao automtica de proxy nos clientes -------- Mais detalhes sobre a configurao dos caches ---- Usando o Sarg para monitorar o acesso ---- Monitorando com o ntop ---- Usando o SquidGuard para bloquear pginas imprprias ---- Usando o DansGuardian -------Atualizando as blacklists -------- Proxy transparente com o DansGuardian ---- Obtendo um endereo fixo, usando um DNS dinmico Captulo 3: Firewall ---- Escrevendo um script de firewall -------Forwarding de portas -------- Bloqueando portas de sada -------- Bloqueando domnios -------Resumo das regras do Iptables ---- Configurao avanada ---- Testando com o Nmap ---Segurana: detectando rootkits Captulo 4: Configurando VPNs com o OpenVPN ---- Instalando ---- Criando VPNs usando chaves estticas -------- Portas -------- Estabilizando e otimizando a conexo -------- Roteando os pacotes -------- Configurao no Windows ---- Usando certificados X509 -------- Criando os certificados -------- Instalando os certificados -------- Ajustando a

configurao -------- Revogando certificados ---- Criando bridges Captulo 5: Samba ---- Instalando ---- Cadastrando os usurios ---- Usando o Swat -------- Ativando o Swat -------- Opes gerais -------- Criando compartilhamentos ---- Configurando manualmente o smb.conf -------- Ajustando as permisses de acesso -------- A seo [global] -------- A seo [homes] -------- A conta guest -------Lixeira no Samba -------- Auditando os acessos ---- Compartilhando impressoras -------Disponibilizando drivers de impresso para os clientes -------- Compartilhando atravs do Cups ---Backends: smbpasswd ou tdbsam ---- Usando o Samba como controlador de domnio (PDC) -------Logando Clientes Windows -------- Cadastrando as mquinas sem usar a conta de root -------Ajustando as permisses locais -------- Logando Clientes Linux ------------ Usando o PDC para autenticao local ---- Mais dicas -------- Permitindo que os usurios compartilhem pastas -------Montagem permanente dos compartilhamentos -------- Portas e firewall ---- Mantendo o horrio sincronizado ---- Usando o NFS -------- Mais opes Captulo 6: Configurando servidores web ---Instalando um servidor LAMP ---- Instalando o Apache ---- Entendendo a organizao dos arquivos -------- No Debian e derivados -------- No CentOS, Fedora e RHEL ---- Instalando o suporte a PHP -------- Dicas de segurana ---- Instalando o MySQL -------- Administrao bsica do banco de dados -------- Instalando o phpMyAdmin ---- Ativando o SSL -------- Usando um certificado selfsigned -------- Usando um certificado reconhecido -------- Usando o SSL para pastas especficas ---Virtual Hosts ---- Gerando estatsticas ---- Gestores de contedo e add-ons -------- Instalando o phpBB -------- Instalando o WordPress -------- Ruby on Rails ---- Solucionando problemas com o charset ---- Otimizando a configurao do Apache -------- Ajustando o nmero de processos -------Outras opes ---- Mdulos do Apache e add-ons -------- mod_rewrite -------- mod_deflate -------mod_cband -------- mod-speling ---- Instalando um servidor FTP -------- Criando usurios -------FTP + TLS ---- Usando quotas de disco -------- Configurao inicial -------- Definindo as quotas com o Webmin -------- Definindo as quotas manualmente ---- Mais dicas Captulo 7: Configurando o DNS ---- Registro de domnios -------- DNS e virtual hosting ---- Configurando o Bind -------Instalao -------- Adicionando os domnios -------- DNS primrio e secundrio no mesmo servidor -------- Usando um servidor secundrio separado -------- DNS Reverso -------- Configurando um DNS para a intranet -------- Segurana -------- Configurando o Bind para rodar em um chroot Captulo 8: Configurando servidores de e-mail ---- Instalando o Postfix -------- Cadastrando usurios -------- Configurando ---- Instalando um webmail ---- Autenticando os clientes -------Ativando o TLS ---- Adicionando um antivrus ---- Usando o Google apps for your domain Captulo 9: Gerenciando o servidor com o ISPConfig ---- Instalando -------- Suporte a quotas -------Spamassassin -------- Proftpd ---- Usando a interface de administrao ---- Cadastrando sites e clientes ---- Interface do usurio ---- Webmail Captulo 10: SSH e acesso remoto ---- Entendendo o SSH ---- Configurao do cliente SSH ---- Configurao do servidor SSH ---- Usando chaves de autenticao -------- SSH com login automtico -------- Usando o ForwardAgent -------- Usando mltiplas chaves ---- Bloqueando ataques de fora bruta contra o SSH ---- Transferindo arquivos via SFTP -------- Usando o rssh -------- Usando o MySecureShell -------- Quebrando arquivos -------- Montando pastas via SSH com o sshfs ---- Criando tneis seguros ---- SSH no Windows ---Usando o NX Server -------- O sistema de compresso -------- Instalando o NX Server -------Usando o cliente NX -------- Problemas comuns -------- NX x VNC -------- FreeNX ---- Criando VPNs usando o SSH -------- Criando um tnel ponto a ponto -------- Ganhando acesso rede -------Unindo as duas redes ---- SSH no celular ---- Usando o XDMCP -------- Abrindo diversos terminais grficos -------- Ativando o acesso via XDMCP Captulo 11: Terminais leves com o LTSP ---Entendendo o LTSP ---- O servidor ---- Os terminais ---- Usando os terminais ---- Instalando os servios-base ---- Instalando os pacotes do LTSP ---- Configurando os terminais ---- Configurando o servidor -------- DHCP -------- TFTP -------- NFS -------- O arquivo principal: lts.conf -------Swap -------- Testando ---- Personalizando as configuraes ---- Uma palavra sobre segurana ---Mais configuraes -------- Usando dispositivos de armazenamento locais -------- Usando o som nas estaes -------- Usando a impressora nos terminais -------- Placas de rede ISA -------- Usando um HD para boot dos clientes ---- Curiosidade: usando um terminal realmente antigo ---- Logando em um servidor Windows ---- ThinClients Captulo 12: Virtualizao ---- Entendendo o VMware

Server ---- Preparando o terreno ---- Instalando ---- Criando as mquinas virtuais ---- Configurando ---- Duplicando as VMs ---- Configurao da rede ---- Interface de gerenciamento via web ---VMware Tools ---- VMware Server 2.0 Captulo 13: Backup ---- Escrevendo scripts de backup ---Fazendo backup das bases de dados do MySQL ---- Monitorando a sade do HD via SMART Captulo 14: Hardware de servidores ---- Redundncia e RAID -------- Clusters de alta disponibilidade ---- Racks, blades e torres -------- KVM ---- Processadores -------- Intel Xeon ------------ Xeon UP e Xeon DP ------------ Xeon MP -------- AMD Opteron ---- HDs e interfaces ---Armazenamento externo: DAS, NAS e SAN Prximo: Captulo 6: Configurando servidores web

Obtendo um endereo fixo, usando um DNS dinmico


Tudo o que vimos ate agora, ou seja, compartilhar a conexo, configurar um servidor proxy e assim por diante soluciona o problema do acesso web a partir dos micros da rede local, permitindo que uma nica conexo via ADSL, cabo, rdio ou outra modalidade de acesso domstico seja compartilhada entre vrios micros. Sobra ento resolver o problema do acesso externo, ou seja, permitir que o servidor da rede seja acessado remotamente, de forma que voc possa prestar suporte remoto ou possa configurar uma VPN, interligando duas redes distantes, por exemplo. Uma conexo domstica oferece trs deficincias nesse sentido: * O endereo IP dinmico, mudando peridicamente ou a cada vez que o modem reiniciado. * A conexo dificilmente 100% estvel, caindo esporadicamente. * Algumas portas, como a 21, a 25 e a 80 so fechadas pelas operadoras, de forma a dificultar a criao de servidores domsticos. No podemos fazer nada com relao estabilidade da conexo, mas podemos alterar as portas utilizadas pelos servidores (o Apache pode ser configurado para utilizar a porta 8080 em vez da 80, por exemplo) e podemos solucionar o problema do IP dinmico utilizando um servio de DNS dinmico (DDNS). Os servios de DNS dinmico trabalham de uma forma bastante simples, onde um cliente instalado no seu servidor (ou em qualquer outra mquina da rede, acessando atravs da conexo compartilhada por ele) envia informaes sobre o endereo IP corrente para os servidores do servio, o que permite a eles manterem um subdomnio no estilo "meu-nome.no-ip.org" ou "minhaempresa.dyndns.com" apontando para seu endereo IP corrente. As contas so gratuitas, de forma que voc pode tranquilamente criar um domnio virtual para cada rede que voc administra, permitindo que, desde que a conexo esteja funcionando, voc possa resolver qualquer problema sem levantar da cadeira. Usar um domnio virtual permite tambm que voc crie VPNs, interligando duas ou mais redes com IP dinmico (como veremos em detalhes no captulo sobre o OpenVPN) ou at mesmo permitir que os usurios da rede acessem suas mquinas e rodem aplicativos remotamente (como veremos nos captulos sobre o SSH e acesso remoto). possvel tambm usar um DNS dinmico tambm para hospedar sites, disponibilizar arquivos via FTP e assim por diante ( necessrio apenas utilizar portas alternativas para os servidores). O problema que a baixa taxa de upload e a relativa instabilidade das conexes domsticas tornaro o acesso dos visitantes muito ruim, sem falar que o uso constante da banda tornar seu acesso muito mais lento. Voc pode muito bem configurar um servidor para fins de teste, aplicando as dicas que veremos ao longo do livro, mas para aplicaes mais srias, necessrio ter um servidor dedicado, ou pelo menos um plano de shared hosting. Os dois servios de DNS Dinmico mais usados (ambos gratuitos, com opes de servios pagos), so o http://www.no-ip.com e o http://www.dyndns.com, que aprenderemos a configurar aqui.

Cadastro de um domnio virtual no no-ip.com Em ambos os casos, basta fazer um cadastro gratuito para criar sua conta e poder cadastrar os domnios: http://www.no-ip.com/newUser.php https://www.dyndns.com/account/create.html Fica faltando ento a parte mais importante que a instalao do cliente. Para o No-IP, voc pode utilizar o prprio cliente Linux disponvel no: http://www.no-ip.com/downloads.php?page=linux Comece descompactando o arquivo. Dentro dele, existe uma pasta chamada "binaries", com o arquivo "noip2-Linux". Este o executvel que faz a atualizao do IP. Para us-lo, copie-o para a pasta "/usr/local/bin", como em: # tar -zxvf noip-duc-linux.tar.gz # cd noip-2.1.1/binaries/ # cp -a noip2-Linux /usr/local/bin/ O prximo passo executar o "noip2-Linux", usando a opo "-C -c" (create config), que cria o arquivo de configurao. Voc pode indicar onde o arquivo ser criado, basta indic-lo no comando. Nesta etapa ele pedir o login de usurio e o domnio registrado no site, como em: # noip2-Linux -C -c /etc/noip.conf Auto configuration for Linux client of no-ip.com. Please enter the login/email string for no-ip.com : meu@email.com Please enter the password for user 'meu@email.com ' ******** Only one host [meunome.no-ip.org] is registered to this account. It will be used. Please enter an update interval:[30] Do you wish to run something at successful update?[N] (y/N) N New configuration file '/etc/no-ip.conf' created. Com o arquivo de configurao criado, inicie o noip2-Linux usando o comando abaixo. Inclua o comando em uma dos scripts de inicializao do sistema, como o "/etc/rc.d/rc.local", para que ele seja executado durante o boot. No esquea de adicionar o "&" no final do comando, ele faz o programa rodar em background. Sem ele, o comando bloqueia o terminal, paralisando a inicializao do sistema. Note que agora usamos apenas o segundo "c", que indica que ele deve usar o arquivo de configurao anteriormente criado: # noip2-Linux -c /etc/noip.conf & Nas distribuies derivadas do Debian, existe a opo de instalar o pacote disponvel via apt-get: # apt-get install no-ip Ao ser instalado, ele cria automaticamente o script "/etc/init.d/no-ip", que se encarrega de ativar o programa durante o boot. Para que ele funcione, fica faltando apenas criar o arquivo de configurao, usando o comando: # no-ip -C -c /etc/no-ip.conf Para que a configurao entre o vigor, reinicie o servio, usando: # /etc/init.d/no-ip restart Para o DynDNS, utilizamos o ddclient, um pequeno aplicativo escrito em perl, que est disponvel nas principais distribuies. No caso das derivadas do Debian, a instalao mais simples, pois ele est disponvel diretamente nos repositrios principais, via apt-get:

# apt-get install ddclient O script de instalao includo no pacote faz uma srie de perguntas, incluindo o domnio virtual registrado, seu login e senha no servio, a interface do servidor ligada internet e o tempo de intervalo entre as atualizaes: No final, ele pergunta se voc deseja executar o ddclient como um servio. Responda que sim para que ele fique ativo continuamente e seja iniciado junto com o sistema. A configurao salva no arquivo "/etc/ddclient.conf", que voc pode editar manualmente caso precise fazer alteraes posteriormente. O arquivo inclui basicamente as mesmas opes feitas pelo wizard, com as respostas salvas em texto puro. No caso do CentOS e do Fedora, o pacote do ddclient est disponvel no repositrio do RPMForge. Voc encontra instrues de como ativar o repositrio no yum no https://rpmrepo.org/RPMforge/Using. Depois de adicionar o repositrio, a instalao feita da forma tradicional: # yum install ddclient O pacote RPM no inclui o wizard, por isso a configurao precisa ser feita manualmente, editando o arquivo "/etc/ddclient/ddclient.conf". Aqui vai um modelo pr-configurado, onde voc precisa apenas especificar seu login, senha e o domnio registrado: daemon=600 cache=/tmp/ddclient.cache pid=/var/run/ddclient.pid use=web, web=checkip.dyndns.com/, web-skip='IP Address' login=seulogin password=suasenha protocol=dyndns2 server=members.dyndns.org seudominio.dyndns.org Depois de terminar, reinicie o servio para que as alteraes entrem em vigor: # service ddclient restart Se voc usa um modem ADSL ou um roteador wireless para compartilhar a conexo, procure pela opo de usar um DNS dinmico (Dynamic DNS) dentro da configurao. A maioria dos modelos atuais incluem clientes para os servios mais populares:

Com isso, o prprio roteador pode se encarregar da atualizao, sem que voc precise instalar softwares adicionais no servidor da rede. Outros servios populares, que voc pode testar so o http://www.da.ru, o http://www.dtdns.com/ e o http://dns2go.com.