Você está na página 1de 62

Guia de Estudos

Curso pfSense Firewalling & Routing Administrator

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.

Curiosidade  Saiba mais sobre a escolha do nome “pfSense” aqui: http://blog.pfsense.org/?p=114

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).

Nota importante sobre compatibilidade de hardware: Antes de adquirir ou selecionar o hardware


que irá rodar o pfSense, não deixe de checar a compatibilidade em nível de drivers. O pfSense é
uma solução totalmente baseada no sistema operacional FreeBSD e mantém consigo todos os
drivers deste SO. A versão 1.2.3 do pfSense é baseada no FreeBSD 7.2 – Já a versão 2.0 baseia-
se no FreeBSD 8.1 e a versão 2.1 (que neste exato momento está em franco processo de
desenvolvimento), utilizará muito provavelmente a recém lançada versão 9.0 do FreeBSD.

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

Considerações no nível de dimensionamento de hardware


Com relação ao dimensionamento de hardware, há dois pontos em que devemos prestar muita
atenção:
• Rendimento necessário
• Recursos que serão utilizados

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

• 21-50 Mbps - Nada menos que 500 MHz CPU

• 51-200 Mbps - Nada menos do que 1.0 GHz 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

Recursos que serão utilizados:


Esta parte está ligada diretamente aos serviços e recursos que serão disponibilizados pelo pfSense
aos segmentos de rede em que está conectado. É comum encontramos ambientes complexos com
hardwares rodando pfSense sub-dimensionados. Nestes casos a performance e a coerência dos
serviços que rodam sob o pfSense serão negativamente afetados.

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...

Efetuando o download da imagem correta


Para um download correto, acesse o site http://www.pfsense.org e clique em Downloads. Após ter feita
essa etapa inicial, na página de Downloads clique em here on the mirrors (aqui nos espelhos) na
parte de New Installs, caso tenha dúvida sobre a mais nova versão do pfSense, clique em Versions
(Versões) para ver qual a mais nova versão do pfSense disponível, para um melhor desempenho.
Neste exato momento a versão 2.0.1 do pfSense é a mais recente.

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:

:~$ md5sum /<caminho>/pfSense-2.0-RELEASE-i386.iso.gz

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.

Atribuição de interfaces de rede


Após o Live CD ter inicializado depois da configuração de ordem do Boot, o sistema irá localizar e
apresentar a lista de interfaces de rede e seus respectivos endereços MAC (endereço físico de 48bits
gravado em fábrica em cada interface de rede), irá também mostrar o estado do link com uma das
descrições Up ou Down, caso um link seja detectado em alguma das interfaces, ele irá mostra o
estado da interface como “Up”, do contrário, irá mostrar “Down”. Antes da atribuição de funções das
placas de rede, o sistema faz a seguinte pergunta: ''Do you want to set up VLANs now [y|n]?'' (Você
deseja configurar VLANs agora [sim|não]?), nesta opção você digita a letra “n” para especificar que
não quer configurar VLANs agora e pressione Enter para confirmar, do contrário, digite ”y”.

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).

Instalando no Disco Rígido


Feito o processo de atribuição das interfaces de rede, vamos dar início ao processo de instalação do
pfSense. Finalizado todos os procedimentos citados acima, aparecerá a seguinte tela com tarefas
adicionais que podem ser realizadas de acordo com a imagem abaixo:

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).

Download do arquivo para atualização


Acesse a URL http://www.pfsense.org/mirror.php?section=updates e escolha um MIRROR
geograficamente mais próximo de você. Tal qual o processo de download da imagem ISO, você deve
selecionar o arquivo da versão condizente com o seu ambiente e propósitos. Embora não
obrigatório, é aconselhável que você execute as atualizações intermitentes do sistema. Por exemplo,
para atualizar o seu pfSense 1.2.3, primeiro faça o upgrade para a versão 2.0RC e só depois repita o
processo para a versão 2.0.1 (sempre lembrando das premissas elencadas logo acima). Os arquivos
para atualização do pfSense possuem a extensão .TGZ.

Atualizando o Firmware manualmente


Para atualização do sistema manualmente, siga para o menu ''System->'Firmware'' e clique na aba
''Manual Update'', na seção ''Invoke pfSense Manual Upgrade'' (Invocar atualização manual do
pfSense) clique em ''Enable firmware upload'' (Permitir o upload do firmware), em ''Firmware image
file:'' clique em ''enviar arquivo'', selecione o arquivo para atualização com a extensão .TGZ obtido
anteriormente e finalmente clique em ''Upgrade firmware''.

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.

Atualização do sistema via console


O processo de upgrade do pfSense via console se difere do mencionado anteriormente, somente
porque se dá através da shell texto do sistema. Na prática, os métodos e os conceitos são exatamente
iguais. Você pode executar a atualização via console tanto pelo método manual (onde você informa o
local onde está o arquivo TGZ que você baixou do repositório), quanto automático (onde você
especifica a URL do repositório).

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:

Configurando a interface LAN via WebGUI

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)

Configurando o Servidor DHCP


O pfSense pode exercer o papel de servidor DHCP para qualquer segmento de rede que esteja
conectado. Em redes pequenas ou com poucos recursos, pode ser útil integrar mais este serviço ao
pfSense – já guinando o seu trabalho para a concepção de um UTM e não mais um simples netfilter.
Em redes mais complexas ou que já tenham servidores DHCP, este recurso precisa ser avaliado.
Para efetuar a configuração do DHCP Server, é obrigatório que o seu pfSense esteja com IP fixo no
respectivo escopo.

O Exemplo abaixo aborda a configuração do servidor DHCP para a interface DMZ.

Criando um Servidor DHCP com Mapeamento Estático

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

O pfSense possui integração com os principais serviços de DNS Dynamic existentes na


Internet - gratuitos ou proprietários. Este recurso é muito utilizado em links de dados que não
possuem um IP público fixo (ADSL doméstica, por exemplo). Sempre que o endereço de IP da
interface muda, o pfSense automaticamente se conecta com o provedor de DNS dinâmico
configurado (usando as credenciais cadastradas) e atualiza todos os dados.

Especificando um serviço alternativo usando o RFC 2136

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

Trabalhando com Aliases

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:

Agora a mesma regra, usando 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.

Importando dados em lotes no Alias

Para importar uma lista de vários endereços IP, por exemplo, siga estes passos:

Criando NAT com regras de Port Forward

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:

 A conexão é gerada através da Internet (Interface: WAN)


 A partir de qualquer cliente (Source) em qualquer porta (Source Port Range)

Com destino:

 Nosso endereço de IP Público (Destination WAN address)


 Com um pedido de website (Protocol: TCP, Destination Port Range:

HTTP)

Será redirecionada para:

 Um computador em particular na nossa LAN (Redirect Target IP: Webserver1)


 Com a mesma solicitação (Protocol: TCP, Redirect Target Port: 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

 Um único endereço de IP público: Em ambientes menores com apenas um endereço


IP público, não é possível acessar duas máquinas da sua rede interna, a partir da
internet, através de uma conexão MS-RDP (TCP/3389). Neste exemplo você pode
definir portas lógicas altas e distintas, que deverão ser acionadas sempre que você
queira acessar um, ou outro computador. Ambos os servidores Windows estarão
rodando o ambiente WTS na porta padrão TCP/3389, e você encaminhará as conexões
entrantes para o “Server1” ou “Server2”, dependentemente da porta de origem:

Cliente  TCP/50000  pfSense  TCP/3389  Server1


Cliente  TCP/50001  pfSense  TCP/3389  Server2

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.

Criando regras de Firewall

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 das regras do Firewall

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”.

 State Type: Especifica um mecanismo de rastreamento especial sobre o estado da 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:

 Gateway: Aqui podemos especificar um gateway previamente configurado no nosso sistema.


Este recurso é ideal para quando queremos fixar a rota de saída de uma determinada conexão
ou aplicarmos LoadBalance/Failover (um grupo de gateways):

 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.

 Ackqueue/Queue: Adiciona a conexão/rule a uma fila de Traffic Shaper previamente


configurada.

 Layer7: Aplica um grupo de filtros de inspeção de camada 7 (camada de aplicação) à


conexão/rule em questão. Este grupo precisa estar configurado previamente no sistema.

Trabalhando com Agendamentos

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.

Trabalhando com rotas estáticas

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)

Criando VPN IPSec

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

1- Clique em Diagnostics: Backup/restore. A primeira opção que se apresenta


é Backup configuration. Na caixa de seleção Backup area você pode selecionar uma
coisa ou outra, porém vamos selecionar ALL que fará o backup de tudo, evidentemente.

2- Clique no botão Download Configuration e, na interface que se apresenta, selecione


a opção Download e clique em OK.

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:

[1] pfSense: The Definitive Guide: http://www.amazon.com/pfSense-The-Definitive-


Guide-ebook/dp/B004OYTMPC/ref=sr_1_2?ie=UTF8&qid=1327354322&sr=8-2

[2] pfSense 2 Cookbook: http://www.amazon.com/pfSense-2-Cookbook-Matt-


Williamson/dp/1849514860/ref=sr_1_3?ie=UTF8&qid=1327354322&sr=8-3

[3] http://www.pfsense.org/ – Acessado Janeiro/2012

[4] http://doc.pfsense.org – Acessado Janeiro/2012

[5] http://www.nextsense.com.br/blog/ - Acessado Janeiro/2012

[6] http://www.pfsense-br.org – Acessado Janeiro/2012

[7] http://forum.pfsense.org/index.php/board,12.0.html - Acessado Janeiro/2012

[8] http://doc.fug.com.br/handbook/ - Acessado Janeiro/2012

[9] http://www.hardware.com.br/ - Acessado Janeiro/2012

[10] http://www.jack.eti.br - Acessado Janeiro/2012

60