Sei sulla pagina 1di 24

Entendendo e configurando o Firewall (Shorewall)

Aplicativos
Qua, 22 de Julho de 2009 00:50

Montar um firewall para a proteo de uma nica mquina no tarefa das mais
simples, imagine montar um firewall para uma rede inteira, que requer muito mais
ateno e conhecimento, tanto dos servios quanto das ferramentas utilizadas. Qualquer
descuido pode comprometer toda a segurana da rede e a reputao do seu
administrador.
No caso especfico do Linux, trabalhar com o Iptables na linha de comando torna as
coisas um pouco mais complicadas, principalmente para usurios novatos ou
acostumados apenas com cliques na interface grfica. A criao de regras mais
elaboradas requer tantas opes e parmetros, e em uma rede mais complexa teremos
dezenas delas, que fcil cometer erros.
No estamos questionando a eficcia dessa poderosa ferramenta, muito pelo contrrio,
mas o domnio de seus comandos para uma utilizao eficiente e segura em situaes
mais avanadas exige bastante experincia por parte do usurio. Pensando nisso,
Thomas M. Eastep teve a brilhante idia de desenvolver uma ferramenta que
funcionasse como uma camada entre o estressado e atarefado administrador de rede e o
prolixo mas poderoso Iptables: o Shorewall, que a ferramenta utilizada pelas solues
disponibilizadas neste site na configurao do firewall.
A forma simples e intuitiva como so criadas as regras do Shorewall facilita bastante a
criao e manuteno do firewall, deixando todo o trabalho sujo transparente para o
usurio. Na inicializao do servio, essas regras sero compiladas e convertidas em
regras do Iptables, que, no final das contas, far a funo de firewall. Ou seja, o
Shorewall foi feito com o objetivo de facilitar a criao e a manuteno de regras para o
Iptables e a vida do administrador de rede. Uma beno para os seus usurios.
Com o Shorewall podemos, inclusive, aprimorar nossos conhecimentos no Iptables,
estudando as regas que sero criadas aps a sua execuo, recomendamos que todos
faam isso. So tantas configuraes avanadas que seria praticamente impossvel para
um "usurio mortal" configur-las e administr-las "na mo".
Neste tutorial mostraremos como fazer a configurao das regras do firewall, mas antes
de configurar as regras propriamente ditas, necessrio definir as zonas, que
representaro as redes conectadas ao servidor, as interfaces que estaro vinculadas a
cada zona, as polticas de acesso das zona e ativar o mascaramento, permitindo
encaminhamento de pacotes entres as interfaces. No se preocupe, todas essas
configuraes so feitas automaticamente na instalao de uma de nossas solues, mas
importante o entendimento, mos obra.
Zonas
A zonas representam as redes que estaro conectadas ao servidor e o prprio servidor
(firewall), por exemplo, a rede local ser representada pela zona loc, a Internet ser

representada pela zona net, o servidor ser representado pela zona fw. Caso pretenda
adicionar uma DMZ ao servidor, devemos criar a zona dmz, o importante representar
cada rede com uma zona, mais adiante isso ficar mais claro pra voc.
Para verificar quais as zonas foram definidas no servidor aps a instalao da soluo,
acesse opl > Firewall > Configuraes Avanadas > Zonas. Caso queira saber mais
sobre o arquivo de configurao das zonas digite man shorewall-zones no terminal.
Interfaces
Cada zona criada anteriormente dever ser associada a uma interface (placa de rede) do
servidor (aquela em que a rede da zona estar conectada). Nas nossas solues, a zona
net estar associada interface eht0, ou seja, o roteador ou modem ADSL dever ser
conectado placa de rede eth0 do servidor, e a zona loc estar associada interface
eth1. Caso tivssemos configurado a zona dmz, esta deveria ser associada a uma outra
placa de rede, eth2 provavelmente. Repare que a zona fw no precisa ser associada a
nenhuma interface, pois ser o prprio servidor.
Para verificar como as interfaces foram definidas no servidor aps a instalao da
soluo, acesse opl > Firewall > Configuraes Avanadas > Interfaces. Caso queira
saber mais sobre o arquivo de configurao das interfaces digite man shorewallinterfaces no terminal.
Polticas
Aqui definiremos as polticas padro de acesso entre as zonas, onde ACCEPT significa
que o acesso entre as zonas ser livre e REJECT e DROP o acesso ser bloqueado,
sendo que no primeiro haver respostas ao solicitante e no segundo nada ser
informado.
Para verificar como as polticas foram definidas no servidor aps a instalao da soluo,
acesse opl > Firewall > Configuraes Avanadas > Polticas (policy). Observe que
podemos usar a palavra chave all para representar todas as zonas e a palavra chave info
para ativar o registro (log) das tentativas de violao da poltica. Caso queira saber mais
sobre o arquivo de configurao das polticas digite man shorewall-policy no terminal.
Mascaramento
Agora iremos definir para quais interfaces ser permitido o mascaramento ou
encaminhamento de pacotes, graas a esta configurao ser possvel realizar
NAT/DNAT atravs do servidor.
Para verificar o mascaramento (masq) definido no servidor aps a instalao da
soluo, acesse opl > Firewall > Configuraes Avanadas > Mascaramento (Masq).
Repare que a interface da zona net, no nosso caso a eth0, dever sempre ser a primeira,
seguida pela interface da zona que se quer ativar o mascaramento. Caso queira saber
mais sobre o arquivo de configurao do mascaramento, digite man shorewall-masq no
terminal.

Configurando as regras do firewall


Todas as configuraes realizadas at aqui somente devero ser feitas uma nica vez, a
no ser que haja alguma alterao na infra-estrutura da rede, como a adio de uma
DMZ. Mas as alteraes realizadas no arquivo de configurao das regras (opl >
Firewall > Editar Regras do Firewall) sero freqentes e necessrias sempre que se
desejar a liberar algum acesso que no foi previsto pela soluo, por isso daremos maior
ateno a essa configurao.
Aps a instalao das solues OpoLinux PDC e E-jovem Proxy, o firewall
(Shorewall) estar pre-configurado para permitir o acesso a todos os servios em
execuo no servidor, no entanto, devido a forma como foram configuradas as polticas
de acesso no arquivo policy (DROPs e REJECTs), o trfego entre as zonas estar
bloqueado para os demais protocolos e portas, logo, qualquer liberao de acesso no
prevista na configurao inicial dever ser configurada nesse arquivo, por isso o
perfeito entendimento da sua sintaxe essencial para a configurao do firewall.
Organizao do arquivo de regras
Abra o arquivo, observe as regras pre-configuradas e procure entender como ele est
organizado, repare que as regras foram dividias pelo tipo de acesso: loc para net, loc
para fw etc. muito importante procurar manter essa organizao, embora no seja
obrigatrio, pois assim ser mais fcil ter o controle sobre a configurao do firewall.
Repare tambm que no ser necessrio criar regras do firewall para as demais zonas,
uma vez que a zona fw teve sua poltica definida como ACCEPT para as demais zonas.
O arquivo de regra ser lido de forma seqencial, assim as regras que estiverem mais
acima tero precedncia em relao s que estiverem mais embaixo.
O Shorewall vem com vrias regras (macros) pre-definidas e isso facilita bastante a
configurao, pois no ser necessrio saber quais so os protocolos e portas de
determinados servios na definio das regras, basta usar a macro correspondente ao
servio, caso exista uma. Para saber quais so as macros disponibilizadas pelo
Shorewall, basta acessar o diretrio "/usr/share/shorewall" no servidor. Cada macro
corresponde a um arquivo com o nome macro.SERVIO. Utilizamos muitas delas na
configurao do firewall.
Regas do firewall
A melhor maneira de ensinar e aprender como configurar o firewall com exemplos
prticos, vamos mostrar isso agora, mas lembre-se que, para o perfeito entendimento
dos exemplos que sero mostrados aqui, necessrio saber que protocolos e portas so
utilizados pelos servios que se quer configurar, e ensinar isso foge do objetivo deste
tutorial.
Vamos analisar uma das regras configuradas da rede local para o firewall (loc para fw).
Observe que a primeira regra definida no arquivo de configurao esta listada abaixo:
DNS/ACCEPT

loc

fw

Esta regra est permitindo o acesso ao servio DNS que est em execuo no firewall a
todas as estaes da rede local. Repare que no definimos o protocolo (tcp ou udp) nem
a porta (53) usados pelo servio, isso porque utilizamos uma macro fornecida pelo
Shorewall, caso contrrio a regra seria assim:
ACCEPT
ACCEPT

loc
loc

fw
fw

tcp
udp

53
53

Repare que agora foi necessrio definir duas regras, uma para o protocolo tcp e outra
para o protocolo udp, mas com o uso da macro DNS bastou criar uma nica regra.
Macros so bastante teis quando temos servios que utilizam vrias portas e
protocolos como o Samba (SMB).
Caso tenha a curiosidade em saber quais os protocolos e portas esto definidos em uma
macro, visualize o arquivo correspondente macro em "/usr/share/shorewall".
No ser necessrio criar regras para o trfego de retorno (sentido inverso), como
ocorreria se estivssemos configurando o Iptables na mo, isso ser feito
automaticamente pelo Shorewall, moleza no?
Agora voc j tem como entender a maioria das regras pre-configuradas na soluo que
instalou no seu servidor, aproveite e d uma nova vistoriada no arquivo de
configurao. Mas vamos estender um pouco mais o nosso exemplo, suponhamos agora
que voc precise liberar acesso ao servio SMTP na Internet a todas as mquinas da sua
rede local, para isso devemos adicionar a regra abaixo:
SMTP/ACCEPT

loc

net

Sem o uso de macros teramos:


ACCEPT

loc

net

tcp

25

E se quisssemos limitar essa regra apenas para a estao da rede local com o endereo
192.168.0.100? Basta adicionar dois pontos e o endereo da estao aps o nome da
zona loc.
SMTP/ACCEPT

loc:192.168.0.100

net

loc:192.168.0.100

net

ou
ACCEPT

tcp

25

Para adicionar mais estaes regra, pode-se criar uma nova regra para cada estao ou
inserir o endereo precedido de vrgula aps o endereo existente (sem espaos):
SMTP/ACCEPT

loc:192.168.0.100,192.168.0.101

net

loc:192.168.0.100,192.168.0.101

net

ou
ACCEPT

tcp

25

E se quisssemos agora restringir o acesso a apenas um host especfico na Internet, pois


da maneira como a regra foi definida acima, as estaes locais tero aceso ao servio
SMTP de todas as mquinas da Internet? Nesse caso, adicione o endereo do host aps
no nome da zona net:
SMTP/ACCEPT

loc:192.168.0.100,192.168.0.101

net:200.200.200.200

E para dar acesso ao servio SMTP do host 200.200.200.200 a todas as estaes rede
local, devemos definir a regra abaixo:
SMTP/ACCEPT

loc

net:200.200.200.200

Fcil demais! quem j configurou o Iptables na mo sabe do que estou falando.


Podemos tambm definir uma faixa de portas que sero abertas, veja como permitir o
acesso s portas altas (1024 a 65535) do protocolo tcp para estao 192.168.0.100 na
Internet:
ACCEPT

loc:192.168.0.100

net

tcp

1024:65535

At aqui definimos apenas regras da zona loc para a zona net, mas devem ser definidas
tambm regras para as demais zonas se necessrio, por exemplo, suponhamos que voc
tenha instalado o servio Web no servidor e queira dar acesso tanto rede local quanto
Internet, ser necessrio ento criar duas regras no firewall:
Web/ACCEPT

loc

fw

net

fw

e
Web/ACCEPT

Crie regras apenas para os servios que deseje permitir, se no exemplo acima o servio
Web fosse apenas para a rede local, no seria necessrio, nem prudente, criar a segunda
regra.
Redirecionamento e Proxy Transparente
Vamos falar agora sobre o redirecionamento que utilizado pelo Proxy Transparente.
Como dissemos em outras oportunidades aqui no site, nossas solues trabalham com o
Proxy Transparente, isso significa que os pacotes com destino porta 80 (http) sero
desviados automaticamente pelo firewall para o servio proxy na porta 3128 (Squid),
isso feito atravs do comando mostrado abaixo:
REDIRECT

loc

3128

tcp

http

Dessa maneira, nenhum acesso a porta 80 (http) ser feito diretamente pelas estaes,
tudo passar pelo proxy e ser controlado pelas suas regras de acesso. No entanto, se
precisarmos dar acesso direto porta 80 a uma determinada estao, o que devemos
fazer? Neste caso temos que fazer duas coisas, remover a estao do redirecionamento
para o proxy (fique atento o ponto de exclamao que funciona como excluso):

REDIRECT

loc:!192.168.0.100

3128

tcp

http

e liberar o trafego da estao para a porta 80:


HTTP/ACCEPT

loc:192.168.0.100

net

Agora a estao 192.168.0.100 acessar diretamente a Internet atravs de NAT, sem ser
desviada para o proxy, e no ser mais controlada pelas regras de controle acesso do
Squid, nem far uso do cache, o que deixar o acesso a sites na Internet mais lento (pelo
menos em teoria).
Caso queira excluir alguns hosts da Internet do redirecionamento, fazendo com que o
acesso a eles seja feito diretamente sem o uso do proxy, exclua seus endereos da regra
REDIRECT:
REDIRECT
loc
3128
tcp
http
200.200.200.200,200.200.200.201

depois crie uma regra permitindo o acesso direto a eles:


Web/ACCEPT

loc

net:200.200.200.200,200.200.200.201

Esta configurao bastante til para servios como a Conectividade Social da Caixa
Econmica Federal, que percisam ser acessados diretamente sem passar pelo proxy. Os
endereos dos servidores da Conectiviade Social so:
200.201.166.0/24,200.201.173.0/24,200.201.174.0/24 (sim, voc pode usar endereo de
rede nas regras!), configure-os no seu firewall caso precise usar esse servio na rede
local da sua empresa (bem provvel).
O leitor mais atento deve ter percebido que nos referimos s macros Web e HTTP nos
exemplos mostrados. que no Shorewall a macro Web se refere s porta 80 e 443, j a
macro HTTP se refere apenas porta 80. Temos ainda a macro HTTPS que se refere
porta 443. Use aquela que atender as suas necessidades.
Acesso s estaes da rede local
Agora falaremos sobre o trafego da zona net para a zona loc, que um pouco diferente
dos demais. Como no temos IPs vlidos nas estaes da rede local, ser necessrio
fazer um redirecionamento das requisies ao IP vlido do servidor para o endereo no
vlido da estao que se deseja acessar remotamente. A este tipo e conexo dar-se o
nome de DNAT.
Vejamos ento um outro exemplo prtico, vamos supor que o endereo do servidor seja
100.100.100.100 (um endereo vlido) e queiramos que o host 200.200.200.200 da
Internet acesse o servio VNC (porta 5900) na estao 192.168.0.100 da rede local.
Basta definir a regra abaixo no arquivo de configurao do firewall:
DNAT:info net:200.200.200.200
100.100.100.100 - -

loc:192.168.0.100:5900 tcp 5900 -

Agora, basta acessar o servidor (atravs do seu endereo IP) na porta 5900 que o

trfego ser redirecionado para o servio VNC, porta 5900, na estao. Parece
complicada a regra, e realmente um pouco, mas funciona perfeitamente bem. No
entanto necessrio que o servidor tenha um endereo IP vlido. Se no tiver, caso
esteja utilizando um modem ADSL roteado (Velox), ser necessrio fazer uma
configurao semelhante no modem. Assim, o trfego ser redirecionado do modem
para o servidor que o redirecionar para a estao. Acredite! isso funciona..
Mas h um grande porm nisso tudo, voc est abrindo uma vulnerabilidade de
segurana na sua rede, pois est permitindo que estaes na Internet acessem a sua rede
local e isso no nada bom. Caso realmente necessite dar acesso s estaes da sua
rede local atravs da Internet com segurana, experimente uma outra soluo nossa, a
connectVpn. Caso queira saber mais sobre o arquivo de configurao das regras do
firewall digite man shorewall-rules no terminal.
Ativando as alteraes
Sempre que fizer alguma altarao nas regras do firewall, ser necessrio ativar as
alteraes: opl > Firewall > Ativar Alteraes. Ao fazer isso, surgir na tela uma
listagem semelhante a mostrada abaixo:
Compiling...
Compiling /etc/shorewall/zones...
Compiling /etc/shorewall/interfaces...
Determining Hosts in Zones...
Preprocessing Action Files...
Pre-processing /usr/share/shorewall/action.Drop...
Pre-processing /usr/share/shorewall/action.Reject...
Compiling /etc/shorewall/policy...
Compiling Kernel Route Filtering...
Compiling Martian Logging...
Compiling /etc/shorewall/masq...
Compiling MAC Filtration -- Phase 1...
Compiling /etc/shorewall/rules...
Generating Transitive Closure of Used-action List...
Processing /usr/share/shorewall/action.Reject for chain Reject...
Processing /usr/share/shorewall/action.Drop for chain Drop...
Compiling MAC Filtration -- Phase 2...
Applying Policies...
Generating Rule Matrix...
Creating iptables-restore input...
Shorewall configuration compiled to /var/lib/shorewall/.start
Processing /etc/shorewall/params ...
Starting Shorewall....
Initializing...
Processing /etc/shorewall/init ...
Setting up ARP filtering...
Setting up Route Filtering...
Setting up Martian Logging...
Setting up Accept Source Routing...
IP Forwarding Enabled
Setting up Proxy ARP...
Setting up Traffic Control...
Preparing iptables-restore input...
Running /sbin/iptables-restore...
Processing /etc/shorewall/start ...

Processing /etc/shorewall/started ...


done.

Caso alguma coisa d errado, devido a um erro de configurao por exemplo, no ser
mostrada a palavra done (feito em ingls) no final da listagem. Repare que podemos
observar as duas etapas de inicializao do Shorewall: a compilao das configuraes
e a inicializao do firewall com a ativao das regras do Iptables.
Visite o site do desenvolvedor, l voc encontrar vrias informaes e dicas sobre a
configurao e utilizao do Shorewall e saber mais sobre o potencial dessa
maravilhosa ferramenta.

Como configurar o DNS Reverso


Aplicativos
Seg, 29 de Setembro de 2008 11:36
ndice do Artigo
Como configurar o DNS Reverso
Contratando o servio
Pacotes necessrios
Configurando o Bind
Arquivo da zona reversa
Iniciando o servio
Testando o DNS Reverso
Todas as Pginas
Pgina 1 de 7
Mas o que significa o DNS reverso? Todos ns sabemos que DNS
(Domain Name Server) o servio responsvel pela converso de
nomes em endereos IP na Internet, e que sem ele seramos
obrigados a memorizar o endereo IP de cada site que quisssemos
acessar, o que seria praticamente impossvel. O DNS reverso faz
justamente o contrrio, esse servio converte endereos IP em
nomes e bastante utilizado por alguns servios.
O Comit Gestor da Internet no Brasil CGI.br recomenda que o DNS reverso seja
configurado para todas as mquinas que provem servios Internet, e assim o fao em
todos os meus servidores, mas muitos administradores de rede no o implementam
devido s dificuldades de configurao. Entretanto, no caso especfico dos servios de
e-mail, sua implementao essencial, pois a maioria dos servidores iro verificar se os
endereos IP das mensagens recebidas possuem respostas reversas, caso contrrio, as
rejeitaro como se fossem spam.
Pensando nisso, resolvi mostrar neste tutorial como fiz para configurar o DNS reverso
de uma rede cujo link fora contratado da Embratel, mas que pode ser facilmente

adaptado para os servios de qualquer outra que permita a delegao da sub-rede


reversas.
Prefira sempre os servios de operadoras que lhe permita configurar sua prpria zona
reversa.
Em nossas configuraes, usaremos CentOS 4 Server e suporemos que o DNS direto j
esteja devidamente configurado.

Contratando o servio
Para prover servios Internet, tais como e-mails, home pages etc., necessrio
contratar um link de acesso que fornea endereos IP fixos e vlidos. Aqui em
Fortaleza, cidade de onde escrevo este tutorial, temos vrias empresas que oferecem
esse tipo de servio, no nosso caso optamos pelos servios da operadora Embratel.
Quando a Embratel instala um link em um cliente, ela fornece um documento chamado
OTS (Ordem Tcnica de Servio). A partir desse documento, podemos obter todos os
dados necessrios para a configurao dos nossos servidores.
Dentre as vrias informaes constantes na OTS, as mais importantes para a
configurao dos servidores so o IP e a mascara da sub-rede oferecida ao cliente.
Atravs deles, obteremos todos IP fixos e vlidos disponveis. No nosso exemplo
temos:

IP: 201.30.191.160 (representa o


endereo IP da sub-rede, NETWORK);

Mascara: 28 (representa a mascara da


sub-rede, NETMASK ).

Como a nossa inteno aqui apenas mostrar como configurar o servidor DNS reverso,
mostraremos apenas resumidamente uma maneira prtica de obter os endereos da subrede. Caso esteja interessado em maiores informaes sobre como calcular endereos
de redes e sub-redes IP, sugerimos uma pesquisa rpida no Google.
Para calcular o nmero de endereos da nossa sub-rede, basta subtrair 32 do nmero de
bits da mascara fornecida (28), e elevar a 2 ao resultado dessa subtrao:
32 28 = 4 4 = 16

Assim, teremos 16 endereos IP para cada sub-rede de mascara 28.


Como primeiro endereo da nossa sub-rede (NETWORK) comea em 160 (conforme
indica a OTS), o ltimo endereo (BROADCAST) ser (160 + 16) 1 = 175, ou seja,

201.30.191.175.
Para quem no sabe (ou no lembra), a macara 28 representada pelos octetos
11111111.11111111.11111111.11110000 (28 dgitos 1), que equivale a 255.255.255.240
na base decimal, onde: 255 = 128+64+32+16+8+4+2+1 e 240 = 128+64+32+16.
No fique assustado, pode parecer difcil a primeira vista, mas fcil de entender,
apenas fiz uma soma para descobrir os valores decimais referentes aos binrios
11111111 e 11110000 (chamamos isso de bizu aqui em Fortaleza). Para saber mais
sobre converso de binrios para decimais, acesse este site.
Pronto, agora temos todos os endereos disponibilizados pela operadora:

201.30.191.160 NETWORK

201.30.191.161 rt.centec.org.br (roteador da rede gateway)

201.30.191.162 mail.centec.org.br

201.30.191.163 ns1.centec.org.br

201.30.191.164 www.centec.org.br

201.30.191.165

...(continua)

201.30.191.174

201.30.191.175 BROADCAST

Observe que definimos os nomes do roteador e de trs servidores que sero utilizados
na rede, os demais IP no sero utilizados. Uma pena, pois disponibilizar mais
endereos que o necessrio ajuda a aumentar a escassez de endereos IPv4 vlidos na
Internet. Podemos agora configurar o nosso DNS reverso.

Pacotes necessrios
O servidor DNS mais utulizado no Linux o Bind, embora tenhamos outras opes
menos populares (no recomendo, um bom administrador de redes tem que saber usar o
Bind).
Como dito anteriormente, partiremos da premissa de que o Bind j esteja instalado e o
DNS direto devidamente configurado, iremos apenas configurar o DNS reverso, no
entanto, caso o Bind no esteja instalado, execute o comando abaixo:
# yum install bind

Na instalao padro do CentOS 4 Server, todos os pacotes do Bind j so instalados e


prontos para usar, mas caso queira verificar a instalao no seu servidor, execute o

seguinte comando:
# rpm -aq | grep bind
bind-9.2.4-28.el4
ypbind-1.17.2-13
bind-chroot-9.2.4-28.el4
bind-utils-9.2.4-28.el4
bind-libs-9.2.4-28.el4

Aps a instalao do CentOS, execute o comando yum update, esse procedimento ir


atualizar todos os pacotes do seu servidor, inclusive os do Bind.

Configurando o Bind
Inicialmente devemos configurar o arquivo named.conf localizado no diretrio /etc,
nesse arquivo faremos referncia zona reversa de definiremos mais adiante.
O usurio mais atento perceber que /etc/named.conf representa um link simblico
(atalho) para o verdadeiro arquivo localizado em /var/named/chroot/etc/named.conf.
Isso se deve ao fato do Bind no CentOS ser executado em uma gaiola chroot (no
entraremos em detalhes sobre isso neste tutorial), por isso todos os nossos arquivos de
configurao do Bind na verdade ficaro localizados no diretrio /var/named/chroot.
Agora definiremos os dados referentes nossa zona reversa adicionando as seguintes
linhas no final do arquivo /etc/named.conf.
zone "160-175.191.30.201.in-addr.arpa" IN {
type master;
file "160-175.191.30.201.zone";
allow-update { none; };
allow-transfer { 200.255.125.214; };
};

No arquivo named.conf foi configurada a zona reversa 160-175.191.30.201.inaddr.arpa. Observe como foi definido o nome dessa zona: 160 o primeiro endereo
da sub-rede (NETWORK), 175 o ltimo endereo (BROADCAST), 191.30.201 so os
trs primeiros octetos da sub-rede invertidos e o final in-addr.arpa por padro. O nome
da zona reversa dever ser sempre representado dessa maneira.
Segundo a configurao acima, o nosso DNS reverso ser do tipo master, ou seja, ser
o DNS primrio da nossa zona reversa; o arquivo onde ficaro os dados da zona ser
160-175.191.30.201.zone, mostraremos isso em detalhes mais adiante; no sero
permitidas atualizaes dinmicas de endereos nessa zona, pois allow-update ser
definido como none, e ser permitida transferncia de zona para o servidor reverso
secundrio da Embratel (altere esse endereo para aquele fornecido pela sua operadora),
pois allow-transfer est definido como 200.255.125.214.
Falando um pouco mais da zona reversa, sempre configuro meus DNS reversos como
primrios (como mostrado acima), pois caso fossem configurados como secundrio,
seria a operadora que controlaria a zona reversa, e sempre que fosse necessria a adio
de novos endereos reversos, teramos que entrar em contato com ela para efetivasse a
operao, embora nesse caso a configurao do servidor seja bem mais simples, porque

no necessrio configurar o arquivo da zona reversa (nosso prximo passo).


Configurar o servidor reverso como primrio nos d o poder de controlar diretamente os
nosso endereos.
Devemos configurar agora o arquivo da zona reversa 160-175.191.30.201.zone.

Arquivo da zona reversa


Conforme definimos no arquivo named.conf, o arquivo da zona reversa ser chamado
160-175.191.30.201.zone e dever estar localizado no diretrio
/var/named/chroot/var/named (no CentOS).
# cat 160-175.191.30.201.zone
$TTL 3h
$ORIGIN .
160-175.191.30.201.in-addr.arpa IN SOA mail.centec.org.br.
admin_sede.centec.org.br. (
2008061301
3h
1h
1w
1h )
IN
IN
IN

NS
NS
NS

$ORIGIN
161
162
163
164

ns.embratel.net.br.
ns2.embratel.net.br.
mail.centec.org.br.

160-175.191.30.201.in-addr.arpa.
IN PTR
rt.centec.org.br.
IN PTR
mail.centec.org.br.
IN PTR
ns2.centec.org.br.
IN PTR
www.centec.org.br.

No entrarei nos detalhes de todos os parmetros configurados no arquivo da zona,


apenas daqueles mais importantes para a manuteno da zona:

Registro SOA: mail.centec.org.br nome do servidor DNS reverso


primrio e admin_sede.centec.org.br o e-mail do administrador da
zona (observe que o @ foi substitudo por um ponto);

2008061301: nmero seqencial, sempre que fizermos alguma


alterao na zona, devemos acrescer esse nmero para que o DNS
reverso secundrio perceba que houve alteraes e atualize deus
dados. Sempre uso esta seqncia padro: ano da alterao (2008),
ms (06), dia (13) e nmero da alterao do dia (01);

Registros NS: ns.embratel.net.br e ns2.embratel.net.br: so os


servidores DNS fornecidos pela operadora, caso trabalhe com a
Embratel no ser necessrio mudar, e mail.centec.org.br o nome
do servidor DNS reverso primrio, no caso o nosso servidor;

Registros PTR: repare que esses registros so os ltimos octetos


dos endereos IP definidos para cada servidor associados a seus
respectivos nomes (terminados com um ponto, esse detalhe muito

importante).

Para maiores detalhes sobre a configurao do Bind, recomendo a leitura do livro DNS
e BIND da editora Campus/OREILLY, a melhor referncia sobre o assunto de que
conheo.
Os demais registros devero ser adaptados conforme as suas necessidades. Aps a
criao do arquivo da zona reversa, devemos criar um link simblico para esse arquivo
no diretrio /var/named:
# ln -s /var/named/chroot/var/named/160-175.191.30.201.zone \
> /var/named/160-175.191.30.201.zone

Pronto, o Bind j est configurado, agora basta ativar as alteraes.


Como configurar o DNS Reverso - Iniciando o servio

Iniciando o servio
Agora estamos prontos para reiniciar o servidor DNS (lembra que supomos que o
DNS direto j estava configurado):
# service named restart
Parando o named:
Iniciando named:

[
[

OK
OK

]
]

Caso todas as configuraes tenham sido feitas corretamente, o DNS reverso da nossa
rede deve estar funcionando adequadamente. No entanto, diferente do DNS direto, ser
necessrio ainda entrar em contato com a operadora para que essa delegue a zona
reversa da sub-rede ao nosso servidor.
No cado da Embratel, ligue para o telefone 0800 721.1021 e pea para falar com o
departamento tcnico informando que quer configurar a zona reversa. Sero solicitadas
algumas informaes da empresa (CNPJ, nome do circuito etc.), o nome do servidor
onde foi configurado o DNS reverso, o IP desse servidor, como dever ser configurado
(master ou slave) e o seu e-mail para envio dos dados da configurao.
O tcnico da Embratel verificar se o servidor foi configurado corretamente, caso
contrrio ser necessrio rever a configurao e ligar novamente. Se tudo estiver
correto, o DNS reverso entrar em operao em aproximadamente uma hora.
O leitor mais atento deve ter percebido que no foi necessrio acessar o site registro.br
e definir os endereos dos servidores de nome responsveis pelo domnio em questo.
Como dissemos, o DNS direto j devia estar configurado e operante, logo, essa
definio j foi realizada.
Relembrando, no necessrio configurar servidores secundrios (slaves) para as zonas
reversas, esses sero configurados e mantidos pela operadora.

Testando o DNS Reverso

Para testar seu DNS reverso utilize o comando nslookup:


# nslookup 201.30.191.162
Server:
127.0.0.1
Address:
127.0.0.1#53
Non-authoritative answer:
162.191.30.201.in-addr.arpa
canonical name = 162.160175.191.30.201.in-addr.arpa.
162.160-175.191.30.201.in-addr.arpa
name = mail.centec.org.br.
Authoritative answers can be found from:
160-175.191.30.201.in-addr.arpa nameserver
160-175.191.30.201.in-addr.arpa nameserver
160-175.191.30.201.in-addr.arpa nameserver
ns.embratel.net.br
internet address =
ns2.embratel.net.br
internet address =
mail.centec.org.br
internet address =

= ns2.embratel.net.br.
= mail.centec.org.br.
= ns.embratel.net.br.
200.255.253.241
200.245.255.33
201.30.191.162

Perfeito! agora as mensagens do seu servidor de e-mails no sero mais rejeitadas


devido falta de um DNS reverso.
Procurei ser bastante sucinto nesse tutorial, claro que para o perfeito entendimento das
funcionalidades e configuraes do Bind necessrio um material bem mais completo,
no entanto espero ter atingido o meu objetivo de dar alguma orientao aos
administradores de rede que estejam com dificuldades no entendimento e na
configurao do DNS reverso.

Pr-requisitos
Para executar a soluo connectVpn necessrio ter instalada a verso 4 ou superior
servio openSSH, que permite bind address para endereos remotos (parmetro -L).
Infelizmente, o CentOS 4 vem com uma verso inferior, o que impossibilita a sua
utilizao (a menos que seja atualizada). J no CentOS 5 e no Ubuntu Server 8.04,
podemos execut-la sem problemas.
Antes de iniciar a instalao ser necessrio:

Um servidor Linux com o servio openSSH verso 4 (ou superior);

Baixar o arquivo de instalao da soluo connectVpn.

Arquivo de instalao

Verso 1.2.2 : connectVpn.1.2.2.tar.gz


Instalao
Aps baixar o arquivo, descompacte-o no seu servidor e execute o script de instalao:
# wget
http://www.opcaolinux.com.br/download/connectVpn/connectVpn.1.2.2.tar.
gz
# tar xzf connectVpn.1.2.2.tar.gz
# cd connectVpn.1.2.2/
# ./install.sh

VPN via tneis SSH

Imagine a seguinte situao; voc um administrador de rede, e na empresa onde


trabalha um de seus usurios da equipe de desenvolvimento (usurio_local) necessita
acessar uma base de dados MySQL que est em execuo em um servidor da filial
(www.ssh_server.com.br). Em um segundo momento, um outro usurio, dessa vez da
equipe de suporte, precisa acessar remotamente essa mesma filial para dar manuteno
via VNC a uma determinada estao (host_remoto).

Ambas, matiz e filial, tm conectividade com a Internet e a infra-estrutura da rede


semelhante a mostrada na figura acima. Observe que os servidores ssh_local e
www.ssh_server.com.br tm acesso tanto Internet quanto s suas redes locais, e que o
endereo IP de ssh_local na rede interna 192.168.1.254 (ip_local). E agora, o que
fazer?
Uma maneira rpida e fcil de resolver esse problema seria abrir a porta do MySQL
(3306) no servidor remoto e fazer um DNAT no firewall desse servidor, redirecionando
as solicitaes dos usurios para o servio VNC em execuo no host remoto. No
entanto, essa abordagem no seria muito prudente uma vez que no prov autenticao
e os dados trafegariam abertos atravs da Internet (sem criptografia). Esse um caso
tipico onde interessante a criao de uma Rede Privada Virtual, mais conhecida como
VPN.
Pesquisando na Internet, encontramos vrias solues para implementar VPN, mas a
maioria delas requer configuraes complexas, algumas at a recompilao do kernel, o
que seria invivel para servidores em produo como os do nosso exemplo. Dentre as
vrias opes disponveis, a que mais nos chamou a ateno foi a criao de tneis
atravs do SSH, tanto pela sua facilidade de implementao, sem a necessidade de
nenhuma instalao adicional, quanto pelo fato de j termos tudo instalado e pronto
para ser usado (usamos servidores Linux, claro). Mostraremos ento como fizemos para
configurar nossa VPN.

Configurao
Inicialmente, no servidor local (ssh_local) onde sero criados os tneis, devemos gerar

um par de chaves pblica e privada que ser utilizada na autenticao da nossa VPN,
para isso execute o seguinte comando como root:
# ssh-keygen -t dsa -b 1024 -P "" -f ~/.ssh/vpnKey_dsa

Note que esse servidor local no precisa necessariamente ser o gateway da rede local,
pode ser qualquer mquina Linux que possa acessar o servio ssh de outras atravs da
Internet. Aps a execuo do comando mostrado acima, ser criado um par de chaves
no diretrio /root/.ssh denominadas: vpnKey_dsa e vpnKey_dsa.pub.
Cuidado! Mantenha sua chave privada (vpnKey_dsa) guardada a sete chaves, pois
ela dar acesso aos seus servidores remotos, sem senha, a qualquer um que a possua.
Em seguida, copie a chave pblica para os servidores que sero acessados remotamente
via ssh, no caso www.ssh_server.com.br:
# cat /root/.ssh/vpnKey_dsa.pub | ssh www.ssh_server.com.br -l root -p
22 \
> 'umask 007; [ -d .ssh ] || mkdir .ssh; cat >>
~/.ssh/authorized_keys'

Agora que j temos criada a infra-estrutura de autenticao para a nossa VPN, vamos
criar os tneis para cada servio solicitado atravs da sintaxe abaixo:
#
>
>
>
>
>

ssh -f -N -C -p 22 \
-i /root/.ssh/vpnKey_dsa \
-o serverAliveInerval=120 \
-L ip_local:porta_local:ip_remoto:porta_remota
-l root
www.ssh_server.com.br

Onde:

-f = execuo em segundo plano;

-N = no executa comandos remotos;

-C = comprime os dados ante de envi-los (economia de banda);

-p 22 = porta do servio ssh no servidor remoto;

-i /root/.ssh/vpnKey_dsa = chave privada usada na autenticao;

-o serverAliveInerval=120 = mantm a conexo sempre ativa (a cada


2 minutos);

-L ip_local:porta_local:ip_remoto:porta_remota = cria o tnel.

Para acessar o servio MySQL em www.ssh_server.com.br teramos:


#
>
>
>
>

ssh -f -N -C -p 22 \
-i /root/.ssh/vpnKey_dsa \
-o serverAliveInerval=120 \
-L 192.168.1.254:3306:200.200.200.200:3306 \
-l root

> www.ssh_server.com.br

Pronto! agora basta informar aos usurios que acessem ssh_local (192.168.1.254) na
porta 3306 que a conexo ser redirecionada automaticamente para
www.ssh_server.com.br, ou seja, para os usurios ser como se o servio remoto
estivesse sendo executado em ssh_local (192.168.1.254); faclimo, no?
E o servio VNC? bem, para acessar o VNC como indicado na figura, devemos criar
um novo tnel da seguinte maneira:
#
>
>
>
>
>

ssh -f -N -C -p 22 \
-i /root/.ssh/vpnKey_dsa \
-o serverAliveInerval=120 \
-L 192.168.1.254:5900:172.16.1.100:5900 \
-l root
www.ssh_server.com.br

e conectar em ssh_local (192.168.1.254) atravs da porta 5900. Observe que agora


utilizamos o IP do host_remoto (172.16.1.100). Poderamos ter utilizado qualquer porta
em ssh_local, desde que superior a 1023 e que no estivesse sendo utilizada por outros
servios.
O interessante que os servios remotos podem ser acessados de qualquer estao da
rede local, independente do sistema operacional utilizado, de maneira totalmente
transparente para os usurios, e que os tneis podem ser criados em qualquer uma das
estaes locais (Linux claro), desde que a estao utilizada tenha permisso para
acessar o servidor SSH remoto, ou seja, no necessria a utilizao de um servidor
gateway para isso, embora seja o ideal (no exemplo acima, criamos nossos tneis no
servidor gateway da rede local).
Fique atento, os tneis sero quebrados caso a mquina seja reiniciada ou a conexo
fique off-line por mais de 120 segundos.

Soluo connectVpn
Para facilitar a criao de tneis SSH, criamos uma aplicao em shell script chamada
connectVpn. Atravs dessa ferramenta, podemos criar e manter nossos tneis de
maneira fcil, rpida e eficiente.
Sua instalao bastante simples, basta baixar e descompactar o arquivo
connectVpn.1.x.x.tar.gz na nossa seo de downloads e executar o script install.sh como
mostrado a seguir:
# wget
http://www.opcaolinux.com.br/download/connectVpn/connectVpn.1.2.2.tar.
gz
# tar -xzvf connectVpn.1.2.2.tar.gz
connectVpn.1.2.2/
connectVpn.1.2.2/install.sh

connectVpn.1.2.2/vpn_final_1.2.2.tar.gz
# cd connectVpn.1.2.2
# ./install.sh
connectVpn v.1.2.2 - www.opcaolinux.com.br
NOME
connectVpn - Cricao de VPNs atravs tneis SSH.
SINOPSE
connect {start|quiet|status|clean|stop|edit|keygen|help}
DESCRICAO
start:
quiet:
status:
clean:
stop:
edit:
keygen:
help:

inicia tneis configurados em connectVpn.conf;


inicia tneis silenciosamente (uso com cron);
mostra tneis iniciados;
elimina tneis seletivamente;
elimina todos os tneis ativos;
edita arquivo de configurao connectVpn.conf;
cria e exporta chave pblica para hosts remotos;
mostra este texto.

AUTOR
Tarcsio Carvalho Espnola
tarcisio(arroba)opcaolinux.com.br
www.opcaolinux.com.br
COPYRIGHT
Este um software livre e pode ser distribudo sobre os termos da
GNU General Public License .
Fortaleza/Cear/Brasil, 28 de Janeiro de 2007
VEJA TAMBM
Para maiores informaes ver arquivo connectVpn.conf

Aps a instalao sero criados dois arquivos e um link simblico:


/usr/local/bin/connectVpn/connectVpn.sh
= script do programa;
/usr/local/bin/connectVpn/connectVpn.conf = arquivo de configurao;
/usr/local/bin/connect
= link simblico.

Vejamos como utiliz-la:


# connect {start|quiet|status|clean|stop|edit|keygen|help}

Onde:

sart = inicia tneis configurados em connectVpn.conf;

quiet = inicia tneis silenciosamente (uso com cron);

status = mostra tneis iniciados;

clean = elimina tneis seletivamente;

stop = elimina todos os tneis ativos;

edit = edita arquivo de configurao connectVpn.conf;

keygen = cria e exporta chave pblica para hosts remotos;

help = Ajuda.

O arquivo de configurao connectVpn.conf, que pode ser acessado digitando-se


connect edit, contm uma srie de informaes sobre como configurar os tneis, leia-o
e edite de acordo com as suas necessidades. No nosso exemplo, adicionaremos as
seguintes linhas no arquivo connectVpn.conf:
Para acessar o VNC no host_remoto:
192.168.1.254:5900:172.16.1.100:5900:www.ssh_server.com.br:22

ou
192.168.1.254:5900:172.16.1.100::www.ssh_server.com.br:22

Observe que podemos omitir a porta no host_remoto quando essa for igual
porta_local. Para acessar o MySQL em www.ssh_server.com.br:
192.168.1.254:3306:www.ssh_server.com.br:3306:www.ssh_server.com.br:22

ou
192.168.1.254:3306:www.ssh_server.com.br::www.ssh_server.com.br:

ou
192.168.1.254:3306:::www.ssh_server.com.br:

Observe que podemos omitir a porta do ssh no www.ssh_server.com.br (a ltima),


quando essa for igual porta padro (22). Veja mais detalhes sobre omisso de
parmetros no arquivo connectVpn.conf.
Aps efetuadas as todas as configuraes, devemos iniciar os tneis:
# connect start
[ OK ] 192.168.1.254:5900 -> 172.16.1.100:5900
(www.ssh_server.com.br)
[ OK ] 192.168.1.254:3306 -> www.ssh_server.org.br:3306
(www.ssh_server.com.br)

Agora seus usurios iro acessar os servios remotos acessando o ssh_local


(192.168.1.254).
Experimente, modifique, aprimore, sugira e compartilhe! Qualquer dvida entre em
contato conosco. Os fatos relatados aqui so reais e as solues demonstradas at hoje
utilizadas satisfatoriamente em servidores de produo.
Nota: Todas as configuraes aqui mostradas somente sero possveis com a utilizao
do openSSH verso 4.0 ou superior, que permite bind address para endereos remotos
(parmetro -L). Consulte o manual do SSH para maiores informaes.

Material de referncia:

http://www.guiadohardware.net/dicas/ssh-apenas-tunelando.html

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=882

http://unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1

http://www.brasport.com.br/index.php?Escolha=8&Livro=L00191

E-jovem Proxy

Servidor Proxy do Projeto E-jovem

Em junho de 2008, a equipe de TI do Instituo Centec foi convidada para desenvolver e


implementar uma soluo de servidor proxy para as escolas do Estado do Cear que
iriam participar do Projeto E-jovem, uma vez que o acesso Internet dessas escolas era
bastante lento e isso inviabilizaria os cursos on-line que seriam ministrados.
Como j tnhamos alguma experincia com a implementao de servios Linux, no foi
difcil adaptar uma de nossas solues para uso no projeto, assim nasceu a soluo Ejovem Proxy.
Embora o objetivo inicial fosse apenas armazenar sites acessados para aumentar a
performance da rede (cache), na primeira verso implementamos tambm os seguintes
servios adicionais atravs do CentOS Linux Server 4:

Ferramenta para administrao do servidor desenvolvida em shell


script: OpoLinux Administrator (opl);

Proxy transparente com cache e controle de acesso Internet com as


seguintes caractersticas:
o

controle de acesso pelo endereo IP das estaes;

definio de endereos IP administrativos (acesso total);

definio de endereos IP com acesso ao MSN Messenger TM;

definio de endereos IP sem acesso algum;

definio de intervalos de tempo para proibio de acesso por


endereos IP;

controle de acesso por palavras na URL;

controle de acesso por domnio;

controle de acesso por tipo de arquivo;

controle de acesso por tipo de URL;

controle de acesso pela rede local das estaes.

Servidor DHCP;

Cache DNS;

Firewall (Shorewall).

No total, essa soluo foi implementada em 68 escolas do ensino mdio do Estado do


Cear e em 2009 estima-se que esse nmero chegue a 100, nada mal para uma soluo
desenvolvida em apenas uma semana.
Nova Verso
Devido ao sucesso da primeira verso e atendendo a solicitaes dos usurios,
resolvemos adicionar e aprimorar alguns servios que passaram a ter as seguintes
caractersticas adicionais:

Novo instalador, agora a ser executado sobre o Ubuntu Server 8.04


LTS; (novo)

Ferramenta administrativa atualizada; (melhoria)

Proxy transparente com cache e controle de acesso aprimorado:


o

controle de acesso pelos nomes ou endereos IP das estaes;


(melhoria)

definio de intervalo de tempo com acesso livre (sem


restries); (novo)

monitoramento do acesso Internet das estaes; (novo)

tamanho dos downloads limitado para estaes no


administrativas. (novo)

Servidor DHCP integrado ao DNS; (melhoria)

Servidor DNS dinmico (inclusive reverso) com cache e consultas no


recursivas Internet; (melhoria)

Servidor de arquivos (pasta compartilhada no servidor). (novo)

Caso queira experimentar a soluo E-jovem Proxy, acesse nossa seo de downloads
e baixe o arquivo de instalao.

Pr-requisitos

A soluo OpoLinux PDC foi feita para ser instalada sobre a distribuio Ubuntu
Server 8.04 ou 10.04 LTS, ento, antes de iniciar a instalao, ser necessrio:

Um servidor com duas placas de rede e acesso Internet;

O Ubuntu Server 8.04 ou 10.04 LTS previamente instalado e configurado;

Baixar o arquivo de instalao da soluo OpoLinux PDC de acordo com a


verso do Ubuntu instalada.

Faa a instalao padro do Ubuntu Server como mostrado aqui no site, no ser
necessrio selecionar nenhum pacote adicional, todos os pacotes necessrios sero
baixados e instalados durante a execuo do script de instalao.
Arquivo de instalao
Verso 4.804.3 para Ubuntu Server 8.04 LTS : oplpdc_4.804.3_final.tar.gz
(descontinuada)
Verso 6.1004.2 para Ubuntu Server 10.04 LTS : oplpdc_6.1004.2_final.tar.gz
Instalao
Aps baixar o arquivo, descompacte-o no seu servidor e execute o script de instalao
com a conta do usurio root:
# wget
http://www.opcaolinux.com.br/download/oplpdc/oplpdc_6.1004.2_final.tar
.gz
# tar xzf oplpdc_6.1004.2_final.tar.gz
# cd oplpdc_6.1004.2_final/
# ./config.sh

Para maiores informaes sobre esta soluo, clique aqui.


Todos os softwares e ferramentas disponibilizados neste site so livres e podem ser
copiados e/ou usados sem restries, no entanto no damos nenhum tipo de garantia
quanto a sua utilizao. Pedimos apenas que sejam preservados os devidos crditos de
autoria.

Potrebbero piacerti anche