Buscar

Conceitos FIREWALLs PF e IPFW

Prévia do material em texto

Principais características e funcionalidades dos firewalls 
Open Sources IPFW e PF 
Jhonatan M. de Souza
1
, Ricardo de Oliveira Cardoso
2
 
1
Acadêmico – Instituto Federal Catarinense (IFC) – Sombrio, SC – Brasil 
 
2
Acadêmico – Instituto Federal Catarinense (IFC) – Sombrio, SC – Brasil 
jhonatanmatosl@gmail.com, rcpinguim@gmail.com 
Abstract. The widespread use of computer networks and the emergence of 
various services and devices to facilitate the interaction between users 
connected to the network brought together its benefits many challenges, 
among them is to ensure the security of data traveling on the network. This 
article seeks to explain the concept and the use firewalls as security tools in 
networks, bringing to the attention of readers the key features and 
functionality of IPFW and PF, native open sources firewalls of FreeBSD and 
OpenBSD operating systems, icons in the security area. The reader beyond the 
concept will verify the functionality of these services. 
Resumo. O uso disseminado das redes de computadores bem como o 
surgimento de diversos serviços e dispositivos que visam facilitar a interação 
entre os usuários conectados à rede trouxe junto aos seus benefícios diversos 
desafios, entre eles está à garantia da segurança dos dados que trafegam na 
rede. Este artigo busca explanar o conceito e o uso firewalls como 
ferramentas de segurança em redes, trazendo ao conhecimento dos leitores as 
principais características e funcionalidades do IPFW e do PF, firewalls open 
sources (código aberto) nativos dos sistemas operacionais FreeBSD e 
OpenBSD, ícones na área de segurança. O leitor além do conceito irá 
verificar as funcionalidades destes serviços. 
1 Introdução 
Atualmente o numero de pessoas e organizações que estão inseridas no mundo da 
tecnologia da informação (TI) tem aumentado significativamente, sendo em alguns 
casos totalmente dependente dela. A tecnologia tem se tornado uma realidade presente 
na vida das pessoas bem como das empresas, sendo muitas vezes impossível trabalhar 
sem ela. 
 As redes de computadores estão cada vez mais presentes, conectando os espaços 
geográficos Sabe-se que a informação é um dos principais ativos das empresas, sendo 
que algumas têm a maior parte do seu capital investido em TI, portando considera-se 
vital para elas que se proteja e gerencie estas informações de maneira eficiente. 
 Como nos mostra Moraes (2011), existem diversas formas e diversas tecnologias 
que podem ser adotadas para garantir um ambiente de TI seguro. Elas podem ser regras 
 
a serem seguidas pelos administradores e usuários da rede até o uso de dispositivos e a 
implementação de serviços que visam dar segurança ao ambiente de TI. 
 Um dos recursos mais utilizados pelas empresas para prover segurança aos seus 
dados é o firewall. Segundo Moraes (2011) firewall pode ser definido como um sistema 
que atua como ponto único de defesa entre a rede privada e a rede publica. Ele pode ser 
implementado por um simples roteador que aplica um filtro de pacotes, ou até mesmo 
soluções bem mais complexas, que geralmente são um conjunto de recursos de 
hardware e software destinados a garantir a segurança das informações na rede. Uma 
pesquisa realizada pela Dell SonicWALL, empresa que atua no mercado de firewalls, 
realizou um levantamento com 827 empresas de até 300 funcionários no Brasil, 
identificou que 87% destas empresas utilizam um firewall e 34% destas utilizam 
ferramentas baseadas em open source. 
 Os firewalls open sources, conforme nos mostra Potter (2006) tem ganhado um 
espaço significativo no mercado, existem hoje uma gama de opções de firewalls 
disponíveis entre estes estão os firewalls nativos dos sistemas operacionais FreeBSD e 
OpenBSD, são estes uma grande plataforma de firewalls, entre eles estão o IPFW e o 
PF, que serão abordados neste artigo. 
 Neste contexto este artigo objetiva explanar de forma breve o conceito de 
firewall através de bibliografias sobre o assunto e apresentar as ferramentas IPFW e PF, 
mostrando também com base em pesquisas bibliográficas, algumas de suas 
funcionalidades e aplicabilidade. Desta forma este artigo pode ser um passo 
significativo para aqueles que pretendem trabalhar bem como iniciar um estudo sobre 
estas ferramentas, que além de serem ótimas ferramentas de segurança que vem 
ganhando grande destaque no mercado, são softwares livres e de código aberto. 
2 Referencial Teórico 
Nesta seção, são apresentados os referenciais teóricos dos assuntos abordados neste 
trabalho. 
2.1 Segurança da informação 
A segurança da informação pode ser vista como a proteção de dados ou informações que 
possuam valores, tanto para pessoas comuns como para empresas. Para Moraes (2011), 
segurança de computadores é prevenir ataques com objetivos definidos através de 
acessos não autorizados ou usos não autorizados de computadores e redes. 
 Moraes (2011) mostra que existem diversas tecnologias, soluções e dispositivos 
que permitem a partir do conhecimento adequado e da aplicabilidade correta garantir um 
ambiente seguro, entre estas está o uso de firewall que permite fazer um controle de 
acesso a dados na rede. 
 Uma das maneiras de melhorar a eficácia da segurança da rede é definir uma 
política de segurança, a qual de acordo com Nascimento e Tavares (2012) consiste em 
um conjunto formal de regras que devem ser seguidas pelos utilizadores dos recursos de 
uma organização. 
Os firewalls são segundo Kurose (2010), um conjunto de recursos que podem 
conter hardware e software que criam um ponto único de acesso a rede interna de uma 
 
determinada organização. A partir deste é possível filtrar os dados que saem e que 
entram nesta rede, afim de manter esta segura. 
2.2 Firewall 
Firewall consiste em um conjunto de componentes agrupados de forma a garantir certos 
requisitos de segurança. Determinadas arquiteturas recebem denominações especiais e 
uma infinidade de variantes podem ser obtidas a partir destas. (SPOHN, 1997). 
 O firewall pode usar regras para não somente bloquear portas individuais e 
protocolos como também para restringir o número de conexões simultâneas para 
computadores específicos, roteando o tráfego por meio de gateways predefinidos 
(SCHÜRMANN, 2012). Conforme nos mostra Kurose (2010), um firewall isola a rede 
interne de uma determinada organização da rede externa, geralmente a internet, como 
esta ilustrado na imagem 1. 
Figura 1:Firewall posicionado entre a rede interna e a externa. 
 
Fonte: jscape.com (2014). 
O firewall permite ao administrador de rede controlar o acesso entre o mundo 
externo e os recursos da rede que administra. Kurose (2010) ao definir firewall afirma 
que estes podem ser classificados em três categorias: filtros de pacote tradicionais 
(stateless), filtros de estado (stateful) e gateways de aplicação, abordaremos de forma 
breve a seguir apenas os firewalls do tipo stateless e stateful por serem de maior 
relevância para este artigo. 
a) O modo de filtragem stateless analisa cada pacote roteado pelo firewall como 
pacotes individuais, sem nenhuma associação com qualquer outro tráfego que também 
estiver passando, ele analisa apenas a camada de enlace e de rede do TCP. Esse tipo de 
filtragem é o mais comum e mais fácil de implementar. 
b) O modo de filtragem statefull toma decisões baseada em outras decisões ou 
pacotes. Eles rastreiam conexões TCP e usam esse conhecimento para tomar suas 
decisões de filtragem. A verificação dos pacotes engloba as camadas de enlace, rede, e 
pode englobar a camada de transporte do TCP. 
 
 
2.3 FreeBSD 
Segundo Potter (2006), os firewalls open-source tem se tornadocada vez mais 
concorrente dos comerciais, graças ao trabalho de muitos desenvolvedores eles estão se 
tornando mais robustos e estáveis, adequando-se a uma gama mais ampla de situações e 
a ambientes mais complexos. O FreeBSD conforme nos afirma Freebsd.org (2014) é 
conhecido como um dos mais robustos e seguros sistemas operacionais (SOs) da 
computação moderna. 
Segundo Freebsd.org (2014), o FreeBSD é usado no coração da Internet, toda a 
infra-estrutura DNS F-ROOT, na raiz do sistema de resolução de nomes é sustentada por 
FreeBSD, que também é a base dos maiores backbones acadêmicos e governamentais. 
Freebsd.org (2014) relata ainda que este SO é desenvolvido por centenas de engenheiros 
de alta estirpe, incluindo mestres e doutores em Ciências Computacionais. Ele é uma 
evolução natural do BSD Unix, sistema criado na Universidade de Berkeley que é 
responsável por todas as maiores tecnologias criadas e utilizadas na Internet, desde o 
primeiro servidor de correio eletrônico aos protocolos TCP/IP, DNS, entre outros. 
O BSD Unix é ainda pioneiro em software livre, foi o primeiro sistema a 
oferecer toda sua base tecnológica sob uma licença livre, a igualmente pioneira Licença 
BSD, que inclusive é a licença sob qual o FreeBSD se aplica. O FreeBSD conta hoje 
com todos os desenvolvedores BSD originais ativos e é o sistema Open Source mais 
organizado do mundo. 
 
2.4 Firewall IPFW 
Entre outros firewalls existentes no mundo do open-source está o IPFW (Internet 
Protocol Firewall) um firewall nativo do sistema operacional FreeBSD. Segundo Potter 
(2006) enquanto o seu “primo” OpenBSD pode não ser adequado para maiores 
instalações em uma escala que exija avançados recursos de hardware e exércitos 
maiores para lidar com a carga, o FreeBSD centra-se na estabilidade e desempenho o 
que o torna uma opção melhor para maior dimensionar instalações de firewall que o 
OpenBSD, por ter um bom desempenho, com poucos recursos de hardware . Potter 
(2006) afirma ainda que a partir desta perspectiva de firewall, o FreeBSD oferece uma 
variedade de opções incluindo o seu firewall nativo o IPFW, o qual é descrito neste 
trabalho. No entanto, ambos, o PF e o CARP, firewalls estes nativos do OpenBSD tem 
sido portados para o FreeBSD e são nele executados com baixos recursos de hardware. 
Conforme Freebsd.org (2014) a forma lógica como o IPFW trabalha suas regras 
é parecida com a adotada em muitos outros filtros de pacotes (Packet Filters), com 
exceção do IPFilter, que opera com um padrão pra tratar as regras que é menos eficiente 
e requer bem mais cuidado na hora de ajustar o firewall. Este é um firewall por filtragem 
de pacotes, o que significa que ele atua monitorando pacote-a-pacote todas as conexões, 
e a partir da série 4.0 do FreeBSD o IPFW também pode gerenciar uma filtragem por 
estado (stateful) de conexões.Esse comportamento é sempre transparente pros usuários, 
ou seja, ninguém vai notar que existe um firewall presente, até que um evento 
aguardado seja bloqueado. 
O IPFW suporta tanto o IP versão quatro quanto a versão seis. Ele é composto de 
duas partes principais: um processador de filtro de pacotes no nível do kernel e um 
 
utilitário de espaço de usuário para controlar a funcionalidade do firewall. O IPFW 
possui recurso de log, NAT, e o dummynet um modelador de tráfego que prove a 
capacidade de controle de tráfego e a simulação de diferentes tipos de conexões de rede. 
A função NAT precisa ser ativada no Kernel do freebsd, ou seja não vem por padrão 
habilitada, este artigo não ira abordar esta função. 
O IPFW está incluído na base do FreeBSD, o que significa que um kernel 
personalizado não é necessário, para permitir o funcionamento do IPFW, é necessária 
apenas a ativação e configuração das regras do mesmo. Ele fornece um conjunto de 
regras de amostra em /etc/rc.firewall que define vários tipos de firewalls, configurados 
para cenários comuns a fim de ajudar usuários que estejam iniciando no IPFW, gerando 
para eles de um conjunto de regras adequadas para diversas situações. Fornece também 
uma poderosa sintaxe para que os usuários avançados possam criar conjuntos de regras 
personalizadas que atendam aos requisitos de segurança de um determinado 
ambiente(freebsd.org, 2014). 
A seguir será visto de maneira geral conforme Freebsd.org (2014), as sintaxes 
das regras do IPFW, como ativar o firewall e alguns conjuntos de regras que poderão ser 
usadas para cenários comuns de configuração. 
a) Ativacão do IPFW 
Para ativar o IPFW no sistema, é necessário adicionar a seguinte entrada no 
arquivo rc.conf que encontra-se em /etc/rc.conf: 
 firewall_enable = "YES" 
Para usar um dos tipos de firewall padrão fornecidos pelo FreeBSD, é preciso 
adicionar outra linha que especifica o tipo, os tipos de firewall são os encontrados no 
quadro 1 a seguir: 
Quadro 1: Tipos de firewall padrão do IPFW 
Open Passa todo o tráfego. 
Cliente Protege somente esta máquina. 
Simple Protege toda a rede. 
Closed Totalmente desativa o tráfego IP, exceto para a interface 
loopback. 
Wokstation Protege somente esta máquina usando as regras de stateful. 
Unknown Desativa o carregamento de regras do firewall. 
Filename Caminho completo do arquivo que contém o conjunto de 
regras do firewall. 
Fonte: Adaptado de FreeBSD.org(2014) 
 Para utilizar um destes tipos adiciona-se ao final do arquivo rc.conf a seguinte 
linha que especifica a escolha: 
 
 firewall_type = "open" 
 Se firewall_type esta definido para cliente ou simple, é necessário modificar as 
regras padrões encontradas em /etc/rc.firewall a fim de ajustar a configuração do 
sistema. 
 Como visto no quadro acima o tipo filename é utilizado para carregar um 
conjunto de regras personalizadas. Contudo conforme Freebsd.org (2014) existe uma 
forma alternativa para carregar um conjunto de regras personalizadas, basta definir o 
firewall_script uma variável que indica o caminho absoluto de um script executável que 
inclui comandos IPFW, no exemplo utilizado neste artigo adota-se que o firewall_script 
está em /etc/ipfw.rules, e ficaria assim a linha a ser acrescentada em rc.conf: 
 firewall_script = “/etc/ipfw.rules” 
 O IPFW possui também um registro, o qual registra os logs por tentativa de 
conexão, para ativar este recurso é necessário adicionar a seguinte linha no arquivo 
rc.conf: 
 Firewall_logging = “YES” 
 Neste caso o IPFW estará registrando o numero de tentativas de conexão, porém 
não há em rc.conf uma variável para definir os limites de registros. Para limitar o 
número de vezes que uma regra é registrada por tentativa de conexão, é necessário 
especificar o numero, adicionando no arquivo /etc/sysctl.conf a seguinte linha: 
 net.inet.ip.fw.verbose_limit = 5 
 Depois de serem feitas as alterações necessárias, pode-se iniciar o firewall. 
Também é necessário ativar os limites de registros citado acima, a seguir seguem as 
maneiras de ativar o IPFW e serviço de log: 
 # service ipfw start 
 # sysctl net.inet.ip.fw.verbose_limit= 5 
Na próxima seção estará descrita a sintaxe para se criar regras no IPFW. 
b) Sintaxe de Regra 
 O IPFW utiliza uma abordagem top-down, ou seja quando um pacote entra no 
firewall, ele é é comparado com a primeira regra no conjunto de regras e progride uma 
regra de cada vez, movendo-se de cima para baixo em sequência. Sendo assim quando o 
pacote condiz com os parâmetros de seleção de uma regra, a regra é executada e a busca 
do conjunto de regras termina para esse pacote. Se o pacote não corresponder a qualquer 
uma das regras, ele é pego pela regra padrão de número IPFW 65535, que nega todos os 
pacotes e silenciosamente descarta-os. No entanto, se o pacotecorresponde a uma regra 
que contém os count, skipto, ou palavras-chave, a busca continua. 
 Ao criar uma regra de IPFW algumas palavras-chave são obrigatórias, enquanto 
outras palavras-chave são opcionais. As palavras mostradas em letras maiúsculas 
representam uma variável e as palavras mostradas em letras minúsculas deve preceder a 
variável que o segue. O símbolo “#” é usado para marcar o início de um comentário e 
 
pode aparecer no final de uma regra ou em sua própria linha, as linhas em branco são 
ignoradas. A seguir está apresentada a ordem das palavras chaves na criação das regras. 
 CMD RULE_NUMBER set SET_NUMBER ACTION log LOG_AMOUNT 
PROTO from SRC SRC_PORT to DST DST_PORT OPTIONS 
 Para melhor compreensão a seguir será dada uma visão geral dessas palavras-
chave e as suas opções. Esta lista não contém todas as opções possíveis por serem elas 
muitas. 
 CMD - Toda regra deve começar com ipfw add . 
 RULE_NUMBER - Cada regra está associado com um número de 1 a 65534. O 
número é usado para indicar o fim do processamento de regras. Regras múltiplas 
podem ter o mesmo número, caso em que eles são aplicados de acordo com a 
ordem na qual eles foram adicionados. 
 Set_number - Cada regra está associado com um número definido de 0 a 31 . Os 
conjuntos podem ser desativados individualmente ou habilitado, tornando o 
processo mais prático e rápido ao adicionar ou excluir um conjunto de regras. Se 
um set_number não for especificado, será definido como 0 . 
 AÇÃO - Uma regra pode ser associada com uma das seguintes ações. A ação 
especificada será executada quando o pacote corresponde ao critério de seleção 
da regra. allow | accept | pass | permit : essas palavras-chave são equivalentes e 
permitir que os pacotes que correspondam à regra. 
check-state : verifica o pacote contra a tabela de estado dinâmico. Se for 
encontrada uma correspondência, executa a ação associada com a regra que 
gerou essa regra dinâmica, caso contrário, passar para a próxima regra. Um 
check-state regra não tem critério de seleção. Se nenhum check-state regra está 
presente no conjunto de regras, a tabela dinâmica regras é verificada no primeiro 
keep-state ou limit regra. 
count : atualiza contadores para todos os pacotes que correspondam à regra. A 
busca continua com a próxima regra. 
deny | drop : ou palavra silenciosamente descarta pacotes que correspondem a 
esta regra. 
 LOG_AMOUNT - Quando um pacote corresponde a uma regra com o log de 
palavras-chave, uma mensagem será registrada para o syslogd com um nome da 
unidade de SECURITY . O registro só ocorre se o número de pacotes registrados 
para essa regra específica não exceder um LOG_AMOUNT especificado. Se não 
for especificado LOG_AMOUNT, o limite é tomado a partir do valor de 
net.inet.ip.fw.verbose_limit . Um valor de zero remove o limite de registro. Uma 
vez que o limite é atingido, o registro pode ser reativado, limpando o balcão de 
registro ou o contador de pacotes para aquela regra, usando #ipfw reset log. 
 PROTO - Este valor opcional pode ser utilizado para especificar qualquer nome 
de protocolo ou número encontrado em /etc/protocols. 
 
 SRC - A from de palavras-chave deve ser seguida pelo endereço de origem ou 
uma palavra-chave que representa o endereço de origem. Um endereço pode ser 
representado por any me (qualquer endereço configurado em uma interface neste 
sistema), me6, (qualquer endereço IPv6 configurado em uma interface neste 
sistema), ou table , seguido do número de uma tabela de consulta que contém 
uma lista de endereços. Ao especificar um endereço IP, que pode ser 
opcionalmente seguido por sua máscara de CIDR ou máscara de sub-rede. Por 
exemplo, 1.2.3.4/25 ou 1.2.3.4:255.255.255.128 . 
 Src_port - Uma porta de origem opcional pode ser especificado utilizando o 
número da porta ou nome do /etc/services. 
 DST - O to palavra-chave deve ser seguida pelo endereço de destino ou uma 
palavra-chave que representa o endereço de destino. As mesmas palavras-chave 
e endereços descritos na seção SRC pode ser usado para descrever o destino. 
 Dst_port - Uma porta de destino opcional pode ser especificado utilizando o 
número da porta ou nome do /etc/services . 
 OPÇÕES - Várias palavras-chave podem seguir a origem e o destino. Como o 
nome sugere, as opções são opcionais. Opções comumente usados incluem in ou 
out , que especificam a direção do fluxo de pacotes, icmptypes seguido pelo tipo 
de mensagem ICMP, e keep-state. 
 Para melhor compreensão será descritas a seguir alguns comandos básicos do 
IPFW e a elaboração de algumas regras simples de se executar e compreender. Antes da 
apresentação dos modelos de regras, veremos como fazer a listagem das regras já ativas 
no firewall. A maneira mais simples de listar as regras ativas é através do seguinte 
comando: 
 # ipfw list 
 Com este comando serão listadas todas as regras ativas, seguindo a ordem dos 
números, como pode ser visto na figura 2. 
Figura 2: Saída do comando ipfw list. 
 
Fonte: Conteudoopensource.com (2014). 
 É possível ainda listar a data e a hora da ultima vez que um pacote correspondeu 
a uma regra, basta utilizar o comando: 
 # ipfw -t list 
O resultado deste comando pode ser visto na figura 3. 
 
Figura 3: Saída do comando ipfw -t list. 
 
Fonte: Conteudoopensource.com (2014). 
 Por fim, podemos listar o número de vezes que um pacote passou (ou foi 
bloqueado) por uma regra, e o número de bytes que esse tráfego gerou, utiliza-se o 
seguinte comando: 
 # ipfw -a list ou # ipfw show 
 Com estes comandos já é possível ter algum controle sobre o trafego na rede. De 
maneira geral, a sintaxe mais simples do IPFW é: 
 <comando> [<número da regra>] <ação> <protocolo> from <origem> to 
<destino> 
 Com base nesta sintaxe podemos criar as mais diversas regras, a fim de garantir 
a segurança da rede, a seguir podem ser vistos alguns exemplos, eles estão organizados 
da seguinte maneira, a descrição e abaixo o comando: 
### Liberar udp da rede 192.168.0.0/24 para a rede 192.168.1.0/24 
add 00100 allow udp from 192.168.0.0/24 to 192.168.1.0/24 in 
### Regra para o INPUT do trafego SSH 
add 00200 allow tcp from any to 192.168.1.1/32 22 in 
### Bloquear todos os pacotes vindo de qualquer lugar para qualquer lugar e logar os 
mesmo 
add 64534 deny log all from any to any 
2.5 OpenBSD 
 Segundo Oliveira Junior (2014), o openbsd é um sistema operacional gratuito 
(código-fonte e binários baseados na licença BSD), multiplataforma, multiusuário e 
baseado no UNIX. Seus pontos fortes são a consistência, segurança, padronização e 
portabilidade. Para garantir a segurança, o código fonte do OPENBSD é extensivamente 
auditado por profissionais de segurança, e sua criptografia implementada no próprio 
sistema operacional. Tudo no OpenBSD gira em torno de criptografia, ou seja, seu 
conceito está baseado que a segurança não é um produto, mas sim um processo. 
2.6 Firewall PF 
 Diante de tanta obsessão por segurança, não poderia ficar de fora no sistema 
operacional OpenBSD um firewall de tamanha proporção em recursos de segurança de 
rede. Contudo o firewall PF é o responsável pela filtragem de pacotes, que é o bloqueio 
ou liberação de maneira seletiva da passagem de pacotes de dados, conforme eles 
atravessam uma interface de rede. 
 O critério que o PF usa quando inspeciona pacotes é baseado na Camada 3 (IPv4 
e IPv6) e na Camada 4 (TCP, UDP, ICMP e ICMPv6). Os critérios mais usados são os 
 
endereços de origem e destino, porta de origem e destino, e protocolo. (OPENBSD, 
2014). No filtro de pacotes existeuma lista de regras de filtragem aplicadas para cada 
pacote que trafega pelo filtro. Esta lista de regras é elaborada segundo a politica de 
segurança adotada, onde é estabelecido o que pode e o que não pode passar pelo filtro 
(SPOHN, 1997). Cada sistema firewall possui seu próprio método de configuração seja 
por meio da interface gráfica ou por linha de comando. 
 No caso do PF suas configurações de ativação e desativação devem ser feitas no 
arquivo /etc/rc.conf.local do sistema operacional openbsd, alterando a linha pf=NO para 
pf=yes. De acordo com o site oficial do projeto o PF lê sua configuração de regras do 
arquivo /etc/pf.conf na hora da inicialização. Embora o arquivo /etc/pf.conf seja o 
arquivo padrão ele é apenas um arquivo de texto carregado e interpretado pelo pfctl e 
inserido no PF. (OPENBSD, 2014) 
 O comando pfctl serve para interpretar e gerenciar as regras do arquivo 
/etc/pf.conf, este comando por sua vez pode ser utilizado para testar as configurações 
antes que elas sejam carregadas na memória. No quadro 2 é possível observar alguns 
comandos utilizados pelo pfctl. 
Quadro 2: Comandos pfctl. 
pfctl –e Comando para ativar o PF 
pfctl –d Comando para desativar o PF 
Pfctl -f /etc/pf.conf Comando para carregar as regras do arquivo padrão. 
Fonte: Adaptado de OpenBSD (2014). 
 
 Além das configurações existentes no arquivo /etc/pf.conf, é necessário ter em 
mente a metodologia que segue-se para uma configuração de sucesso. No quadro 3 é 
possível observar as divisões que o arquivo pf.conf possui. O arquivo pf.conf possui 5 
partes: 
Quadro 3: Partes do arquivo pf.conf 
Macros Variáveis definidas pelo usuário, que podem armazenar endereços IP, nomes de 
interfaces, etc. 
Tabelas Uma estrutura usada para armazenar listas de endereços IP. 
Opções Várias opções de controle do funcionamento do PF. 
Enfileiramento Fornece o controle de largura de banda e a priorização de pacotes. 
Regras de 
Filtragem 
Permite a filtragem seletiva ou bloqueio de pacotes conforme eles passam pelas 
interfaces. Regras de filtragem podem ter parâmetros para especificar Tradução de 
Endereço de Rede: (NAT) e o redirecionamento de pacotes 
Fonte: Adaptado de OpenBSD (2014). 
2.6.1 Funcionamento 
 Diante de diversas situações que a implementação de um firewall pode assumir, 
nós autores decidimos adaptar um exemplo de uma pequena rede de computadores que 
 
consta no site oficial do projeto PF, afim de tornar o entendimento mais simplista 
possível, abrir novos rumos nas pesquisas sobre tal assunto e para que próximos 
entusiastas possam partir deste início. Na figura 4 é demonstrado à topologia utilizada 
na implementação do PF. 
Figura 4: Topologia de rede. 
 
Fonte: Adaptado de OpenBSD (2014). 
 Todos os computadores incluídos nesta topologia estão habilitados para utilizar 
serviços como: e-mail, navegar na internet, utilizar serviços de bate-papo (chat), exceto 
o COMP3 que possui um servidor web rodando. No quadro 4 é possível observar o 
script utilizado no firewall PF, para a topologia da figura 4. Cada regra descrita abaixo 
possui um número de identificação, logo ao lado é descrito sua finalidade. 
Quadro 4: script utilizado na rede com PF 
# Macros \\ Comentários 
 
1 - ext_if="fxp0" 
 
2 - int_if="xl0" 
 
3 - tcp_services="{ 22, 113 }" 
icmp_types="echoreq" 
 
4 - comp3="192.168.0.3" 
 A primeira linha (1), define a interface de rede 
interna onde a filtragem acontecerá. 
 
 A segunda e terceira linha listam os números de 
portas TCP dos serviços que serão abertos para a 
Internet (SSH e ident/auth) e os tipos de pacotes 
ICMP que terão permissão de alcançar a máquina 
do firewall. 
 
 
 A quarta linha define o endereço IP de COMP3. 
# Opções \\ Comentários 
 
5 - set block-policy return 
6 - set loginterface egress 
 
7 - set skip on lo 
 As linhas 5 e 6 são responsáveis pela definição 
da resposta padrão para regras de filtragem block e 
pelo "ativamento" do registro de estatísticas para a 
interface externa. 
 Já a linha 7 serve para desativar interfaces de 
loopback indicada pela sigla “lo”, e bloqueada pelo 
comando set skip. 
# FTP Proxy rules \\ Comentários 
 
8 - anchor "ftp-proxy/*" 
 
9 - pass in quick on $int_if inet proto tcp to any 
port ftp \ 
divert-to 127.0.0.1 port 8021 
Na linha 8, anchor é o comando utilizado para 
liberar o acesso de clientes locais a servidores ftp 
na internet. 
 
A linha 9, serve para interceptar ligações de FTP 
para a porta 21 e desviá-las para uma instância ftp-
proxy em execução na porta 8021 e, através do uso 
de palavra-chave -quick, pacotes combinando não 
serão novamente verificadas em relação ao resto 
do conjunto de regras. 
 
# match rules \\ Comentários 
 
10 - match out on egress inet from 
!(egress:network) to any nat-to (egress:0) 
Na linha 10, a regra match é usada para fazer NAT 
para toda a rede interna. O sufixo :0 é usado para 
que, se a interface externa tenha múltiplos 
endereços, somente o primeiro endereço é usado 
para a tradução. 
# Regras de filtragem \\ Comentários 
 
11 - block in log 
 
12 - pass out quick 
 
13 - antispoof quick for { lo $int_if } 
 
14 - pass in on egress inet proto tcp from any to 
(egress) \port $tcp_services 
 
15 - pass in on egress inet proto tcp to (egress) 
port 80 rdr-to $comp3 
 
16 - pass in inet proto icmp all icmp-type 
$icmp_types 
 
 
17 - pass in on $int_if 
 
A linha 11, serve para controlar as permissões de 
acesso, ou seja, inicia com o bloqueio padrão. 
 
A linha 12, as regras pass out quick, os pacotes de 
saída podem evitar serem verificados contra as 
seguintes regras, melhorando o desempenho. 
 
A linha 13 é uma proteção contra falsificações 
através do uso da palavra-chave antispoof. 
 
A linha 14 é destinada a direcionar o tráfego ao 
firewall em si. 
 
Já a quinta 15 é a regra destinada á pegar todas as 
tentativas de conexão a porta 80 e as redirecioná-
las ao COMP3. 
 
A regra da linha 16 serve para liberar o tráfego 
ICMP. 
 
E a regra da linha 17, dedica-se a informar ao 
firewall que o tráfego deva passar á interface 
interna. 
 
Fonte: Adaptado de OpenBSD (2014). 
 O PF pode bloquear o tráfego que entra e sai de uma interface. Para simplificar 
sua vida, você pode escolher fazer a filtragem de tráfego em apenas em uma direção em 
vez de bloquear entrada e saída, esta configuração está definida na linha 17 do quadro 4. 
3 Metodologia 
Uma pesquisa é um procedimento racional e sistemático que visa dar respostas a 
problemas que são propostos (GIL, 2010). Conforme o mesmo autor nos afirma, para 
que se possa avaliar a qualidade dos resultados de uma pesquisa, é necessário que se 
saiba como os dados foram obtidos. Uma pesquisa pode ser realizada de algumas 
formas, entre elas estão, a pesquisa bibliográfica, método utilizado para a obtenção de 
dados neste trabalho. 
 Uma pesquisa bibliográfica é elaborada com base em material já publicado, este 
material pode ser impresso ou de outras fontes como discos, CDs, entre outros (GIL, 
2010). Para o desenvolvimento desta pesquisa bibliográfica foram utilizados livros, 
artigos científicos, entre outras obras conceituadas na área. 
5 Considerações finais 
Sabe-se do grande desafio que é manter os ativos da informação salvos de ameaças à sua 
confidencialidade, integridade e disponibilidade. Para garantir a segurança das 
informações são necessários diversos mecanismos trabalhando em conjunto a fim de 
aumentar a proteção dos dados de uma determinada pessoa ou organização. 
 
 Contudo pode-se concluir através deste artigo que o uso de firewalls é uma parte 
importante e fundamental ao se pensar em uma solução de segurança para as 
informações.Sendo que o firewall atua como um ponto único defesa entre a rede 
privada e a rede publica, sabe-se que muitas ameaças podem ser evitadas ao se adotar 
soluções de firewall fazendo assim uma filtragem de pacotes na entrada da rede. 
Como foi possível observar ao longo desta pesquisa, os firewalls baseados em 
software livre, possuem funcionalidades extremamente competitivas quando 
comparados aos comerciais. O IPFW e o PF, os quais foram abordados neste trabalho 
são um dos mais comumente usados e considerados uns dos mais seguros da 
computação moderna. 
Embora estes firewalls sejam reconhecidos e ótimas aplicações existem entre 
eles algumas diferenças que merecem ser destacadas. O IPFW possui uma característica 
que deve ser levado muito em conta na hora da implementação de um firewall, a 
necessidade de menos recurso de hardware. Ele faz a filtragem com base em lista, 
enquanto PF é muito mais orientado a objeto. A configuração PF é dividida em várias 
partes, tendo os macros como um grande destaque, eles são úteis porque são uma 
alternativa para se referenciar endereços, números de portas, nomes de interfaces entre 
outros, em um conjunto de regras. Desta forma se um endereço IP de um servidor 
mudou, será preciso apenas atualizar a macro. Em contrapartida o IPFW geralmente 
possui um shell scripts com regras processados em ordem. Contudo tanto um firewall 
quanto o outro suporta statefull e processamento sem estado de conexão. 
Em IPFW, a primeira regra em um conjunto de regras que corresponde a um 
pacote ganha. No PF, as regras são analisadas em sequência da primeira até a última, 
porém o pacote vai ser analisado por cada regra do arquivo de configuração, e vai ser 
casado com a última regra aonde ele se enquadre, exceto no caso de um pacote casar 
com uma regra que contenha a palavra-chave quick, neste caso a regra será aplicada e o 
restante desconsiderado. 
Portanto a escolha de qual destes firewalls utilizar vai depender da necessidade 
de cada administrador de rede. Como no estudo apresentado aqui, muitos outros podem 
ser desenvolvidos, pois a uma infinidade de características e recursos a serem 
explorados nestas duas fantásticas ferramentas. Além de estudos pesquisas 
experimentais também podem e devem ser desenvolvidas afim de aplicar os 
conhecimentos e testar na pratica suas funcionalidades. 
6 Referências 
DELL. Comunicados a imprensa: Mais de 30% das pequenas e médias empresas brasileiras ainda utilizam 
firewall open source. Disponível em: < http://www.dell.com/learn/br/pt/brcorp1/press-releases/2014-
04-02--sonicwall-firewall-survey >. Acesso em: 20 nov. 2014. 
FREEBSD. FIREWALLS-IPFW. Disponível em: 
 < http://www.free.bsd.com.br/~eksffa/freebsd/ipfw.txt Free BSD.org>. Acesso em: 21 nov. 2014. 
GIL, A. C. Como Elaborar projetos de Pesquisas. 5. ed. São Paulo: Atlas, 2010. 
KUROSE, James F. Redes de Computadores e a internet: uma aboradagem top-down. 5ªed. São Paulo: 
Pearson, 2010. 
MORAES, Alexandre Fernandes de. Redes de Computadores: Fundamentos. 7ª. ed. São Paulo: Érica, 
2011. 
 
NASCIMENTO, Marcelo Brenzink do; TAVARES, Alexei Correa. Roteadores e Switches: Guia para 
Certificação CCNA e CCENT Exames 640-802 CCNA / 640-822 ICND1 / 640-816 ICND2. 2ª. ed. 
Rio de Janeiro: Ciência Moderna, 2012. 
OPENBSD. PF: Filtragem de Pacotes. Disponível em: 
<http://www.tw.openbsd.org/faq/pf/pt/filter.html#intro>. Acesso em: 21 nov. 2014. 
POTTER, Bruce. NETWORK SECURITY. Open source firewall alternatives. Elsevier, 2006. 
SCHÜRMANN, Tim. Mil e uma utilidades. 2012. Disponível em: 
<http://www.linuxnewmedia.com.br/images/uploads/pdf_aberto/ADM_05_48_54_07_seg-
pfsense.pdf>. Acesso em: 21 nov. 2014. 
SPOHN, Marco Aurelio. Desenvolvimento e análise de desempenho de um packet/session filter. 1997. 68 
f. TCC (Graduação) - Curso de Ciências da Computação, Universidade Federal do Rio Grande do Sul, 
Porto Alegre, 1997.

Continue navegando