Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Jackson Laskoski
Jackson Laskoski
Janeiro, 2012
Copyright © 2012 Jackson Laskoski
Todos os direitos reservados. Nenhuma parte deste guia pode ser reproduzida, armazenada em um sistema de recupera-
ção ou transmitida por qualquer forma ou por qualquer meio, sem a prévia autorização por escrito do autor, exceto no caso
de breves citações embutidas em artigos críticos ou revisões. Este guia é o resultado de uma compilação das experiências
técnicas e mercadológicas do próprio autor, além de tomar como base uma série de outras referências bibliográficas, men-
cionadas na seção “Principais Referências Bibliográficas”.
Todos os esforços foram realizados na preparação deste guia de estudos para garantir a precisão das informações apre-
sentadas. No entanto, a aplicação das informações contidas no decorrer deste texto, bem como, suas respectivas conse-
qüências e implicações são de responsabilidade única e exclusiva do leitor. O autor não será responsável por quaisquer
danos causados ou supostamente causados direta ou indiretamente por este guia.
O que é o pfSense?
O pfSense é um software livre, licenciado sob BSD license (a marca pfSense em si tem Copyright
para o BSD Permiter), baseado no sistema operacional FreeBSD e adaptado para assumir o papel de
um firewall e/ou roteador de redes. Além disso, ele possui atualmente dezenas de pacotes adicionais
que lhe permitem requisitar o posto de UTM (Unified Threat Management), já que podemos realizar
com o pfSense a imensa maioria das atividades que esperamos de sistemas com este título.
O projeto pfSense foi concebido em meados de setembro de 2004 por Chris Buechler e Ullrich
Scott. Chris foi um colaborador assíduo de códigos por muito tempo do projeto m0n0wall. O m0n0wall
tem basicamente as mesmas pretensões técnicas do pfSense, mas desde o seu surgimento até os
dias de hoje, é focado em appliances.
O compromisso do m0n0wall sempre foi o de ser um sistema contido em si e voltado para dispositivos
que pudessem rodá-lo diretamente da memória principal. Não é possível instalá-lo em um sistema de
arquivos comum em um disco rígido, por exemplo. Daí muitas funções desejáveis para sistemas mais
complexos (VPN, suporte a modems 3G, Autenticação de Usuários, Proxy, IDS, etc...) não podem ser
razoavelmente implementadas nele. Este foi o principal fator motivador para que Chris e Ullrich come-
çassem o projeto pfSense.
Sendo um projeto popular com mais de 1 milhão de downloads desde o seu início, a qualidade do pf-
Sense pode ser comprovada pelas inúmeras instalações que vão desde pequenas redes à grandes
corporações, universidades e redes governamentais onde a segurança e robustez são fundamentais.
1
O que mudou do pfSense 1.2.3 para a versão 2.0?
Durante vários anos o pfSense manteve como sua versão estável a 1.2.3. Estatísticas recentes dão
conta de que boa parte da base instalada do pfSense no mundo ainda roda esta versão em produção.
Foi um longo período de desenvolvimento/homologação de códigos e muito esforço do core team e da
comunidade pfSense em geral, mas em 2011 nós tivemos o lançamento da versão 2.0 final do pfSense
- que trouxe consigo um verdadeiro turbilhão de novidades.
Na prática o changelog é tão extenso, que ficaria mais simples citarmos o que não mudou de uma ver-
são pra outra - Tanto é verdade, que não é possível fazermos downgrade da versão 2.X para a
versão 1.2.3 ou anteriores. A lista completa com os novos recursos da série 2.X pode ser conferida
na íntegra através do endereço eletrônico:
http://doc.pfsense.org/index.php/2.0_New_Features_and_Changes.
Além dos novos recursos e a incorporação de pacotes novos ou nas suas versões mais recentes, o
pfSense corrigiu e aprimorou muito do seu código da série 1.2.X. Não obstante, agora é baseado na
versão 8.1 do FreeBSD, o que lhe deu uma compatibilidade de hardware e lhe garantiu uma robustez
muito maior do que seu antecessor (que é baseado no FreeBSD 7.2). Olhando para o futuro, a versão
2.1 que provavelmente será lançada entre 2012 e 2013 será totalmente baseada no recém lançado
FreeBSD 9.0.
2
Antes de Instalar o pfSense...
O pfSense é usado em quase todos os tipos de ambientes de redes que se possa imaginar. A
implantação mais comum do pfSense é como um firewall de perímetro, com uma conexão ligada à
Internet e uma com a rede interna. Ele suporta várias ligações com à Internet, bem como múltiplas
interfaces internas.
Compatibilidade de Hardware
Atualmente o pfSense 2.0 está disponível nas arquiteturas de i386 (32 bits) e amd64 (64 bits) para
uma instalação completa e incorporada. Se você não souber qual versão usar, então use i386. É a
arquitetura mais madura e bem testada, e irá funcionar em ambos os sistemas de 32-bit e 64-bit. Os
arquivos do Live CD são nomeados pfSense-2.0-RELEASE-arch.iso.gz onde arch é i386 ou amd64.
Você também pode obter o pfSense já incorporado à uma máquina virtual VMware, pronto para ser
startado (até o presente momento, apenas o pfSense 1.2.3 está disponível neste formato no site oficial
do projeto).
Para checar a lista de compatibilidade de drivers, visite o site oficial do projeto FreeBSD:
http://www.freebsd.org/releases/8.1R/hardware.html
Requisitos mínimos
Os requisitos mínimos que irá ser apresentado não são adequados para todos os ambientes de
implementação do pfSense.
Instalação Direta
• CPU – Pentium 100 Mhz
• RAM – 128 MB
3
• 1 GB para a instalação inicial no HD
Live CD
• Drive de CD-ROM
• Drive de USB Flash ou unidade de disquete para armazenar arquivos de configuração
Rendimento necessário:
Este rendimento necessário, está ligado a utilização da placa de rede, para que ela vai ser utilizada,
qual a capacidade de transferência de arquivos dentre outras necessidades.
• 20/10 Mbps - Nada menos que 266 MHz CPU
• 201-500 Mbps - O hardware do servidor com adaptadores de rede PCI-X ou PCI-e ou hardware
de novos desktops com adaptadores PCI-e de rede. Nada menos do que 2.0 GHz CPU
• 501 + Mbps - o hardware do servidor de classe com PCI-X ou adaptadores PCI-e de rede. Não
Inferiores a 3,0 GHz CPU
Por exemplo: Instalar/Rodar OpenVPN + Squid + SquidGuard + Captive Portal + Snort num setup de
hardware equivalente a configuração mínima (Pentium 100 com 128MB de memória RAM), certamente
não será viável.
4
Instalando o pfSense...
Depois de ter clicado em ''here on the mirrors'', você será direcionado para outra página, onde irá fazer
a escolha de um local geograficamente mais próximo a você. Logo após a seleção do local, aparecerá
um diretório com uma listagem dos arquivos para download do pfSense. Preferencialmente, baixe
arquivos com as extensões .iso, também há arquivos com extensões .md5, estes arquivos contém um
hash da ISO utilizado para verificar se o download foi finalizado com sucesso e está íntegro/confiável.
Para fazer a verificação da integridade do download .md5 finalizado, execute o seguinte comando no
terminal de qualquer distribuição Linux (os sistemas GNU Linux fornecem o aplicativo md5sum), por
exemplo:
Já nos sistemas Windows, podemos utilizar também o mesmo aplicativo disponibilizado para sistemas
Linux, o md5sum, temos que efetuar o download desse aplicativo e fazer a instalação. Finalizada a
instalação, seguimos para o Prompt de comando do Windows e executamos o seguinte comando:
>md5sum -b pfSense-2.0-RELEASE-i386.iso.gz
Para instalações embarcadas, baixe o arquivo com extensões .img.gz. Este arquivo está compactado
com formato Gzip, não precisa se preocupar com a descompactação, porque o processo de instalação
já toma conta deste recado.
Nota: O procedimento de gravação irá depender do sistema operacional e do software
disponível.
5
Instalando pelo CD
Após o download da imagem .iso e gravado em um CD, é hora de dar Boot para que o sistema
inicialize a partir do drive de CD, assim, damos início ao processo de instalação do sistema pfSense.
Feito o procedimento de resposta para configuração de VLANs, o próximo passo é atribuir as funções
de WAN, LAN e opcional para cada uma das placas de rede existentes no sistema. A partir da versão
2.0 o pfSense passa a admitir uma única interface de rede (o que não parece ser muito útil para um
firewall/router, claro).
Para a configuração de funções das interfaces de rede, primeiramente o sistema pede que
6
especifiquemos a placa de rede que está diretamente conectada a WAN com a seguinte frase: ''Enter
the WAN interface name or 'a' for auto-detection:'' (Digite o nome da interface WAN ou 'a' para auto-
detecção:).
Caso saiba qual placa de rede está ligada diretamente à WAN, você pode especificá-la usando uma
das descrições dispostas pelo próprio sistema como “le0”, “le1” e “le2” (a nomenclatura é baseada no
fabricante da interface de rede). A próxima configuração solicitada é a indicação da interface de rede
que está conectada à LAN com a seguinte frase: ''Enter the LAN interface name or 'a' for auto-
detection:'' (Digite o nome da interface LAN ou 'a' para auto-detecção:). Neste ponto, segue-se o
mesmo preceito utilizado para atribuir o link de dados à WAN, respeitando-se as especificidades do
link LAN, claro.
Quando você tem mais de duas placas de rede disponíveis no seu sistema, após você ter configurado
qual placa de rede vai responder pela WAN e a outra como LAN, irá aparecer uma terceira opção de
configuração para uma interface opcional, no nosso caso (máquina utilizada como base para
confecção deste documento) temos três placas de rede disponíveis no servidor, a única que restou
sem configuração foi a ''le2'', por isso, vou atribuir a essa placa de rede como a opcional.
Feito a configuração devida, o sistema irá mostra as seguintes frases de acordo com a imagem abaixo.
7
De acordo com a pergunta: ''Do you want to proceed [y|n]?'' (Você deseja continuar [sim|não]?),
verifique se a configuração esta da forma esperada, caso esteja, digite 'y' e pressione Enter, do
contrário digite 'n', pressione Enter e o processo de configuração irá voltar para o início (aqui você terá
a chance de repetir e acertar a atribuição dos links para as placas de rede).
Para iniciar a instalação do pfSense no Disco Rígido, escolha a opção: ''Install pfSense to hard drive,
etc.'' (Instale o pfSense no disco rígido, etc.) digitando o número “99” e pressionando Enter.
Podemos ver abaixo a próxima tela deste wizard:
8
Esta tela está relacionada a fazer ajustes do console, é aconselhável para a maioria dos casos que se
deixe as três primeiras opções como ''Default'' (Padrão). Se este for o seu caso, direcione a opção de
seleção com as setas do teclado até a opção ''Accept these Settings'' (Aceitar essas configurações).
Na próxima janela serão apresentadas várias opções de instalação. Caso tenha apenas um disco
rígido disponível em seu sistema e você não tenha nenhuma especificidade no seu ambiente
computacional, escolha a opção ''Quick/Easy Install'' (Instalação Rápida/Fácil), escolhendo essa
opção, o processo de instalação irá aceitar todas as opções de configuração como ''Default'' (Padrão),
uma caixa de diálogo para a confirmação deste tipo de instalação será apresentada, pressione OK
para continuar o processo.
Optando pelo processo de instalação quick/easy install, o processo só vai parar quando for pedir que
tipo de Kernel será instalado no sistema. Daqui em diante todo o processo é bastante automatizado
neste perfil de instalação.
9
Ao escolher e a opção ''Custom Install'', o primeiro passo é selecionar o disco rígido para que o
pfSense seja instalado. Se a comunicação entre o pfSense e a sua controladora de disco ocorrer
normalmente, todo(s) disco(s) rígido(s) conectado(s) ao computador/vm devem ser exibidos na
seqüência. Neste ponto, você deve selecionar a unidade que deseja instalar o sistema e pressionar
“Enter” para prosseguir com a instalação.
A próxima janela está relacionada à formatação do disco rígido escolhido na etapa anterior. Esta janela
faz a seguinte pergunta ''Would you like to format this disk?'' (Gostaria de formatar este disco?), caso
10
queira realmente formatar o disco selecione a opção ''Format this Disk'' (Formatar este disco) e
pressione “Enter”, caso não queira formatar por conter informações de sua autoria, selecione a opção
''Skip this step'' (Pule esta etapa).
Neste caso, fizemos a escolha da opção ''Format this Disk'' (Formatar este disco), para mostrarmos
como funciona. Quando pressionado “Enter”, seguimos para a próxima etapa, onde podemos
eventualmente fazer a escolha do tamanho da(s) partição(ões). Neste ponto, na maioria das vezes o
padrão estipulado pelo wizard de instalação atende a grande parte dos casos, mas pode ser
importante substituir esses valores para casos mais específicos. Feita a escolha da capacidade,
selecione ''Use this Geometry'' (Use esta Geometria) e pressione “Enter”.
11
Na próxima tela você poderá confirmar as suas configurações e, se tudo estiver de acordo, escolher a
opção ''Format ad0'' (Formatar ad0). Do contrário, você pode voltar atrás selecionando ''Return to
Select Disk'' (Retornar para seleção de disco).
A próxima etapa faz a seguinte pergunta ''Partition Disk?'' (Particionar o Disco?). Servidores que fazem
muito cachê HTTP, por exemplo e precisam do soft-updates ativado, exigem um particionamento
customizado. Você também pode querer manter o pfSense junto de outro sistema operacional (no
mesmo disco rígido). Estes são apenas 2 exemplos que lhe dariam indicação de efetuar o
particionamento manual de discos. Para tanto, basta selecionar ''Partition Disk'' (Particionar disco).
Para aceitar os padrões do wizard e prosseguir com a instalação sem customizar particionamento de
disco, selecione a opção ''Skip this step'' (Pule esta etapa).
12
A próxima tela está relacionada a instalação dos ''Bootblocks'' (Blocos de arranque), isto é o que
permitirá a inicialização do disco rígido. Por ''default'' (padrão) o ''Bootblocks'' já está selecionado para
o disco correto. Com relação a opção ''Packet Mode'' (Modo de pacote), você só irá ativar este modo,
caso o hardware de seu servidor seja atual, do contrário deixe-a desmarcada. Para confirmar a
instalação destes incrementos, selecione a opção ''Accept and Install BootBlocks'' (Aceitar e instalar
BootBlocks).
Na janela seguinte, faz-se necessário escolher a partição que vai receber o pfSense. Obviamente que
as opções relacionadas aqui, são o produto de um eventual particionamento manual. Se você não
montou nenhum esquema específico de particionamento, basta escolher a única partição que se
apresenta.
13
Perceba que próxima tela (''Select Subpartitions''), mesmo sem ter criado uma partição específica nas
etapas anteriores, o wizard sugere a adição de um espaço reservado somente para a swap. Esta é
uma característica típica e importante em sistema *NIX. Selecione a opção ''Accept and Create''
(Aceitar e criar).
Agora chegou a hora de escolher o tipo de Kernel que será utilizado em seu sistema. Pr imeiramente
precisamos saber do que se trata um Kernel. De forma rápida e simples, o Kernel controla todo o
hardware do computador, cabendo a ele as tarefas de permitir que todos os processos sejam
executados pela CPU (Unidade central de processamento). Caso o seu servidor tenha mais de uma
CPU, escolha a opção ''Symmetric multiprocessing kernel (more than one processor)'' (Kernel de
multiprocessamento simétrico (mais de um processador)), do contrário, escolha a opção ''Uniprocessor
kernel (one processor)'' ( Uniprocessador do kernel (um processador)). Feita a escolha, pressione
Enter para finalizar a instalação.
14
Finalizado, selecione a opção ''Reboot'' para reinicializar o sistema e pressione Enter para concluir.
15
Atualização do pfSense
Todo sysadmin sabe que manter os sistemas operacionais dos seus servidores sempre devidamente
atualizados, com todos os paths de correção e segurança aplicados, salvo raríssimas exceções, é
absolutamente importante para manter a disponibilidade de todos os serviços. Com o pfSense
isso naturalmente não é diferente – Portanto, procure rodar sempre a última versão estável da
ferramenta, mas tome nota de alguns cuidados essenciais para que o update do seu pfSense não se
transforme em uma dor de cabeça (principalmente se você estiver realizando upgrade da versão 1.2.X
para 2.X):
1. Faça sempre um backup completo do XML em produção (este tópico é abordado mais adiante
neste material);
2. Retire todos os acentos e caracteres especiais das descrições de regras e aliases (existe um
pacote no pfSense 1.2.3 chamado "Upgrade Tool" que ajuda a identificar estes pontos);
3. Desinstale todos os pacotes adicionais;
4. Execute o upgrade via console ou via interface web (GUI);
5. Finalmente faça a reinstalação dos pacotes adicionais que rodam no seu cenário (isso quase
sempre é automático, durante o primeiro boot).
16
Atualizando automática do sistema via GUI
O processo de atualização automática no pfSense é muito simples e completamente on-line, ou seja,
quando configurada, a própria ferramenta (via Dashboard) avisa o sysadmin que precisa ser atualizada
e durante o processo o pfSense se conecta ao repositório na Internet, efetua download da atualização
e a executa.
Na prática, você só precisa escolher a arquitetura em que o pfSense está rodando (i386 ou amd64) e
informar a URL do repositório (conforme tela abaixo). Depois é só clicar na aba “Auto Update” e
iniciar/acompanhar o processo.
Para realizar o update via console, você pode acessar fisicamente o servidor (estando em enfrente ao
teclado e mouse) ou fazendo uma conexão SSH. Neste ponto, basta digitar a opção “13” e seguir com
o processo (conforme tela abaixo).
17
18
Configurações Básicas
Uma vez que o pfSense está instalado em seu equipamento ou vm, você já pode efetuar o acesso
remotamente, a partir de outro micro da rede local, à sua interface administrativa web (GUI). O
pfSense vem com algumas configurações pré-definidas que facilitam este processo:
• Endereço IPv4 da interface LAN: 192.168.1.1/24
• Usuário Administrador: ''admin''
• Senha: ''pfsense''
É muito provável que este setup inicial de configuração de endereçamento IP não atenda ao vosso
cenário. Não raras vezes, a sua rede LAN está em outro escopo - o que lhe obrigará alterar o IP da
LAN. Não obstante, você também vai querer alterar/incluir um endereço IP na sua conexões WAN (se
for estático, claro), afinal o papel comum de um firewall/router é justamente ficar entre a sua Intranet e
sua Extranet. Para realizar estes procedimentos, acesse o console do sistema e escolha a opção 2
''Set interface(s) IP address'' (Conjunto de interface (s) endereço IP) depois informe o número da
respectiva interface que você quer configurar e digite o endereço de host IPv4 que será atribuído
(conforme tela abaixo).
Imediatamente após a configuração do endereço IP da interface LAN, o wizard vai lhe questionar se
você quer startar o serviço de DHCP Server pra sua rede interna. Aqui obviamente que a resposta
deve variar de acordo com o vosso cenário – mas se sua resposta for “y”, poderá configurar na
seqüência o comportamento do serviço em si (conforme tela abaixo):
19
Configurando a interface WAN via WebGUI
Para configurar a sua interface WAN, pelo ambiente administrativo web, basta seguir os passos
mencionados abaixo. Veja que no pfSense você pode ter quantas interfaces de rede (LAN, WAN,
DMZ) você quiser. A limitação está no hardware e na capacidade de gerenciamento do FreeBSB
(que neste caso é virtualmente infinito).
20
21
Uma vez conectado o cabo de rede, podemos verificar o status de conexão na porta WAN em Status |
Interfaces:
Para configurar a sua interface LAN, pelo ambiente administrativo web, basta seguir os passos
mencionados abaixo. Você pode ter seu pfSense ligado a vários segmentos diferentes da rede local.
Inclusive pode utilizá-lo para implementar VLANs no seu ambiente computacional (para tanto, basta
configurar as respectivas interfaces “Opt”).
22
23
Configurando a interface OPT via WebGUI
Aqui você vai configurar todas as interfaces de rede adicionais à WAN e LAN. Você pode utilizar este
recurso tanto para fazer com que seu pfSense se conecte a vários segmentos da sua rede local, como
para fazer com que ele tenha vários links de dados (WAN) ou DMZs.
24
Habilitando o Secure Shell (SSH)
O SSH é um protocolo para acesso remoto seguro e outros serviços contextualizados em redes
abertas. Ele provê uma camada de criptografia durante sua “estadia” no servidor, de modo que você
possa efetuar acesso ao console do pfSense com “menos” preocupações (já que “preocupações”
fazem parte do dia-a-dia de qualquer syadmin). Para usá-lo, você precisa habilitar.
25
Configurações Essenciais (DHCP + DNS)
O mapeamento estático permite que você “amarre” um endereço IP a um host específico, por
intermédio do endereço físico da interface de rede (MAC ADDRESS). Ele só se aplica para as
interfaces que utilizam o serviço de DHCP.
26
Especificando DNS Alternativo
Na maioria das vezes os servidores DNSs são fornecidos pelo seu provedor de aceso à Internet ou
operadora de telefone. Neste sentido, por default não é preciso definir nenhum DNS, porque é
atribuído pelo próprio pfSense se a opção Allow DNS server list to be overridden by DHCP/PPP
on WAN estiver marcada. Mas não é incomum os sysadmins preferirem informar manualmente os
servidores DNSs. Isso pode acontecer por vários motivos, mas o principal deles é utilizar servidores
mais rápidos e confiáveis.
27
Configurando o recurso de DNS Forwarder
O DNS Forwarder permite que o PfSense haja como um servidor de DNS para a sua rede, com
uma série de vantagens. Quando configurado, ele permite ao pfSense resolver as pesquisas DNS
usando o hostname obtido pelo serviço de DHCP ou através das informações inseridas
manualmente. O DNS Forwarder também pode encaminhar todas as pesquisas de DNS para um
determinado domínio especificado manualmente.
28
Configurando o recurso de DNS Dinâmico
Adicionalmente aos servidores pré-cadastrados, você também pode usar no pfSense qualquer
outro provedor de DNS dinâmico - Desde que este obedeça ao padrão RFC 2136. Para fazê-lo,
siga até Services | Dynamic DNS | na aba RFC 2136, em seguida preencha nos campos
apropriados os dados fornecidos pelo seu provedor de DNS dinâmico.
29
30
Configurações de Firewall
Um “alias”, como o próprio nome sugere, é um pseudônimo, um apelido textual para valores diversos.
Em outras palavras, podemos considerar os Aliases como uma forma de trabalharmos com variáveis
que podem referenciar, dependentemente do seu tipo, dezenas de IPs, URLs, portas de comunicação
ou redes inteiras. É um jeito inteligente e racional de armazenar dados que vamos usar para compor
nossas regras de firewall, já que reduz exponencialmente o tempo e a complexidade de atualização
destas rules.
Exemplificando:
Para demonstrarmos o poder do recurso do Alias, vamos usar um exemplo prático. Digamos que a
nossa organização tem um único telefone IP que deve se comunicar com o nosso servidor VoIP –
Portanto, precisamos criar uma regra que libere esta comunicação.
Exemplo desta regra sem a utilização de Aliases:
31
Um exemplo ainda melhor, usando Sub-Aliases para uma regra mais genérica (vários telefones IP):
O recurso de Sub-Aliases simplifica muito eventuais acréscimos, exclusões ou alterações nos IPs dos
telefones digitais que fazem parte da nossa regra:
Host Alias
Selecionando Host(s) como tipo do Alias, você pode criar uma “variável” que contenha um
ou mais endereços IPs.
32
Network Alias
Selecionando Network(s) como tipo do Alias, você pode criar uma “variável” que contenha
uma ou mais redes IP (na íntegra ou em intervalos):
Port Alias
Selecione Port(s) como tipo do Alias e informe um conjunto ou intervalo de portas de comunicação:
URL Alias
Selecionando URL como tipo do Alias você pode especificar uma ou mais URL (aqui você pode
informar uma URL completa). Selecionando URL Table como tipo do Alias, você poderá fornecer uma
URL (repositório) que contenha uma lista grande de outras URLs ou endereços IPs/sub-redes, que
serão baixadas e importadas para compor a variável em questão.
33
Usando o Alias:
Um Alias pode ser usado em qualquer lugar que você veja uma caixa de texto na cor vermelha.
Basta começar a digitar o nome do Alias que o pfSense vai exibir todos os Aliases
correspondentes ao texto informado.
Para importar uma lista de vários endereços IP, por exemplo, siga estes passos:
O Nat Port Forward é recurso extremamente importante e utilizado em cenários onde queremos
publicar na internet aplicações e servidores que existem na nossa rede privada. O conceito é bastante
simples e conhecido da maioria dos sysadmins vindos de outras plataformas operacionais. Na prática,
o que fazemos é realizar um SNAT, de modo que os pacotes com destino a uma determinada porta e,
sendo transportados por um determinado protocolo, que cheguem aos IPs públicos do pfSense,
sejam redirecionados para o equipamento que atenderá a conexão em nossa LAN. No exemplo
abaixo, vamos efetuar um Nat Port Forward de conexões HTTP para um servidor na nossa rede local
previamente configurado para atender este tipo requisição.
34
Neste nosso exemplo, o tráfego da conexão flui da seguinte forma:
Com destino:
HTTP)
Port Redirection:
Uma regra de NAT comum encaminha uma conexão para um destinatário na mesma porta lógica em
que foi solicitada (ou seja, Destination Port Range e Redirect target port se correspondem). No
entanto, não a nada que impeça você de redirecioná-la para uma porta diferente. Há basicamente
duas razões para você querer fazer isso:
35
Segurança por Obscuridade: Todo mundo sabe que a porta padrão HTTP é a TCP/80, mas
vamos supor que você tem um website “secreto” que você não quer que seja acessado
facilmente. Você pode encaminhar esta conexão para uma porta obscura (por exemplo:
54321). Neste exemplo, os internautas que quiserem acessar o seu site terão que digitar na
barra de endereços do navegador assim: http://www.exemplo.com:54321
NAT: 1:1
O NAT 1:1 pode ser muito útil quando queremos “fixar o mascaramento” de uma determinada
estação ou rede local na Internet. Em outras palavras, quando temos o pfSense respondendo por
mais de um IP público na sua WAN (Virtual IPs), podemos utilizar um destes endereços para que
sempre seja usado na função de NAT Outbound (NAT de saída) para uma determinada estação
ou servidor da nossa LAN. Um exemplo prático seria especificarmos que o servidor de e-mails
192.168.0.5/24 deve “sair para a internet”, sempre mascarado pelo IP 200.200.200.2 – Isso pode
facilitar a vida do syadmin quando do cadastro deste IP em recursos como SPF no serviço de
DNS, por exemplo.
NAT: Outbound
O NAT Outbound (NAT de saída) é o recurso co-irmão do NAT Port Forward (NAT de entrada). Ele
permite controlar como o tráfego que está deixando o pfSense será traduzido. Por padrão o pfSense
aplica NAT automaticamente, ou seja, todo o tráfego que chega por uma conexão do tipo LAN é
traduzido para o endereço IP WAN antes de sair.
Existem muitas razões técnicas que podem justificar a desativação do NAT Outbound automático. Você
pode querer que o tráfego interno seja encaminhado para a WAN sem tradução porque suas estações
já respondem por IPs públicos e roteáveis na Internet (aqui você geralmente teria um roteador da
operadora/provedor na borda). Outro motivo plausível é quando você quer forçar o encaminhamento de
pacotes que teriam destino na web, para uma estação da rede local.
Para desativar completamente o NAT Outbound Automático, siga até Firewall | NAT | Outbound e
clique em “Manual Outbound NAT rule generation (AON - Advanced Outbound NAT)”. Em seguida,
elimine todas as regras que eventualmente apareçam na tabela abaixo.
36
A partir de agora você pode adicionar manualmente regras de NAT Outbound. Basta clicar clicar no
botão “+” para da tabela Mappings para começar a configuração do seu mapa estático de tradução de
pacotes.
O pfSense é muito mais do que um simples Netfilter/Firewall, mas sem dúvida alguma é popular
justamente por este atributo. Isso acontece porque este foi o principal objetivo do projeto desde a sua
concepção. O conceito de Firewall está presente até mesmo no nome da solução. “pf” é uma
referência ao termo Packet Filter (filtro de pacotes).
O Netfilter implementado pelo pfSense e herdado do próprio FreeBSD é do tipo Statefull (Firewall de
Estado de Sessão), o que significa dizer que ele armazena o estado das conexões e filtra os pacotes
com base nesse estado. Existem basicamente três estados para uma determinada conexão:
NEW: Novas conexões;
ESTABLISHED: Conexões já estabelecidas;
RELATED: Conexões relacionadas a outras existentes.
Ao especificarmos as regras de firewall no pfSense, é muito importante lembrarmos que “Source Port
Range” é quase sempre definida como “any” (qualquer uma) já que em geral as conexões são
geradas por portas aleatórias. Lembre-se que ao solicitar um site, você está requisitado à porta 80 no
servidor web, mas é seu computador quem vai decidir que porta será aberta para receber a o
resultado da requisição.
A ordem em que as regras aparecem faz toda a diferença no comportamento do seu firewall. As
rules são interpretadas e “julgadas” sempre seqüencialmente, da primeira para a última regra.
Isso quer dizer que se as condições da regra 1 forem satisfeitas, o pfSense a executa em
detrimento das demais. Em função disso é comum colocarmos as regras mais “genéricas”
encabeçando o nosso “plano de regras”. Para reordenar uma regra, selecione a rule em questão
e então clique sob o botão (mão) na linha que você deseja que fique imediatamente abaixo da
regra movida.
37
Duplicando regras de firewall
Este é outro recurso extremamente popular no pfSense. Ele permite clonarmos uma regra
qualquer e alterarmos apenas os atributos que julgamos necessário. Na prática algo que nos
poupa tempo e possibilita reaproveitarmos parametrizações já executadas. Para duplicar uma
rule basta clicar sob o respectivo botão “+”. Você será direcionado a uma tela idêntica a de
criação de regra, porém com os dados clonados previamente preenchidos.
Recursos Avançados
A partir da versão 2.0, o pfSense incorporou uma série de recursos condicionais avançados que
podem ser usados nas regras de firrewall. Na tela de criação/edição/clonagem de rules, agora temos
a seção Advanced Features com uma gama de recursos que podem ser especificados como
critérios para a execução da regra. Se um recurso condicional avançado é especificado, a regra só
será executada se o mesmo for satisfeito. Dentre as opções podemos destacar:
Source OS: Esta opção irá comparar a fonte da conexão com sistema operacional do
dispositivo:
Diffserv Code Point: É um mecanismo que visa fornecer CoS (Class of Service) de tráfego de
rede. Ele força a priorização dos pacotes com base nos valores especificados:
Advanced Option: Permite aplicarmos filtros avançados sob pacotes IP (camada 3 do RM-OSI):
TCP Flags: Estes são bits de controle que indicam diversos estados de conexão ou
informações sobre como um pacote deve ser tratado. Também conhecido como “premissas de
conexão”.
No XMLPRC Sync: Impede que a regra seja sincronizada com todos os nós do CARP:
38
Schedule: Adiciona um agendamento previamente cadastrado à regra. Neste caso, a rule
será válida somente durante o período informado:
n/Out: Aqui podemos aplicar Limiters previamente cadastrados no sistema. Quando isso
acontece, o pfSense limita o consumo de banda, para a respectiva conexão/rule, nos valores
informados. In = Download / Out = Upload.
Os agendamentos ou schedules, como são conhecidos no pfSense, são aplicados basicamente nas
regras de firewall. Nós podemos criar vários esquemas com faixas de horários onde determinadas
rules são válidas ou se invalidam. Um exemplo prático é criarmos uma regra em Firewall | Rules |
LAN que permita o acesso ao facebook.com pelos funcionários da empresa somente durante o
horário de almoço. Fora disso, a regra não é válida e o default (que seria negar este tipo de acesso) é
aplicado.
39
40
Trabalhando com os Gateways
Um gateway é um “portal” que liga duas redes distintas. Em infraestruturas de redes simples, onde
temos uma única conexão WAN e um única LAN, raramente precisamos alterar ou adicionar
qualquer configuração de gateways no pfSense. No entanto, em redes mais complexas que
possuem mais de uma conexão WAN ou se quer tirar proveito de algumas funcionalidades
avançadas (rotas estáticas, por exemplo) é comum definirmos gateways personalizados.
Grupos de Gateway
O pfSense 2.0 trouxe um novo conceito ao trabalharmos com grupos de gateways. Este
41
recurso nos permite juntar 2 ou mais gateways em grupos que podem ser invocados em regras
do firewall (na seção Advanced features da tela de criação/edição de regras). Dentro de
cada grupo, podemos definir a prioridade (Tier) que cada gateway terá – quanto menor o Tier,
maior o peso/importância do gateway dentro daquele grupo. Este esquema permite
implementarmos facilmente mecanismos de LoadBalance e FailOver com nossos links de
dados, agregando alta disponibilidade e racionalidade na utilização dos mesmos pela rede
local.
As rotas estáticas podem ser utilizadas para acessarmos redes que não são acessíveis através do
default gateway (da WAN, por exemplo), mas podem ser alcançadas indiretamente através de uma
interface diferente (DMZ, por exemplo). Um case comum é uma grande empresa com vários
escritórios e usuários que usam uma impressora compartilhada. Aqui só precisamos criar uma rota
estática no pfSense para a rede interna (na qual a impressora está conectada) ao invés de
configurarmos uma rota estática diretamente em cada estação .
42
43
Configurações de VPN (Virtual Private Network)
O IPSEC é um conjunto de protocolos (RFC 2401-2409). Com o IPSec utilizamos dois meios, AH -
Autenticação de cabeçalho garantindo a integridade e o ESP - Encapsulating Security Payload
criptografando os dados. IPSEC está entre os mais efetivos métodos de se manter os dados seguros
durante a transmissão dos mesmos. Ele acaba prevenindo diversos tipos de ataque, entre eles
Spoofing Identity e o famoso Man-in-the-middle (alguém capturando dados utilizando Sniffer).
Por estas razões, as VPNs do tipo IPSec são vastamente utilizadas na interligação entre filiais ou
campus de empresas. Este tipo de VPN, onde se busca conectar 2 ou mais sítios geograficamente
distantes por meio da Internet pública, é conhecido também como VPN Site-to-Site.
44
45
Configurando o serviço VPN PPTP
O serviço permite que usuários externos estabeleçam uma conexão segura e criptografada usando o
protocolo PPTP. Os usuários irão se conectar a rede usando um cliente PPTP comum (presente em
qualquer sistema operacional desktop moderno). Uma vez autenticado, o usuário terá acesso a rede
como se estivesse conectado no próprio local físico. Este tipo de VPN é conhecida como Site-to-Client
e é voltada justamente para esta finalidade – conectar clientes móveis ou remotos à rede local de
forma segura (usuários de notebooks, smartphones, tablets, etc...).
46
Configurando o serviço OpenVPN
O OpenVPN é uma aplicação com versões disponíveis para os mais diversos sistemas operacionais –
tanto cliente quanto servidor – e provê uma forma simples de configurarmos uma VPN (principalmente
do tipo Site-to-Site). Outras vantagens são que ele pode ser usado por clientes conectando através de
uma conexão compartilhada via NAT (apenas o servidor precisa de portas abertas) e a boa tolerância
contra conexões ruins, ou ao uso de conexões com IP dinâmico. A VPN pode ser configurada para ser
restabelecida de forma automática em caso de interrupção na conexão, o que torna o link bastante
confiável.
Com relação à segurança, o OpenVPN pode ser configurado para utilizar chaves estáticas, que
oferecem um nível mediano de segurança, em troca de uma configuração mais simples, ou para utilizar
certificados X509, onde a configuração é um pouco mais complexa, mas, em compensação, a
segurança é muito maior (bem superior à da maioria das soluções comerciais). Isso permite que você
escolha a melhor relação entre praticidade e segurança de acordo com a situação.
47
48
49
50
51
Exportando Cliente OpenVPN
Há um pacote de instalação no pfSense 2.0 chamado OpenVPN Client Export Utility, que
simplifica o processo de exportação da chave e certificado OpenVPN para os clientes. Para
instalá-lo basta seguir os seguintes passos:
52
Traffic Shaper
No pfSense 2.0, o módulo de Traffic Shaper trás uma série de wizards e recursos para priorizarmos
ou limitarmos determinados tipos de pacotes da nossa rede que passem pelo firewall. É possível
criarmos filas que penalizam ou priorizam certos tipos de conexão em detrimento de outras, criarmos
limitadores de consumo de banda e até mesmo aplicarmos filtros impeditivos de camada 7 (Layer 7).
Em cenários onde temos VoIP, videomonitoramento, streaming de áudio e vídeo e outras aplicações
que geram bastante tráfego entre a LAN e a WAN, este tipo de recuso é muito utilizado.
No exemplo a seguir vamos usar o pfSense para priorizar os acessos externos do tipo MSRDP
(também conhecido como WTS) que entram em nossa rede. Assim podemos nos assegurar que
será possível administrar nossos servidores Windows remotamente mesmo quando o tráfego de
rede estiver muito intenso.
53
54
55
56
57
Backup/Restore das Configurações
3- O nome padrão do arquivo tem um formato semelhante ao listado abaixo, mas vo-
cê pode renomeá-lo como bem entender:
58
4- Para Restaurar um backup clique em Diagnostics: Backup/restore. A segunda op-
ção que se apresenta é Restore configuration. Na caixa de seleção Restore area você
pode selecionar uma coisa ou outra, porém vamos selecionar ALL que fará
a restauração de tudo se você selecionou essa mesma opção no passo 1. Feito isso,
clique no botão Selecionar arquivo…, selecione o arquivo salvo no passo 3 e, finalmen-
te, clique no botão Restore configuration.
59
Principais Referências Bibliográficas:
60