[FUG-BR] Problemas com o fwd
Rodrigo Maues Rocha
rmaues em argo.com.br
Sex Jan 21 10:29:24 BRST 2005
Lista,
Após ler e reler o how-to do Patrick
(http://www.freebsdbrasil.com.br/guia-ipfw.php) tenho algumas dúvidas.
Assim, na tentativa de resolver este meu problema, estou mandando
este e-amil e já pedindo desculpas pelo tamanho.
Primeiro, existe algum tutorial ou site que tenha um doc completo sobre
o ipfw, funcinalidade, sequência de leitura de regras, como as regras
são lidas .....?
Bom vamos às minhas questões:
1 - Não consigo logar na máquina pelo ssh se a regra diver(natd) estiver
ativa. Se eu retirar esta regra o login é normal.
2 - Proxy transparente em outra máquina. Seguinte, tenho esta estrutura
__________________________________
| |
[internet]----------[bsd] |
/\ |
/ \ [proxy_rede10]
/ \ |
[rede_172] [rede_10]-------+
Bom, em minha rede 10 tenho um proxy rodando em linux normalmente sem
problemas, funcionando como proxy transparente com duas placas, uma com
ip 10 e outra com ip válido. Todo meu tráfego da rede 10 com destino a
porta 80 é direcionado para o proxy que através da sua placa externa
serve a página ao cliente interno, tudo normal. Só a título de
informação hoje no lugar do bsd do esquema tem um linux.
O que quero fazer é a mesma coisa com o bsd, todo o tráfego da rede 10
com destino a porta 80 deve ser redirecionado para o
proxy(10.0.0.11:8080) e deve ser devolvido para o cliente, o proxy
continua sendo o mesmo, só mudando o linux da estória.
Notei, usando o tcpdump que quando utilizo o fwd antes do nat o meu
pacote chega a um endereço válido com o endereço de origem sendo da
minha rede, exemplo ip 10.0.0.57, isso chega direto no meu web server,
assim fica impossibilitado de responder, se eu colocar o fwd depois do
nat ai o pacote passa direto.
Já mantive contato com alguns colegas da lista por icq/msn e por tudo
que me falaram e tudo o que li sobre fwd me fazer acreditar que é um
processo simples mas que devo esta esbarrando em alguma besteira.
3 - Na rede 172 tenho outras redes remotas que acessam a internet
através do meu link, hoje funcionam normalmente. Quero fazer o mesmo da
rede_10, todo trafego vindo da rede 172 com destino a porta 80 deve ser
redirecionada para o proxy, assim como serviços de oracle que vem da
rede 172 devem ser direcionados para uma outra máquina dentro da rede
10(10.0.0.8:1521).
Acho que consegui explicar o meu problema, mas se ainda não foi possível
o entendimento completo, por favor envie um e-mail.
Em anexo segui o meu ipfe.rules atual de teste. Mais uma vez desculpa
pelo tamanho do e-mail e obrigado.
## Determinando o ip da interface xl0 e xl1
## Primeiro se determina uma varial para receber o valor do device (xl0
ou xl1)
## Em seguida usa-se o 'ifconfig' para atribuir um valor de ip para o device
## isto facilita o trabalho com dhcp, se necessario.
## Finalmente, para um melhor controle, eh mostrado o ip da interface.
## Definicao de interfaces
## Interface interna
INTDEV=xl0
INTIP=`ifconfig ${INTDEV} | grep -v inet6 | grep inet | awk '{print $2}'`
echo "INTDEV: ${INTDEV} com IP ${INTIP}"
## Interface Externa
EXTDEV=xl1
INTIP=`ifconfig ${EXTDEV} | grep -v inet6 | grep inet | awk '{print $2}'`
echo "EXTDEV: ${EXTDEV} com IP ${EXTIP}"
##--- O uso padrao do firewall sera com tudo bloqueado e somente a
liberacao de
# portas usadas.
#
# O uso de variaveis e importante para manutencao do script.
IPFW=/sbin/ipfw
##--- Definicao de variaveis de rede
#
REDE="10.0.0.0"
MASK="255.0.0.0"
#--- Identificacao das portas do X Window. Estas portas devem
# ser fechadas na interface extena para evitar problemas de
# seguranca.
XWIN="6000:6063"
#--- Portas normalmente utilizadas para traceroute
#
TRACEROUTE_SRC_PORTS="32769:65535"
TRACEROUTE_SRC_DEST="33434:33523"
#--- Portas utilizadas para conexao IRC
#
PORTAS_IRC="6667"
#--- Endereco do servidor de ntp. Este servico prove a atualizacao
# do horario para o servido de ntp interno.
# Eh preferivel que se direcione para o canonical name para evitar
# possiveis problemas de mudanca de endereco ip
#
CAIS="200.144.121.33"
HIWAY="200.246.53.5"
##--- Adcionando rotas
#
##--- Rota default de saida
/sbin/route add default 200.216.68.17
#--- Aqui serao apagadas as regras ja gravadas nas tabelas e
# configuras com as regras padroes de negacao. Este proce
# dimento e uma garantia de que as regras que serao usdas
# sao as escritas no scripts, limpando assim, qualquer re
# gra criada por outros.
#--- Apagando as regras
${IPFW} -f flush
#--- R e g r a SSH
# Esta regra permite o acesso atraves do ssh direcionado para as
interfaces interna e
# externa.
#
${IPFW} add 1 pass tcp from me 22 to any setup keep-state
${IPFW} add 2 pass tcp from any 22 to me setup keep-state
${IPFW} add 3 pass tcp from ${REDE}:${MASK} to any 22 setup keep-state
${IPFW} add 4 pass tcp from any 22 to ${REDE}:${MASK} setup keep-state
#--- Habilitando o mascaramento de saida dos pacotes para a
# Internet.
#--- Mascarando acesso a Internet
# O mascaramento da rede externa eh utilizado para esconder todos ip
da rede interna
# assim, ficando um unico ip sainda da rede.
#
#${IPFW} add 5 divert natd ip from any to any via ${EXTDEV}
${IPFW} add 5 divert natd ip from any to any
#${IPFW} add 6 fwd 10.0.0.11,8080 tcp from 10.0.0.57 to any 80
##--- Setar regras para o loopback
#
${IPFW} add 7 pass all from any to any via lo0
${IPFW} add 8 pass all from 127.0.0.1 to 127.0.0.1
${IPFW} add 9 deny log ip from any to 127.0.0.0/8 in via xl1
${IPFW} add 10 deny log ip from 127.0.0.0/8 to any out via xl1
##--- Libera trafego interno rede para a propria rede interna
#
${IPFW} add 20 pass all from ${REDE}:${MASK} to ${REDE}:${MASK}
##--- Check-State
#
${IPFW} add 30 check-state
##--- Libera conexoes com setup ok
#
${IPFW} add 40 pass tcp from any to any established
##--- Libera trafego TCP da rede interna pro mundo
#
${IPFW} add 50 pass tcp from ${REDE}:${MASK} to any setup
${IPFW} add 60 pass udp from ${REDE}:${MASK} to any keep-state
${IPFW} add 70 pass tcp from me to any setup
##--- Libera consulta DNS
#
${IPFW} add 80 pass udp from ${REDE}:${MASK} to any 53 keep-state
${IPFW} add 90 pass udp from any 53 to ${REDE}:${MASK} keep-state
${IPFW} add 100 pass udp from me to any 53 keep-state
${IPFW} add 110 pass udp from any 53 to me keep-state
##--- Liberando acesso HTTP e HTTPS
#
${IPFW} add 120 pass tcp from ${REDE}:${MASK} to any 80 keep-state
${IPFW} add 130 pass tcp from any 80 to ${REDE}:${MASK} keep-state
${IPFW} add 130 pass tcp from me 80 to any
${IPFW} add 130 pass tcp from any 80 to me
${IPFW} add 140 pass tcp from ${REDE}:${MASK} to any 443 keep-state
${IPFW} add 150 pass tcp from any 443 to ${REDE}:${MASK} keep-state
${IPFW} add 150 pass tcp from me 443 to any
${IPFW} add 150 pass tcp from any 443 to me
##--- Liberando acesso SMTP e POP
#
${IPFW} add 160 pass tcp from ${REDE}:${MASK} to any 25 keep-state
${IPFW} add 170 pass tcp from any 25 to ${REDE}:${MASK} keep-state
${IPFW} add 180 pass tcp from ${REDE}:${MASK} to any 110 keep-state
${IPFW} add 190 pass tcp from any 110 to ${REDE}:${MASK} keep-state
#--- R e g r a NTP
# Esta regra permite o acesso de nosso servidor interno de ntp ao
servidor
# mantido pelo rnp-am
# Deve-se manter uma atencao sobre o ip utilizado pelo servidor ntp
do rnp-am
# para que nao ocorram mudancas de ip e ai o script ficaria
desatualizado.
#
${IPFW} add 200 pass udp from ${REDE}:${MASK} to ${CAIS} 123 keep-state
${IPFW} add 210 pass udp from ${CAIS} 123 to ${REDE}:${MASK} keep-state
#--- R E G R A S CVSUP
# Regra que permite a conexao comservidores de cvsup para a atualizacao
# do sistema.
${IPFW} add 260 pass tcp from ${REDE}:${MASK} to any cvsup keep-state
${IPFW} add 270 pass tcp from any cvsup to ${REDE}:${MASK} keep-state
${IPFW} add 280 pass tcp from me to any cvsup keep-state
${IPFW} add 290 pass tcp from any cvsup to me keep-state
#-- R e g r a s FTP
# Regras que permitem o trafego de ftp entre a rede interna e a Internet
#
${IPFW} add 300 pass tcp from ${REDE}:${MASK} to any ftp keep-state
${IPFW} add 310 pass tcp from any ftp to ${REDE}:${MASK} keep-state
${IPFW} add 320 pass tcp from me to any ftp keep-state
${IPFW} add 330 pass tcp from any ftp to me keep-state
#--- R E G R A ICMP
# Regras que permitem que maquinas de dentro da rede possam pingar
# hosts externos.
${IPFW} add 340 pass icmp from ${REDE}:${MASK} to any icmptype 8 keep-state
${IPFW} add 350 pass icmp from any to ${REDE}:${MASK} icmptype 0 keep-state
${IPFW} add 360 pass icmp from me to any icmptype 8 keep-state
${IPFW} add 370 pass icmp from any to me icmptype 0 keep-state
##--- Nega restante das conexoes UDP
#
${IPFW} add 380 deny log udp from any to any
##--- restante das conexoes TCP
#
${IPFW} add 390 deny log tcp from any to any setup
##--- Bloqueando as demais conexoes
#
${IPFW} add 65535 deny any to any
--
--
+-------------------------------------+
| R o d r i g o M a u e s R o c h a |
+-------------------------------------+
| Contatos: |
| MSN : rmauesrocha em hotmail.com |
| ICQ : 3679875 |
| E-Mail : rmaues em argo.com.br |
+-------------------------------------+
| FreeBSD User 5.3p2 |
| Palm User |
+-------------------------------------+
| Pensamento: |
| "Sucesso e consequencia de esforco, |
| dedicacao e planejamento. Milagres |
| existem mas, sao construidos." |
+-------------------------------------+
_______________________________________________________________
Para enviar um novo email para a lista: freebsd em fug.com.br
Sair da Lista: http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
Mais detalhes sobre a lista de discussão freebsd