Para entender a funcionalidade do firewall, é necessário antes entender alguns conceitos de redes que estão diretamente envolvidos na operação do mesmo. Vamos lá:
Conexões de entrada (INPUT), de saída (OUTPUT) e de redirecionamento (FORWARD)
Conexões de entrada são as que vem de fora com destino direto ao seu micro. Conexões de saída são exatamente o inverso, partindo de seu micro com destino a um host (servidor) remoto. Já as conexões de redirecionamento são um pouco diferentes: elas vem de fora (lembrando que quando falo "de fora", pode ser tanto da web como de sua rede interna) e entram no seu micro, porém elas devem ser encaminhadas a outro host. O encaminhamento de pacotes geralmente aparece em redes internas, onde o acesso à web é feito via NAT (Network Address Translation). Quando o acesso é compartilhado por proxy, ou quando a estação tem acesso direto à web, esta situação torna-se incomum.
Portas TCP e UDP
Tanto os protocolos de rede TCP (o mais comum) e UDP (usado muito em conteúdo streaming, entre outras funções) oferecem uma série de portas lógicas para que os diferentes protocolos de transmissão de dados (HTTP, FTP, POP, etc.) possam operar. Para ser mais exato, são 65535 portas TCP + 65535 portas UDP. Cada protocolo de dados usa uma porta específica - exemplos: HTTP usa a porta 80 TCP, FTP usa as portas 20 (em modo FTP ativo) e 21 TCP (tanto no modo Ativo quanto Passivo), POP usa a porta 110 TCP, e assim por diante. Para que um aplicativo servidor de páginas Web funcione (Apache, IIS, Tomcat, etc), por exemplo, é necessário configurar o sistema de forma que a porta 80 aceite conexões de entrada; se você quer configurar o Terminal Services do Windows Server, terá que liberar conexões entrantes na porta 3389 TCP; e assim por diante. Não é possível se conectar em portas fechadas, a não ser que você se aproveite de alguma vulnerabilidade do protocolo TCP/IP. Lembrando que o protocolo TCP é aberto, e cada sistema operacional usa uma compilação que seja adequada à sua arquitetura de software/hardware, e por isso certas vulnerabilidades que existem na implementação TCP de um sistema operacional podem não existir em outro.
Portas abertas, fechadas e filtradas
Como dito acima, para que uma tarefa de servidor aceite conexões entrantes, é necessario que a porta correspondente ao serviço esteja aberta (OPEN). Quando ela está fechada (CLOSED), não é permitido conexões de entrada. O modo filtrado (FILTERED, ou STEALTHED ou ainda BLOCKED) não só fecha a porta como impede que um micro externo consulte a situação dela ou tente realizar conexões - ou seja, os pacotes que chegam com destino a uma porta filtrada são solenemente descartados. Um bom firewall deve filtrar as portas não usadas, pois ainda que elas estejam fechadas, é possível se aproveitar de alguma vulnerabilidade do protocolo TCP/IP para forçar a entrada. Com elas filtradas, isto se torna uma tarefa virtualmente impossível.
Escopo
Define o campo de atuação de uma determinada regra de firewall. Suponhamos que você queira liberar apenas uma porta específica à web, e as demais deverão ser visíveis apenas à rede interna. Ou ainda, digamos que o acesso à porta 23 (telnet) deverá ser liberado apenas ao IP do administrador. Para atingir este objetivo, basta definir o escopo para cada uma das regras de seu firewall. Ele é formado pelo número IP, e pode ser acrescida a máscara de rede, de forma a abrir o acesso à todos os micros daquela faixa de IP. Exemplos de IPs e suas respectivas máscaras são: 192.168.0.0/16 (o mesmo que 192.168.0.0/255.255.255.0), 172.16.0.0/24 (ou 172.16.0.0./255.255.0.0) e 10.0.0.0/32 (ou 10.0.0.0/255.0.0.0). Para liberar/bloquear a porta a todos, geralmente não é necessário especificar o escopo, ou deve-se usar 0.0.0.0/0.0.0.0.
Beleza, agora dá pra falar de firewall.
O que é firewall?
O Firewall ("parede de fogo", em Inglês) é em essência um bloqueador de conexões entrantes. Ou seja, ele por padrão impede qualquer tipo de conexão entrante via portas TCP e UDP, e pode também restringir ou até barrar todas as solicitações ICMP (o exemplo mais conhecido de requisição ICMP é a de ping). Se seu micro não atua como servidor de absolutamente nada, então não há o menor motivo para permitir estes tipos de conexões. Porém, em certos casos, é necessário abrir execções - se o firewall bloquear as portas 139 (NetBIOS) e 445 (protocolo de rede MS), por exemplo, nenhum micro de sua rede interna conseguirá ver os arquivos e impressoras de sua estação. Ao criar exceções, você pode definir o escopo delas, de forma a definir exatamente quem pode acessar as portas de seu micro. Um caso real: no meu serviço, onde há um servidor Conectiva Linux distribuindo web, impressão e arquivos para uma rede interna, e que é visível ao mundo todo (internet), as exceções estão da seguinte forma:
- Web (80): todo mundo;
- Servidor de arquivos e impressão (139, 445 e 631): apenas rede interna;
- Serviços administrativos, como SSH, SWAT e Webmin (22, 901 e 10000): apenas para o IP do administrador.
Para saber quais portas estão abertas em seu micro, há vários meios: você pode usar sites que fazem esse serviço, como o da Sygate, ou pode usar softwares, como o Local Port Scanner. Quem usa Linux pode usar o Todo-Poderoso nmap, na minha opinião o melhor de todos, pois além de poder escanear qualquer host na face da Terra que pode ser acessado pelo seu micro, ele incorpora técnicas muito avançadas de escaneamento, que podem revelar furos que muitos port scanners não revelariam.
Aí você pode me dizer: "ah, eu fiz um scan com esses programinhas ae e ele não achou nenhuma porta aberta! deu tudo como closed". Está certo - ora, para cada porta deve haver um programa "escutando" nela. Não há como a porta 23 (telnet) estar aberta se não há um servidor telnet rodando no seu micro! Porém, lembra-se das portas fechadas e filtradas? Aqui entra esse conceito. A partir do momento que a porta está apenas como closed, ainda há meios de se conectar à ela. E mais: os worms, pragas que podem permitir o controle remoto de sua máquina, precisam abrir uma porta no seu micro para "escutar" por conexões de entrada (o NetBus se não me engano abre a porta 12345) oriundas do cracker (um hacker dificilmente perderia seu tempo em micros domésticos, que dirá para fazer vandalismo digital Rolling Eyes ). Com um firewall devidamente configurado, não há como qualquer software em sua máquina abrir uma porta a não ser que você autorize - aí está a grande vantagem de segurança do firewall para um micro doméstico. O firewall complementa a ação do anti-vírus, impedindo que certos tipos de praga funcionem. Claro que de repente você pode topar com um worm que desabilita o firewall, mas aí o anti-vírus deverá ser capaz de barrá-lo.
Agora vem outra questão: "se eu tenho firewall, como eu ainda posso ser infectado por worms?!". Simples: em nenhum momento foi dito que o firewall previne a infecção do micro - foi dito apenas que ele inibe conexões de entrada. Ou seja, normalmente o firewall não analisa o tráfego que entra e sai do micro; ele apenas impede que alguém se conecte ao seu micro. A análise dos pacotes que trafegam pelo seu micro pode ser feita com um IDS (Intrusion Detection System), que pode ser em forma de software (o anti-vírus avast! inclui um gratuitamente) ou hardware (beeeem caro, usado mais em empresas de médio e grande porte). Algumas soluções de firewall também permitem fazer análise de pacotes. O IDS é capaz de olhar pacote por pacote em busca de código malicioso - ao encontrar algum, ele pode barrar este pacote. Para que ele funcione adequadamente, é necessária constante atualização, exatamente como nos anti-vírus, já que novas pragas surgem aos montes em curto espaço de tempo.
Que firewall usar?
Quem usa Linux tem um firewall matador: o IPTables. É possível customizá-lo praticamente à maneira que você quiser, e isto não é uma tarefa exatamente difícil. Para Windows, eu indico as seguintes soluções:
Windows Firewall. embutido no Windows XP SP2, ele é dos mais simplórios, já que é um firewall inbound (apenas lida com conexões de entrada). Porém ele é eficiente em sua função, e é bastante amigável. Para quem tem "softfobia" como eu, é uma boa solução! (Explicando: eu evito ao máximo instalar novos programas em minha máquina...).
ZoneAlarm: Este é um firewall bem bacaninha, pois além de tratar das conexões entrantes, ele permite fazer restrições de várias outras ordens. Há uma versão free disponível, porém a versão paga tem mais alguns recursos bem interessantes. Em Inglês.
Sygate Personal Firewall. Nos mesmos moldes do ZoneAlarm, porém é um pouco mais customizável, na minha opinião. Em Inglês. Update: o Sygate foi descontinuado!
Qualquer uma das soluções acima é uma boa pedida, vai depender de seu gosto.














