Você está na página 1de 7

Tutorial Firewall em Linux

Acadmicos: Felipe Zottis e Cleber Pivetta

Firewall
Firewall um quesito de segurana com cada vez mais importncia no
mundo da computao. medida que o uso de informaes e sistemas cada
vez maior, a proteo destes requer a aplicao de ferramentas e conceitos de
segurana eficientes. O firewall uma opo praticamente imprescindvel.
Firewall o nome dado ao mecanismo de uma rede de computadores
que tem por objetivo aplicar uma poltica de segurana a um determinado ponto
de controle da rede. Seu objetivo permitir somente a transmisso e a
recepo de dados autorizados.
Este mecanismo atua como uma defesa de um computador ou de uma
rede, controlando o acesso ao sistema por meio de regras e a filtragem de
dados. A vantagem do uso de firewalls em redes, que somente um
computador pode atuar como firewall, no sendo necessrio instal-lo em cada
mquina conectada. A figura abaixo ilustra a idia de Firewall.

Funcionamento do Firewall
H varias formas de funcionamento de um firewall. Estas formas variam
de acordo com o sistema, aplicao ou do desenvolvedor do programa.
Entretanto, existem dois conceitos bsicos de utilizao de firewall:
- Firewall em nvel de Pacotes
- Firewall em nvel de Aplicao

Neste tutorial o enfoque ser dado ao conceito de Firewall em nvel de


pacotes com a utilizao da Ferramenta Iptables em sistemas Linux.

Iptables
O Iptables uma ferramenta de edio da tabela de filtragem de
pacotes, ou seja, com ele voc capaz de analisar o cabealho e tomar
decises sobre os destinos destes pacotes.
O iptables um firewall com estado, ou seja, um firewall stateful. Os
anteriores eram stateless. O modo de filtragem 'Stateless' tende a tratar cada
pacote roteado pelo firewall como pacotes individuais, sendo mais simples de
implementar e por terem uma resoluo mais rpida que um do tipo stateful,
podem ser usados para obterem um desempenho melhor em determinadas
situaes onde existem regras de nvel de rede bem simples.
Atravs destas regras poderemos fazer com que os pacotes possam ser
ou no recebidos a rede toda, a determinada mquina, interface ou mesmo
porta de conexo. O Iptables trabalha atravs de Tabelas, Chains e Regras:

Instalao Iptables
Os requerimentos bsicos para o funcionamento do Iptables so um
computador sobre a arquitetura 386 com, no mnimo, 4MB de RAM e um kernel
da srie 2.4 ou superior.
Para a realizao deste tutorial, fora utilizado a sistema operacional
Linux, sendo a distribuio Debian.
Como este experimento fora realizado na rede interna da Universidade
Estadual do Oeste do Paran, necessrio realizar a exportao do proxy
utilizado pela faculdade, para que assim seja possvel realizar o download do
pacote de instalao do Iptables, lembrando que a maioria dos releases atuais
do Linux j possui o Iptables no seu Kernel.
export http_proxy=htpp://proxy.unioeste.br:8080
Para realizar a instalao de determinados programas, o Linux permite
que o pacote de instalao destes sejam obtidos por download atravs do
comando:
apt-get install iptables

Regras no Iptables
As regras so como comandos passados ao iptables para que ele
realize uma determinada ao (como bloquear ou deixar passar um pacote) de
acordo com o endereo/porta de origem/destino, interface de origem/destino,

etc. As regras so armazenadas dentro dos Chains e processadas na ordem


que so inseridas.
Exemplo de Regra: bloqueia qualquer acesso indo ao endereo 127.0.0.1
iptables -t filter -A INPUT -d 127.0.0.1 -j DROP

Chains
Os Chains so locais onde as regras do firewall so definidas pelo
usurio e armazenadas para operao do firewall. Existem dois tipos de
Chains: os embutidos (como os Chains INPUT, OUTPUT e FORWARD) e os
criados pelo usurio. Os nomes dos Chains embutidos devem ser
especificados sempre em maisculas (note que os nomes dos Chains so
case-sensitive, ou seja, o Chain input completamente diferente de INPUT).

Tabelas
As Tabelas armazenam os Chains e o conjunto de regras com uma
determinada caracterstica em comum. Existem 3 tabelas disponveis no
Iptables:

Tabela Filter
a tabela padro do Iptables, composto por 3 Chains:

INPUT - Consultado para dados que chegam mquina.


OUTPUT - Consultado para dados que saem da mquina.
FORWARD - Consultado para dados que so redirecionados para outra
interface de rede ou outra mquina.

Tabela Nat
Utilizada para dados que geram outra conexo (masquerading, source
nat, destination nat, port forwarding, proxy transparente so alguns exemplos).
Ela composta por 3 Chains:

PREROUTING - Consultado quando os pacotes precisam ser


modificados logo que chegam. o Chain ideal para realizao de DNAT
e redirecionamento de portas.
OUTPUT - Consultado quando os pacotes gerados localmente precisam
ser modificados antes de serem roteados. Este Chain somente
consultado para conexes que se originam de IPs de interfaces locais.
POSTROUTING - Consultado quando os pacotes precisam ser
modificados aps o tratamento de roteamento. o Chain ideal para
realizao de SNAT e IP Masquerading.

Tabela Mangle
A tabela MANGLE implementa alteraes especiais em pacotes em um
nvel mais complexo. A tabela mangle capaz, por exemplo, de alterar a
prioridade de entrada e sada de um pacote baseado no tipo de servio (TOS)
o qual o pacote se destinava. Ela Possui 2 Chains padres:

OUTPUT - Altera pacotes de forma especial gerados localmente antes


que os mesmo sejam roteados.
PREROUTING Modifica pacotes dando-lhes um tratamento especial
antes que os mesmos sejam roteados.

* Neste tutorial o enfoque ser dado tabela padro do Iptables, ou seja, a


tabela Filter.

Fazendo o IP Masquerading
Antes de manipular as regras necessrio que o kernel tenha suporte
ao iptables e ip_forward. Com os dois comandos abaixo habilitado o
masquerading para todas as mquinas da rede 192.168.1.*:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 j
MASQUERADE
echo "1" >/proc/sys/net/ipv4/ip_forward
A configurao do servidor Linux est completa, agora os clientes da
rede precisaro ser configurados para usar o endereo IP do servidor Linux
como gateway

Manipulao de Chains
Nesta sesso sero mostrados alguns dos comandos mais utilizados
para a manipulao de regras.

Listar Regras L
Utilizando a sintaxe abaixo possvel exibir todas as regras j criadas.
iptables [-t tabela] -L [Chain] [opes]
No exemplo abaixo o comando lista as regras do Chain INPUT
iptables -t filter -L INPUT

Podem-se utilizar tambm algumas opes para pra listar o contedo dos
Chains:

-v - Exibe mais detalhes sobre as regras criadas nos Chains

-n - Exibe endereos de mquinas/portas como nmeros ao invs de


tentar a resoluo DNS e consulta ao /etc/services. A resoluo de
nomes pode tomar muito tempo dependendo da quantidade de regras
que suas tabelas possuem e velocidade de sua conexo.
-x - Exibe nmeros exatos ao invs de nmeros redondos. Tambm
mostra a faixa de portas de uma regra de firewall.
--line-numbers - Exibe o nmero da posio da regra na primeira coluna
da listagem.

Adicionando regras A
Adiciona uma regra na Tabela e Chain determinados.
Como exemplo ser acrescentado uma regra no Chain INPUT (-A
INPUT) que bloqueie (-j DROP) qualquer acesso indo ao endereo 127.0.0.1 (d 127.0.0.1):
iptables -t filter -A INPUT -d 127.0.0.1 -j DROP

Apagando Regras D
A excluso de regras pode ser feita de duas formas, Quando sabemos
qual o nmero da regra no Chain (listado com a opo -L) podemos
referenciar o nmero diretamente, como no exemplo abaixo:
iptables -t filter -D INPUT 1
Porem, s vezes o conjunto de regras pode ser muito extenso, o que
dificulta saber o numero da regra. Neste caso usamos a mesma sintaxe para
criar a regra no Chain, mas trocamos -A por -D:
iptables -t filter -D INPUT -d 127.0.0.1 -j DROP

Inserindo Regra em uma Linha Especifica I


Este comando til no caso do usurio necessitar inserir uma regra em
uma determinada posio, pois quando adicionada uma nova regra, ele
sempre vai ter prioridade menor em relao s regras anteriores.

iptables -t filter -I INPUT 1 -s 192.168.1.15 -d 127.0.0.1 -j ACCEPT


No exemplo acima o trafego vindo de 192.168.1.15 no ser rejeitado
porque est definido na primeira linha do Chain Input, e por isso tem prioridade
em relao s outras regras.

Substituir Regras R
Existem duas alternativas: apagar a regra e inserir uma nova no lugar ou
modificar diretamente a regra j criada sem afetar outras regras existentes e
mantendo a sua ordem no Chain .Use o seguinte comando:
iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP
O nmero 2 o nmero da regra que ser substituda no Chain INPUT.

Criando Novos Chains - N


importante ressaltar que em firewalls organizados com um grande
nmero de regras, a criao de Chains individuais primordial para organizar
regras de um mesmo tipo ou que tenha por objetivo analisar um trfego de uma
mesma categoria (interface, endereo de origem, destino, protocolo, etc), pois
podem consumir muitas linhas e tornar o gerenciamento do firewall confuso.A
definio de novos Chains utiliza a seguinte sintaxe:
iptables [-t tabela] [-N novoChain]
Como exemplo pode-se criar um Chain denominado Unioeste (que pode ser
usado para agrupar as regras de internet da Universidade):
iptables

-t filter -N Unioeste

Para inserir regras no Chain Unioeste basta especifica-lo aps a opo -A:
iptables

-t filter -A Unioeste -s 200.152.161.132 -j DROP

Logo, necessrio fazer uma ligao (-j) do Chain INPUT para o Chain
Unioeste:
iptables -t filter -A INPUT -j internet
Esta ligao necessria indicar que outro Chain foi criado
possibilitando a leitura das novas regras do Chain Unioeste.

Especificando o Policiamento Padro de um Chain P


Quando um pacote chega ao fim das regras contidas em um Chain, o
policiamento padro determina se ele ACCEPT ou DROP, ou seja, se o
pacote aceito ou rejeitado. Isto deve ser feito utilizando a seguinte sintaxe.
iptables [-t tabela] [-P Chain] [ACCEPT/DROP]

No exemplo abaixo, o pacote no ser rejeitado aps passar pelas


regras. Obviamente se a regras anteriormente definidas no bloquearem ele.
iptables -t filter -P INPUT ACCEPT

Salvando e Restaurando regras


As regras que esto sendo criadas pelo usurio enquanto manipula o
iptables podem ser salvas usando as ferramentas iptables-save e iptablesrestore baseada na idia do ipchains-save e ipchains-restore. O iptables-save
deve ser usado sempre que modificar regras no firewall iptables da seguinte
forma:
iptables-save >/dir/iptables-regras

Para restaurar as regras salvas, utilize o comando:


iptables-restore </dir/iptables-regras

Você também pode gostar