[FUG-BR] RES: VPN & PF
Rodrigo Roberto Barros
rodrigo.barros em foton.la
Segunda Outubro 22 11:28:15 BRST 2007
-----Mensagem original-----
De: freebsd-bounces em fug.com.br [mailto:freebsd-bounces em fug.com.br] Em nome de Igor
Enviada em: domingo, 21 de outubro de 2007 17:22
Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)
Assunto: [FUG-BR] VPN & PF
Oi pessoal,
Depois de passar o dia inteiro fazendo testes (infelizmente mal sucedidos) e
preciso da ajuda de voces...
Estou montando um firewall simples: pf, nat, squid e openvpn
O openvpn ja esta conectando e estou fazendo os testes com ele no momento,
mas minha dificuldade é tratar os pacotes dessa interface (tun0)
A unica forma que consegui deixar acessivel foi colocar um
set skip on tun0
Ai tudo funcionou perfeito, mas por consequencia, nao consegui bloquear nada
depois heheh :-)
Segue abaixo um pedaco do log, numa tentativa de conexao SSH sem o set skip
on tun0
000000 rule 1/0(match): block unkn(255) on tun0: 10.0.2.6.1562 > 10.0.1.1.22:
tcp 28 [bad hdr length 0 - too short, < 20]
3. 018822 rule 1/0(match): block unkn(255) on tun0: 10.0.2.6.1562 >
10.0.1.1.22: tcp 28 [bad hdr length 0 - too short, < 20]
6. 037354 rule 1/0(match): block unkn(255) on tun0: 10.0.2.6.1562 >
10.0.1.1.22: tcp 28 [bad hdr length 0 - too short, < 20]
E agora o meu pf.conf para analise:
#######################################################################
############## Definindo nome das interfaces e Gateways ###############
#######################################################################
int_if="re0" # interface da rede interna
ext_if="nfe0" # interface internet
lan_net="10.0.1.0/24" # rede interna
vpn_net="10.0.2.0/24" # rede vpn
ext_gw="192.168.1.1" # gateway da internet
# autoriza a rede interna acessar esses servicos externos
allow_tcp="{ ftp ftp-data ssh domain https }"
allow_udp="{ ftp ftp-data domain }"
# autoriza conexoes nesse servidor para rede externa e interna
services_ext_tcp="{ ssh http }"
services_int_tcp="{ ftp ssh http }"
# Diretoria
table <diretoria> { 192.168.1.59 }
# nao filtra na interface loopback
set skip on lo0
# faz scrub em pacotes que chegam
scrub in all
# SQUID - redireciona acessos http para squid (3128)
#rdr on $ext_if inet proto tcp from any to any port www -> 127.0.0.1 port
3128
# redireciona todos os pacotes enviados para o servidor atraves da vpn para
o ip interno
rdr on tun0 inet from any to 10.0.2.1 -> 10.0.1.1
# nat
#nat on $ext_if from !($ext_if) to any -> ($ext_if)
# define o politica padrao (bloqueia tudo)
block log all
# Antispoof para rede interna
antispoof log quick for $int_if inet
# vpn
set skip on tun0
block in quick proto tcp from 10.0.2.6 to 10.0.1.1 port 22
# aceita conexoes de computadores da diretoria (VPN)
pass in quick on $ext_if from <diretoria>
pass out quick on $ext_if from <diretoria>
# permite conexoes ssh na interface externa
pass in quick on $ext_if proto tcp from any \
to port ssh flags S/SA synproxy state
# libera os servicos para internet (services_ext)
pass in on $ext_if proto tcp from any to port $services_ext_tcp
# libera servicos para a rede interna (services_int)
pass in on $int_if proto tcp from any to port $services_int_tcp
# aceita trafego indo e vindo para a rede interna
pass in on $int_if from $lan_net to any
pass out on $int_if from any to $lan_net
# libera tcp, udp e icmp saindo pela interface externa (Internet)
# para portas definidas em allow_[tcp/udp]
# mantem o estado em udp e icmp e usa modulate state em tcp.
pass out on $ext_if proto tcp from any to port $allow_tcp modulate state
flags S/SA
pass out on $ext_if proto udp from any to port $allow_udp keep state
pass out on $ext_if proto icmp all keep state
-------------------------------------
Muito obrigado pela ajuda
Abracos
Igor
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Igor,
Cria uma interface para a tun0 tipo:
Vpn_if="tun0"
E depois aplica as regras como vc esta fazendo nas outras interfaces.
Há outra coisa, a opção "block log all" eu costumo colocar no final do Arquivo, não tenho muita experiência com PF. O pessoal da lista pode dizer qual o melhor local para colocar o bloqueio de tudo.
No resto do Firewall preciso de mais informações sobre o ambiente e o que vc quer liberar ou bloquear para dar uma opinião correta.
Bom, espero ter ajudado.
Atenciosamente.
Rodrigo Roberto Barros
Analista de Sistemas - NIE
rodrigo.barros em foton.la
Mais detalhes sobre a lista de discussão freebsd