Em nossa rede temos um
servidor proxy/firewall com o CL8 e ip interno
192.168.0.1 e um
servidor do banco de dados Firebird com 192.168.0.5
com CL8 (pode ser Windows).
Nossas aplicações internas e aplicações que rodam em nossas filiais via
VPN acessam o Firebird diretamente pelo ip 192.168.0.5.
Acessos externos ao Firebird sem estar na VPN, não são liberados pelo
proxy e somente abrir a porta 3050 nele não bastou.
Para o acesso externo, foi criado um redirecionamento para o servidor
192.168.0.5.
Para este teste foi utilizado
Conectiva Linux 8 e
iptables-1.2.4-1cl no ambiente abaixo:
INTERNET <=> CL8 <=> Firebird
>> PROXY
Eth0_CL8=200.X.X.X (Internet)
Eth1_CL8=192.168.0.1
>> FIREBIRD
Eth0=192.168.0.5
Caso não tenha o iptables no servidor proxy, o pacote está no CD de
instalação e utilize o comando:
# rpm -ivh iptables*
pronto..... ou ao menos era para estar... :-)
agora vamos ao script...
Crie um arquivo qualquer dentro do
/etc/rc.d/init.d (por exemplo
iptables.sh). Dê a seguinte permissão a este arquivo:
# chmod 700 iptables.sh
Edite o arquivo iptables.sh e adicione este script:
O bloco principal é:
Firebird
iptables -t nat -A PREROUTING -p tcp -s 0/0 -d $IP_EXTERNO --dport 3050 -j DNAT --to-destination $IP_FIREBIRD:3050
iptables -A FORWARD -p tcp -s $IP_FIREBIRD -d $IP_EXTERNO --dport 3050 -j ACCEPT
onde
-s 0/0 pode ser trocado por somente um IP, isso aumenta o nível
de segurança, ou seja, somente o IP informado terá acesso ao Firebird, isto
é útil quando por exemplo, se você tem uma aplicação web em um provedor e
necessita acessar seu dados no Firebird, assim somente libera o ip do seu
provedor.
No caso ficaria assim :
IP_LIBERADO="200.201.X.X"
iptables -t nat -A PREROUTING -p tcp -s $IP_LIBERADO -d $IP_EXTERNO --dport 3050 -j DNAT --to-destination $IP_FIREBIRD:3050
iptables -A FORWARD -p tcp -s $IP_FIREBIRD -d $IP_EXTERNO --dport 3050 -j ACCEPT
Execute o script criado (iptables.sh no nosso exemplo):
# ./iptables start
Teste
Utilizamos uma máquina fora da rede e conectamos na internet via dial-up,
usando o IBConsole criamos o servidor utilizando o IP de entrada da
Internet (IP_EXTERNO), O CL8 fará o redirecionamento para o micro que tem o
Firebird (192.168.0.5) dentro da rede interna ou DMZ. O micro com o Firebird
pode ser coloca em uma DMZ também.
Os logs da porta 3050 serão gerados dentro de
/var/log/messages.
Esperamos ter ajudado!
Críticas e melhorias são bem vindas.
Autores:
Luís Gustavo (
lgustavo@directnet.com.br)
Fábio R. Calegari (
fabio.linux@e-logicon.com.br)
26 de Maio de 2003