clovisvellardo
(usa Fedora)
Enviado em 29/11/2007 - 10:38h
Bom pessoal segue ai um artido que me ajudou muito para montar meu firewall, este documento é de autoria do Gilberto Junior que foi meu professor de linux a página dele é
www.gilbertojunior.com vale a pena conferir, espero que este artigo ajude vcs como me ajudou abraços...
FIREWALL
Quando tratamos de firewall no linux cometemos o erro de chamar o firewall de iptables, porem
o firewall chama-se netfilter.
Netfilter – firewall do linux
Iptables - comando
Exemplo de regra de firewall
Iptables –t nat –A PREROUTING –i eth0 –p tcp –dport 110 -j DNAT --to-destination 192.168.0.5
Tabela :
Locais onde são armazenadas as chains, o iptables possui três tabelas embutidas são elas:
• Nat - Utilizado em tradução de endereço possui três chains (OUTPUT, POSTROUTING,
PREROUTING)
• Filter – Estabelece fltros, permitindo ou negando o trafego parar, atravez, ou saindo do
computador possui tres chains (INPUT, OUTPUT, FORWARD)
• Mangle – Utilizada para alterações especiais de pacotes suas chains são (OUTPUT,
POSTROUTING, PREROUTING, INPUT, FORWARD)
Chain:
Representa o ponto chave no fluxo do pacote
Mais preste atenção! A regra será aplicada ao pacote somente se o mesmo se enquadrar a
chain no caso “PREROUTING –i eth0 –p tcp –dport 110”
Neste caso um pacote vindo da Internet originado na placa eth0 sendo um pacote tcp com
destino a porta 110 se enquadra a essa regra .
Alvo:
Ação a ser tomada quando um pacote chega ao final da chain, temos quatro alvos embutidos no
iptables que são ACCEPT, DROP, REJECT, QUEUE :
• ACCEPT- Aceita o pacote em outras palavra permite ao pacote chegar ao seu destino.
• DROP – Nega a entrada do pacote , e não retorna nenhuma mensagem.
• REJECT - Nega a entrada do pacote , e retornam mensagem.
• QUEUE – Envia pacote ao espaço do usuário
• DNAT – Utilizado para redirecionamento de porta disponível somente na chain
PREROUTING e OUTPUT.
• SNAT - Utilizado ara compartilhar a Internet em uma rede.
A ação a ser tomada é representada pela opção “-j“ em nosso exemplo representada pela linha
“-j DNAT --to-destination 192.168.0.5” nesse caso o pacote será redirecionado(DNAT) a
maquina 192.168.0.5
Opções de sub-comandos
-A Insere uma regra na chain
-D Deleta uma regra
-E Renomeia uma chain
-F Descarrega deleta, toda todas as regras da chain ou de todas as chains se nenhuma
chain e dada
-I Insere uma regra na chain
-L Lista uma regra para chain
-N Cria uma nova chain definida pelo usuário
-P Estabelece a política padrão da chain embutida
-R Recoloca a regra na posição dada na chain
-V Mostra a versão do iptables
-X Deleta a chain definida pelo usuário
-Z Zera o contadores de pacotes e bytes para chain
-t Tabela
-C Faz uma checagem das regras existências
Opções
-s Especifica o origem do pacote. Este pode ser tanto uma rede ou host. Possíveis
combinações podem ser
-d Especifica o destino do pacote. A sintaxe é a mesma do –s
-p Protocolo usado na regra. Pode ser tcp, udp, icmp:
-i Interface de entrada, ou seja, placa de rede, modem ou interface de conexão que estará
recebendo o pacote a ser tratado.
-o Interface de saída. As sintaxes são as mesmas que -i, sendo que neste caso estará
enviando o pacote a ser tratado.
! Exclui determinado argumento
--
sport
Refere-se a porta de origem. Este deve vir acompanhado das funções -p tcp e -p udp :
--
dport
Refere-se a porta de destino. Assim como a função –sport, ela trabalha somente com a -
p tcp e -p udp. A sintaxe é similar a –sport
--to Este dado serve para definir o IP ou porta de destino numa ação SNAT ou DNAT:
--toport
Usado quando fazemos um redirecionamento de porta
-t Tabela
-m Invoca a match talvez com options adicionais
-j Determina o que fazer com os pacotes que coincidem coma regra
-c Quando combinados com os subcomandos comandos –A, -I , ou –R configura o
contador de pacotes ou bytes
-h Help
EXEMPLOS
Quando um pacote não se encaixa a nenhuma regra ele é aceito por default tenha
muito cuidado.
Para mudar isso, ou seja, bloquearmos quaisquer pacotes que não se enquadrem às
regras fazemos o seguinte:
###########
# política padrão#
###########
#filter
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD DROP
# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING DROP
# Tabela mangle
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
Abaixo temos a tabela filter responsável pela filtragem de pacotes, não podemos
esquecer que a regra INPUT filtra pacotes com destino a própria maquina firewall para
filtrar pacotes com destino a rede interna utilizamos a regra FORWARD.
##############
### FILTER ######
##############
# Aceita todo o tráfego vindo do loopback e indo pro loopback
iptables -A INPUT -i lo -j ACCEPT
# Todo tráfego vindo da rede interna também é aceito
iptables -A INPUT -s 192.168.20.0/24 -i eth0 -j ACCEPT
Para tradução de endereço, compartilhamento com a Internet, e redirecionamento de
portas utilizamos a tabela nat vista abaixo:
############
## # NAT #####
############
#Compartilhando internet
iptables –t nat -A POSTROUTING -s 192.168.20.0/24 -j MASQUERADE
### Redirecionando para o proxy
iptables -t nat -A PREROUTING -s 192.168.20.0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Para alterações feitas no cabeçalho IP usamos mangle
###############
##### Mangle #####
###############
# Define mínimo de espera para os serviços ftp, telnet, irc e DNS, isto
# dará uma melhor sensação de conexão em tempo real e diminuirá o tempo
# de espera para conexões que requerem resolução de nomes, e perceba que chamamos a
# interface de ppp0 conexão point to point
iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 21 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 23 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o ppp0 -p tcp --dport 6665:6668 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o ppp0 -p udp --dport 53 -j TOS --set-tos 0x10
Abaixo veremos algumas aplicações para um firewall netfilter.
Filtragem de Pacotes
É o tipo mais básico de uso de um firewall. Apenas filtra pacotes proibindo ou aceitando a
movimentação do mesmo em uma rede.
Accountig
Contadores de bytes o kernel automaticamente tem a função de contar pacotes e bytes para
cada rede
Rastreamento de conexão (Connection Tracking)
É um módulo do Linux utilizado para acompanhar estas conexões "ajudando" o IPTABLES a
saber que um determinado pacote é relacionado a uma conexão já existente. Primeiramente
vamos carregar na máquina que irá fazer o FTP os módulos de Connection Tracking:
modprobe ip_contrack
modprobe ip_contrack_ftp
Balanceamento de carga
Distribuição de conexões através um grupo de servidores de modo que a saída total possa ser
alcançada.
Mangling
Alteração nos campos dos pacotes dos pacotes ou payloads.
Tradução de Endereço (NAT)
Subscreve endereço de origem ou destinos e numero de porta.
Masquerading
Consiste em reescrever pacotes para que tais pacotes pareçam vir dele mesmo, utilizado para
compartilhamento com a Internet.
Port forwarding (Redirecionamento de portas)
Utiliza a opção DNAT. O firewall aceita pacotes vindos da rede externa em direção a ele, e
redireciona e os redireciona para a rede interna.
Lista regras do iptables
# iptables -L
# iptables-save > arquivo
# iptables-restore > arquivo
Não escreverei um script de firewall porque em minha opinião regras de firewall são
especificas para atendam a necessidade de cada cliente.
Mais se quiser ter um conhecimento maior sobre todas aplicações de um firewall e
suas regras mais complexas temos um treinamento sobre medida que onde serão
abordados os seguintes assuntos:
Firewall (Netfilter)
Proxy (Squid)
IDS (Snort)
Confira em nossa seção de treinamento!
Espero ter ajudado a todos.