[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