Firewall simples com iptables

Publicado por Romulo 20/08/2003

[ Hits: 15.606 ]

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

Claro 3g Sony Ericsson md300 script conexao

COMPACTANDO DIRETORIO CRIADO PELO SARG

Gerando lista de arquivos mp3 do disco em arquivo de formato HTML

rc.firewall avançado

Google reCAPTCHA CGI-Shell


  

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