Olá pessoal!
Primeiramente gostaria de agradecer a oportunidade de estar publicando meu 1° artigo aqui no VOL, este que se deve a 2 principais motivos:
- O VOL foi o grande responsável pelo meu interesse em aprender e gostar de Linux. Não apenas pela a excelência dos artigos técnicos e não-técnicos publicados, mas principalmente por fazer valer a palavra comunidade.
- E também pelo meu interesse em compartilhar o que estou aprendendo na marra no mundo GNU, para que outros talvez possam ter uma experiência melhor do que já tive.
Mas peço encarecidamente ao amigo que leitor que caso encontre alguma informação errada que não pense 2x em corrigí-la, pois sou iniciante e peço desculpas pela minha escassa experiência em Linux e por qualquer má interpretação ou informação errônea que posso estar passando neste e demais artigos.
Neste artigo iremos aprender os conceitos básicos do uso do
iptables e como configurá-lo no
Slackware para que seja iniciado junto com o sistema. Também serão aprendidos alguns comandos simples como limpar políticas, exibir regras, entre outros.
Conceitos básicos de IPTABLES
Antes de mais nada vamos entender alguns conceitos básicos para que futuramente seja mais fácil implementar qualquer mudança ou adaptação no seu script do iptables.
O que é iptables?
Iptables é o sistema de firewall mais utilizado no mundo Linux, principalmente pela sua simplicidade e eficiência.
Como funciona?
Ele funciona através dos filtros de pacotes, ou seja, quando um pacote passa pelo iptables (chegando, encaminhando ou saindo do servidor do iptables) ele é analisado linha por linha através de um script, como um script batch mesmo. Veremos mais detalhes nos exemplos posteriores.
No iptables é importante entender os seguintes conceitos:
- Chains (categoria): embora minha tradução não tenha ficado tão boa, as chains correspondem ao tipo do pacote a ser analisado pelo iptables, que poder ser INPUT (Entrada), OUTPUT (Saída) e FORWARD (Encaminhamento)
- Rules (regras): agora com uma tradução melhor, as rules correspondem aos filtros e a sintaxe aplicada às chains.
No iptables também temos o conceito de tabelas, através das tabelas NAT, FILTER e MANGLE.
A tabela FILTER é a responsável pela permissão/bloqueio da entrada, saída e encaminhamento de pacotes. Já a tabela NAT é responsável pelo redirecionamento de portas, proxy etc. E por último a tabela MANGLE é utilizada para a modificação de pacotes.
Para não fugir do artigo iremos apenas explicar o uso da tabela FILTER, que é a tabela padrão e a principal responsável pela segurança de seu ambiente.
Exemplo de uso:
iptables [-t tabela] [opção] [chain] [dados] -j [ação]
Um exemplo prático de aplicação de regra anterior seria o seguinte:
# iptables -t FILTER -A INPUT -d 192.168.1.1 -a ACCEPT
Vamos entender a regra:
- iptables: começa uma regra do iptables
- -t FILTER: indica a tabela (se não indicado será automaticamente assumido a tabela filter). Neste caso estamos deixar explícito que estamos utilizando a tabela FILTER
- -A INPUT: indica a chain que será processada, neste caso a entrada de pacotes
- -d 192.168.1.1: indica o destino do pacote, que neste caso é o host 192.168.1.1
- -a ACCEPT: indica a ação que será atribuída quando um pacote com todas as características chegar no iptables. Neste caso é ACCEPT.
Uma coisa interessante a se notar no iptables é o uso de políticas, que poderão facilitar muito mais sua administração.
Entendendo políticas
As políticas são as regras padrões que serão atribuídas a um pacote se ele não se encaixar em todas as regras anteriores. Vamos analisar o seguinte exemplo:
# iptables -P INPUT DROP
# iptables -A INPUT -s 10.1.1.1 -p tcp --dport 80 -j DROP
# iptables -A INPUT -s 10.1.1.2 -j ACCEPT
Agora supondo que venha um pacote do IP 10.1.1.3, qual seria a ação?
Seria DROP, pois na primeira linha temos a política (parâmetro -P) que faz com que qualquer pacote que não satisfaça as demais condições seja DROP.
Já na segunda linha está explícito que o pacote que vier da porta 80 através do protocolo TCP proveniente do IP 10.1.1.1 será DROP.
E na terceira linha está explícito que tudo o que vier do IP 10.1.1.2 será ACCEPT.
Então como o IP 10.1.1.3 não satisfaz a nenhuma regra, será aplicada a politica padrão para INPUT, que é DROP.
E se o pacote fosse do IP 10.1.1.2?
ACCEPT, pela terceira linha.
E se o pacote fosse do IP 10.1.1.1 e da porta 443?
DROP, pois mesmo que a única porta que esteja sendo negada explicitamente seja a porta 80, não há nenhuma regra que especifique ACCEPT para o IP 10.1.1.1 ou para a porta 443, portanto ele será processado pela política, que é DROP.
Enfim, esses são os conceitos básicos, claro que existem muito mais detalhes, tipos de pacote, protocolos etc. Mas este já é o "feijão com arroz" para que você possa começar a brincar com o iptables. A partir da próxima página iremos botar a mão na massa com o Slackware!