Baixe o app para aproveitar ainda mais
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.
Compartilhar