Firewall simples com iptables

Publicado por Romulo 20/08/2003

[ Hits: 15.695 ]

Download firewall.txt




Este é script simples usando iptables pode ser utilizado em conjunto com um squid em modo transparente.

  



Esconder código-fonte

#
# Script Simples para Firewall com opção de proxy transparente
#
#!/bin/sh
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp

# Definicoes das Variaveis

# Variavel das interfaces de rede
IR0="eth0"
IR1="eth1"

# Estes são os endereços de sua rede
RINTERNA="192.168.0.0/24"
RFILIAL1="192.168.1.0/24"
RFILIAL2="192.168.2.0/24"

# Portas Altas e baixas
UP_PORTS="1024:"
D_PORTS=":1024"

##### Definição de Policiamento #####
# Tabela filter
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
     
##### Proteçaõ contra IP Spoofing #####
     for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
      echo 1 >$i
     done
     
##### Ativamos o redirecionamento de pacotes (requerido para NAT) #####
     echo "1" >/proc/sys/net/ipv4/ip_forward
     echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max

     
###############################################################
#                      Tabela filter                          #
###############################################################
     
##### Chain INPUT #####
# Aceita todo o trafego vindo do loopback e indo pro loopback
iptables -A INPUT -i lo -j ACCEPT

# Todo trafego vindo da rede interna e das Filiais tambem sao aceitos 
iptables -A INPUT -s $RINTERNA -i $IR0 -j ACCEPT
iptables -A INPUT -s $RFILIAL1 -i $IR0 -j ACCEPT
iptables -A INPUT -s $RFILIAL2 -i $IR0 -j ACCEPT

# Liberacao de PING (ICMP) na Interface Externa com certa limitacao
iptables -A INPUT -i $IR1 -p icmp -m limit --limit 2/s -j ACCEPT

# Liberacao de Portas de Servico para interface externa

# Porta 22 (SSH) 
iptables -A INPUT -i $IR1 -p tcp --sport 22 -j ACCEPT

# Liberando Portas Altas e DNS para interface externa
iptables -A INPUT -i $IR1 -p udp --sport 53 -j ACCEPT
iptables -A INPUT -i $IR1 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i $IR1 -p udp --dport $UP_PORTS -j ACCEPT
iptables -A INPUT -i $IR1 -p tcp --dport $UP_PORTS -j ACCEPT

# Qualquer outra conexao desconhecida é imediatamente registrada e derrubada
iptables -A INPUT -j LOG --log-level 6 --log-prefix "FIREWALL: INPUT "
iptables -A INPUT -j DROP
     
# A tentativa de acesso externo a estes serviços serão registrados no syslog
# do sistema e serão bloqueados regras abaixo.
iptables -A INPUT -i $IR1 -p tcp --dport 23 -j LOG --log-level 6 --log-prefix "FIREWALL: telnet"
iptables -A INPUT -i $IR1 -p tcp --dport 110 -j LOG --log-level 6 --log-prefix "FIREWALL: pop3 "
iptables -A INPUT -i $IR1 -p tcp --dport 113 -j LOG --log-level 6 --log-prefix "FIREWALL: identd "
iptables -A INPUT -i $IR1 -p tcp --sport 21 -j LOG --log-level 6 --log-prefix "FIREWALL: ftp "
iptables -A INPUT -i $IR1 -p udp --dport 111 -j LOG --log-level 6 --log-prefix "FIREWALL: rpc"
iptables -A INPUT -i $IR1 -p tcp --dport 111 -j LOG --log-level 6 --log-prefix "FIREWALL: rpc"
iptables -A INPUT -i $IR1 -p tcp --dport 137:139 -j LOG --log-level 6 --log-prefix "FIREWALL: samba "
iptables -A INPUT -i $IR1 -p udp --dport 137:139 -j LOG --log-level 6 --log-prefix "FIREWALL: samba "

# Bloqueia qualquer tentativa de nova conexão de fora para esta maquina
iptables -A INPUT -i $IR1 -m state --state ! ESTABLISHED,RELATED -j LOG --log-level 6 --log-prefix "FIREWALL: IN eth1 "
iptables -A INPUT -i $IR1 -m state --state ! ESTABLISHED,RELATED -j DROP


# Qualquer outro tipo de trafego é aceito
iptables -A INPUT -i $IR1 -j ACCEPT
     
#######################################################
#                   Tabela nat                        #
#######################################################
     
##### Chain PREROUTING #####

# Redirecionando Porta 80 para SQUID Transparente
iptables -t nat -A PREROUTING -p tcp -i $IR0 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -p udp -i $IR0 --dport 80 -j REDIRECT --to-port 3128

# Masquerade (NAT)
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Scripts recomendados

Compartilhando a Internet com Iptables

Cálculo de Horas

Deletar usuário no Linux

Conversor de Dicionarios do Babylon

Backup bases de dados Firebird com envio via FTP e local


  

Comentários
[1] Comentário enviado por jbigu em 12/06/2006 - 10:15h

Cara, parabéns. Muito bem comentado. Simples. Muito bom. Deus abençoe a tí.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts