Introdução
Neste artigo, vamos mostrar exemplos práticos do uso
do ipchains. Como organizar regras de Firewall usando
ipchains e proteções a ataques mais comuns na
Internet. Vamos agora ao que realmente interessa.
Vamos descrever aqui tudo o que você realmente
precisa saber para usar as regras de firewall do ipchains.
Já estamos considerando que o seu kernel está
preparado para isso. Como foi visto na
parte I deste
artigo
, o ipchains é apenas um gerenciador de regras, quem faz
todo o trabalho é o kernel, e ele precisa estar
preparado para isso. Se você não tem certeza se o
seu kernel está preparado, veja como verificar e
prepará-lo, se for o caso, na Parte I deste artigo.
Implementando
O kernel inicia-se com 3 listas de regras, essas regras
são chamadas de firewall chains ou apenas chains. Quando
um pacote chega a placa de rede da sua máquina, o kernel
usa as regras de INPUT para decidir o que fazer. Se o pacote
consegue atravessar as regras de input, o kernel decide para
onde enviar o pacote, isso chama-se roteamento do pacote. Se
o destino do pacote for outra máquina, estamos usando o
chain chamado de FORWARD, e por fim, os pacotes que saem da
sua máquina usam as regras de OUTPUT chain.
Dá para perceber que cada chain é uma
verificação de regras. Se a regra está
definida, o kernel sabe o que fazer com o pacote. Se nao
existe definição para aquela espécie de
pacote, o kernel consulta o chain POLICY para decidir o que
fazer, rejeitando ou aceintando o pacote.
Vamos descrever aqui meios de utilização que
consideramos úteis e comuns, é claro que não
vamos descrever todos os métodos. Se você precisar
de alguma ajuda mais específica para alguma decisão
personalizada, é recomendado ver o manual do ipchains
(man ipchains).
Vamos citar alguns conceitos aqui, para que mais na frente
possamos mostrar alguns exemplos e você consiga
entender. Neste momento, não se preocupe em guardar
todas as definições, com os exemplos uma coisa vai
encaixando com a outra. Como foi dito, você (o kernel)
começa com 3 chains (e você não pode
apagá-las), input, output e forward. Você pode
criar novas chains se precisar e mudar definições,
veja aqui os comandos e suas definições:
- Criar uma nova chain (-N).
- Apagar uma chain vazia (-X).
- Mudar o plano de acao de uma chain do kernel (input,
output, forward) (-P).
- Listar as regras de uma chain (-L).
- Apagar todas as regras de uma chain. (-F).
- Zerar os contadores de pacotes e bytes de todas as
regras numa chain (-Z).
Existem várias maneiras de manipular as regras dentro
de uma chain:
- Inclui uma nova regra para uma chain (-A).
- Inclui uma nova regra em uma determinada
posição dentro de uma chain (-I).
- Troca uma regra em uma determinada posição
dentro de uma chain (-R).
- Apaga uma regra específica dentro de uma chain
(-D).
Algumas manipulações para masquerading:
- Lista as conexões atuais de masquerading (-M
-L).
- Ajusta valores de timeout para masquerading (-M
-S).