Iptables (rc.firewall)

rc.firewall avançado

Categoria: Segurança

Software: Iptables

[ Hits: 20.932 ]

Por: Eduardo Vieira Mendes


Script de firewall com iptables bem comentado e de fácil utilização.

Instalação no slackware:

Copie-o para a pasta /etc/rc.d/

# cp rc.firewall /etc/rc.d

Transforme-o em executável:

# chmod +x /etc/rc.d/rc.firewall

e pronto.

Na próxima inicialização do sistema ele estará rodando.

O uso é bem simples: Se não é passado nenhum parâmetro ele inicia o firewall.

Os parâmetros são:

start - inicia
stop - para
restart - reinicia

Espero que gostem.

Abraços


#!/bin/sh
############################################
# rc.firewall
# Criado por:
# Eduardo Vieira Mendes
# eduardovmendes@gmail.com
# LUS: 298813
# Uso: rc.firewall start|stop|restart
############################################

firewall_start() {
echo "==========================================="
echo "| :: SETANDO A CONFIGURAÇÃO DO IPTABLES :: |"
echo "==========================================="

# Limpa as regras
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
echo "Limpando todas as regras .................[ OK ]"

# Definindo a política default das cadeias
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
echo "Setando as regras padrão .................[ OK ]"

# Desabilitando o tráfego IP
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "Setando ip_foward ........................[ OK ]"

# Configurando a proteção anti-spoofing
for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do
        echo "1" > $spoofing
done
echo "Setando a proteção anti-spoofing .........[ OK ]"

# Impedindo que um atacante possa maliciosamente alterar alguma rota
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "Setando anti-redirecionamento ............[ OK ]"

# Utilizado em diversos ataques, isso possibilita que o atacante determine o "caminho" que seu
# pacote vai percorrer (roteadores) até seu destino. Junto com spoof, isso se torna muito perigoso.
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "Setando anti_source_route.................[ OK ]"

# Proteção contra responses bogus
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "Setando anti-bogus_response ..............[ OK ]"

# Proteção contra ataques de syn flood (inicio da conexão TCP). Tenta conter ataques de DoS.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo "Setando proteção anti_synflood ...........[ OK ]"

# Carregando os modulos do iptables
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_MASQUERADE
echo "Carregando módulos do iptables ...........[ OK ]"

# Agora, vamos definir o que pode passar e o que não pode

# Cadeia de entrada
# LOCALHOST - ACEITA TODOS OS PACOTES
iptables -A INPUT -i lo -j ACCEPT

# PORTA 80 - ACEITA PARA A REDE LOCAL
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

# PORTA 22 - ACEITA PARA A REDE LOCAL
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# No iptables, temos de dizer quais sockets são validos em uma conexão
iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
echo "Setando regras para INPUT ................[ OK ]"

################################
# Cadeia de reenvio (FORWARD).

# Primeiro, ativar o mascaramento (nat).
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "Ativando mascaramento de IP ..............[ OK ]"

# Agora dizemos quem e o que pode acessar externamente
# No iptables, o controle do acesso a rede externa e feito na cadeia "FORWARD"

# PORTA 3128 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 3128 -j ACCEPT

# PORTA 53 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p udp --dport 53 -j ACCEPT

# PORTA 110 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPT

# PORTA 25 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT

# PORTA 21 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 21 -j ACCEPT

# No iptables, temos de dizer quais sockets são válidos em uma conexão
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
echo "Setando regras para FOWARD ...............[ OK ]"

# Finalmente: Habilitando o trafego IP, entre as Interfaces de rede
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "Setando ip_foward: ON ....................[ OK ]"
echo "Firewall configurado com sucesso .........[ OK ]"
echo

}

firewall_restart() {
   firewall_start
}

firewall_stop() {

echo "==========================================="
echo "| ::       DESLIGANDO FIREWALL          :: |"
echo "==========================================="

# Limpa as regras
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
echo "Limpando todas as regras .................[ OK ]"

}

case "$1" in
'start')
  firewall_start
  ;;
'stop')
  firewall_stop
  ;;
'restart')
  firewall_restart
  ;;
*)
  firewall_start
esac
  


Comentários
[1] Comentário enviado por marcos_alpha em 05/05/2007 - 11:14h

Socorro!!!

olá pessoal! eu sou novo no mundo linux estou precisando de uma maozinha.

minha situação é a seguinte:

tenho duas maquinas...

uma com o fedora 4, "em modo texto", com 2 placas de rede. "servidor"
e outro com o win XP. "estação"

minha internet é a cabo, vem um cabo direto do provedor, com ip fixo.


eth0 "e a Internet"

IP- 192.168.20.199
MASK- 255.255.255.0
GATEWAY- 192.168.20.254
DNS 192.168.20.254

eth1
IP-192.168.0.1
MASK-255.255.255.0


no Xp

ip- 192.168.0.2
mask 255.255.255.0
gateway-192.168.0.1
dns-192.168.20.254

a rede tá funcionando só falta compartilhar. eu pingo no servidor normal

eu gostaria de compartilhar a internet para o WIN XP. com IPTABLES.

como eu faço o compartilhamento?




fico grato a quem poder mim ajudar

abraços a todos.

[2] Comentário enviado por andrei_scaratti em 05/05/2007 - 11:21h

cara parece ser legal, funcional.

Estou iniciando em iptables, foi muito bom para tirar alguams duvidas

[3] Comentário enviado por brunosalmito em 11/05/2007 - 11:38h

Ai gostei muito bem comentado e estruturado sem dúvidas, já esta no meus favoritos...

[4] Comentário enviado por riick em 16/05/2007 - 21:29h

Muito bom, já coloquei no meu favoritos também.

[5] Comentário enviado por slaypher em 17/05/2007 - 23:36h

Olá,

Poderia tirar uma dúvida? Mesmo tirando o redirecionamento, como você fez no seu script, ainda sim funcionaria a tabela NAT e FORWARD?

# Desabilitando o tráfego IP
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "Setando ip_foward ........................[ OK ]"

Pois creio que com isso, o repasse de pacotes não seria possível, mesmo configurando as tabelas do iptables.

[]'s

[6] Comentário enviado por fredwind em 18/05/2007 - 16:00h

muito bem elaborado, simples e eficiente. Uma boa media é logar os pacotes trafegados usando -j LOG, isto facilita na hora de analizar os logs do iptables e ver quem ou o que tentou algo atravez de derminada porta! ;).

[7] Comentário enviado por leandrobhbr em 21/05/2007 - 21:54h


# PORTA 80 - ACEITA PARA A REDE LOCAL
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

# PORTA 22 - ACEITA PARA A REDE LOCAL
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT


Ola dessa forma vc está liberando a porta 80 e 21 para toda a rede...

eu aki fiz essa liberação pela chain FORWARD... ou seja meu servidor não acessa a internet mas os computadores clientes sim...

Vc usou a política INPUT como DROP... boa escolha... mas o que vc acha da política acima... é segura?

espero resposta...

desculpe se estiver errado??


[8] Comentário enviado por marceloespindola em 07/07/2007 - 15:26h

Pessoal estou escrevendo um artigo aqui para o viva o linux sobre scrippt de firewall, ele está completo pois levei muito tempo para desenvolve-lo e tinha objetivo de reunir as principais soluções e dúvidas sobre firewall para este artigo, mas como quero construir um bom artigo ainda está em fase de construção para o vivaolinux, entretanto estou disponibilizando no endereço

http://marcelolinux.blogspot.com/2007/07/meu-primeiro-artigo-do-vivaolinux.html

os arquivos e o artigo referente a script de firewall completo.

[9] Comentário enviado por comfaa em 28/10/2008 - 10:45h

muito bom !!


Contribuir com comentário

  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts