[FUG-BR] VPN & PF

Igor igorhmm em gmail.com
Domingo Outubro 21 17:21:47 BRST 2007


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


Mais detalhes sobre a lista de discussão freebsd