O que é um Firewall e Como Funciona?

Introdução

A firewall is a system that provides network security by filtering incoming and outgoing network traffic based on a set of user-defined rules. In general, the purpose of a firewall is to reduce or eliminate the occurrence of unwanted network communications while allowing all legitimate communication to flow freely. In most server infrastructures, firewalls provide an essential layer of security that, combined with other measures, prevent attackers from accessing your servers in malicious ways.

Este guia discutirá como os firewalls funcionam, com foco em firewalls de software stateful, como iptables e FirewallD, conforme relacionados a servidores na nuvem. Começaremos com uma breve explicação sobre pacotes TCP e os diferentes tipos de firewalls. Em seguida, discutiremos uma variedade de tópicos relevantes para firewalls stateful. Por fim, forneceremos links para outros tutoriais que o ajudarão a configurar um firewall em seu próprio servidor.

Pacotes de Rede TCP

Antes de discutir os diferentes tipos de firewalls, vamos dar uma rápida olhada em como o tráfego de rede do Protocolo de Controle de Transporte (TCP) se parece.

O tráfego de rede TCP se move em torno de uma rede em pacotes, que são contêineres que consistem em um cabeçalho de pacote—este contém informações de controle, como endereços de origem e destino, e informações de sequência de pacotes—e os dados (também conhecidos como carga útil). Enquanto as informações de controle em cada pacote ajudam a garantir que seus dados associados sejam entregues corretamente, os elementos que ele contém também fornecem aos firewalls uma variedade de maneiras de combinar pacotes com regras de firewall.

É importante notar que receber com sucesso pacotes TCP entrantes requer que o receptor envie pacotes de reconhecimento de saída de volta ao remetente. A combinação das informações de controle nos pacotes entrantes e de saída pode ser usada para determinar o estado da conexão (por exemplo, novo, estabelecido, relacionado) entre o remetente e o receptor.

Tipos de Firewalls

Vamos discutir rapidamente os três tipos básicos de firewalls de rede: filtragem de pacotes (sem estado), stateful e camada de aplicação.

A filtragem de pacotes, ou sem estado, funciona inspecionando pacotes individuais isoladamente. Como tal, eles não estão cientes do estado da conexão e só podem permitir ou negar pacotes com base nos cabeçalhos dos pacotes individuais.

Os firewalls stateful são capazes de determinar o estado da conexão dos pacotes, o que os torna muito mais flexíveis do que os firewalls sem estado. Eles funcionam coletando pacotes relacionados até que o estado da conexão possa ser determinado antes que quaisquer regras de firewall sejam aplicadas ao tráfego.

Os firewalls de aplicação vão um passo além ao analisar os dados sendo transmitidos, o que permite que o tráfego de rede seja correspondido às regras de firewall específicas para serviços ou aplicativos individuais. Estes também são conhecidos como firewalls baseados em proxy.

Além do software de firewall, que está disponível em todos os sistemas operacionais modernos, a funcionalidade de firewall também pode ser fornecida por dispositivos de hardware, como roteadores ou dispositivos de firewall. Novamente, nossa discussão será focada em firewalls de software stateful que são executados nos servidores que se destinam a proteger.

Regras do Firewall

Como mencionado acima, o tráfego de rede que atravessa um firewall é correspondido com base em regras para determinar se deve ser permitido ou não. Uma maneira fácil de explicar como são as regras do firewall é mostrar alguns exemplos, então faremos isso agora.

Suponha que você tenha um servidor com esta lista de regras de firewall que se aplicam ao tráfego de entrada:

  1. Aceitar tráfego de entrada novo e estabelecido para a interface de rede pública nas portas 80 e 443 (tráfego da web HTTP e HTTPS)
  2. Descartar tráfego de entrada dos endereços IP dos funcionários não técnicos em seu escritório para a porta 22 (SSH)
  3. Aceitar tráfego de entrada novo e estabelecido do intervalo de IP do seu escritório para a interface de rede privada na porta 22 (SSH)

Note que a primeira palavra em cada um desses exemplos é “aceitar”, “rejeitar” ou “descartar”. Isso especifica a ação que o firewall deve fazer no caso de um pedaço de tráfego de rede corresponder a uma regra. Aceitar significa permitir o tráfego, rejeitar significa bloquear o tráfego, mas responder com um erro “inacessível”, e descartar significa bloquear o tráfego e não enviar resposta. O restante de cada regra consiste na condição que cada pacote é verificado.

Acontece que o tráfego de rede é verificado em uma sequência, ou cadeia, de regras de firewall, da primeira à última. Mais especificamente, uma vez que uma regra é correspondida, a ação associada é aplicada ao tráfego de rede em questão. Em nosso exemplo, se um funcionário contábil tentasse estabelecer uma conexão SSH com o servidor, eles seriam rejeitados com base na regra 2, antes mesmo que a regra 3 seja verificada. Um administrador do sistema, no entanto, seria aceito porque corresponderia apenas à regra 3.

Política Padrão

É típico para uma cadeia de regras de firewall não cobrir explicitamente todas as condições possíveis. Por esse motivo, as cadeias de firewall sempre devem ter uma política padrão especificada, que consiste apenas em uma ação (aceitar, rejeitar ou descartar).

Suponha que a política padrão para a cadeia de exemplo acima tenha sido definida como drop. Se algum computador fora do seu escritório tentasse estabelecer uma conexão SSH com o servidor, o tráfego seria descartado porque não corresponde às condições de nenhuma regra.

Se a política padrão fosse definida como aceitar, qualquer pessoa, exceto seus próprios funcionários não técnicos, seria capaz de estabelecer uma conexão com qualquer serviço aberto em seu servidor. Isso seria um exemplo de um firewall muito mal configurado porque apenas mantém um subconjunto de seus funcionários fora.

Tráfego de Entrada e Saída

Como o tráfego de rede, do ponto de vista de um servidor, pode ser tanto de entrada quanto de saída, um firewall mantém um conjunto distinto de regras para cada caso. O tráfego que se origina em outro lugar, tráfego de entrada, é tratado de forma diferente do tráfego de saída que o servidor envia. É típico que um servidor permita a maioria do tráfego de saída porque o servidor geralmente é confiável para si mesmo. Ainda assim, o conjunto de regras de saída pode ser usado para evitar comunicações indesejadas no caso de um servidor ser comprometido por um atacante ou um executável malicioso.

Para maximizar os benefícios de segurança de um firewall, você deve identificar todas as maneiras pelas quais deseja que outros sistemas interajam com seu servidor, criar regras que permitam explicitamente essas interações e, em seguida, bloquear todo o tráfego restante. Tenha em mente que as regras de saída apropriadas devem estar em vigor para que um servidor permita enviar reconhecimentos de saída para quaisquer conexões de entrada apropriadas. Além disso, como um servidor geralmente precisa iniciar seu próprio tráfego de saída por diversos motivos, como baixar atualizações ou se conectar a um banco de dados, é importante incluir esses casos em seu conjunto de regras de saída.

Escrevendo Regras de Saída

Suponha que nosso exemplo de firewall esteja configurado para bloquear o tráfego de saída por padrão. Isso significa que nossas regras de entrada aceitar seriam inúteis sem regras de saída complementares.

Para complementar as regras de firewall de entrada do exemplo (1 e 3), da seção de Regras de Firewall, e permitir a comunicação adequada nesses endereços e portas, poderíamos usar estas regras de firewall de saída:

  1. Aceitar tráfego de saída estabelecido para a interface de rede pública na porta 80 e 443 (HTTP e HTTPS)
  2. Aceitar tráfego de saída estabelecido para a interface de rede privada na porta 22 (SSH)

Note que não precisamos escrever explicitamente uma regra para o tráfego de entrada que é descartado (regra de entrada 2), porque o servidor não precisa estabelecer ou reconhecer essa conexão.

Software e Ferramentas de Firewall

Agora que explicamos como os firewalls funcionam, vamos dar uma olhada em pacotes de software comuns que podem nos ajudar a configurar um firewall eficaz. Embora existam muitos outros pacotes relacionados a firewalls, esses são eficazes e são os que você encontrará com mais frequência.

Iptables

O Iptables é um firewall padrão incluído na maioria das distribuições Linux por padrão (uma variante moderna chamada nftables começará a substituí-lo). Na verdade, é uma interface para os ganchos netfilter de nível de kernel que podem manipular o conjunto de rede do Linux. Ele funciona combinando cada pacote que atravessa a interface de rede com um conjunto de regras para decidir o que fazer.

Para aprender como implementar um firewall com o iptables, confira estes links:

UFW

O UFW, que significa Firewall Descomplicado, é uma interface para o iptables que visa simplificar o processo de configuração de um firewall.

Para saber mais sobre o uso do UFW, confira este tutorial: Como Configurar um Firewall com UFW em um Servidor na Nuvem Ubuntu e Debian.

FirewallD

O FirewallD é uma solução completa de firewall disponível por padrão em servidores CentOS 7. Curiosamente, o FirewallD utiliza o iptables para configurar o netfilter.

Para saber mais sobre o uso do FirewallD, confira este tutorial: Como Configurar o FirewallD para Proteger o seu Servidor CentOS 7.

Se estiver a executar o CentOS 7 mas prefere usar o iptables, siga este tutorial: Como Migrar do FirewallD para o Iptables no CentOS 7.

Fail2ban

O Fail2ban é um software de prevenção de intrusões que pode configurar automaticamente o seu firewall para bloquear tentativas de login por força bruta e ataques DDOS.

Para saber mais sobre o Fail2ban, consulte estes links:

Conclusão

Agora que você entende como os firewalls funcionam, você deve procurar implementar um firewall que melhorará a segurança da sua configuração de servidor usando os tutoriais acima.

Se você deseja aprender mais sobre como os firewalls funcionam, confira estes links:

Source:
https://www.digitalocean.com/community/tutorials/what-is-a-firewall-and-how-does-it-work