Script para Firewall - Utlizando iptables

Publicado por Marcos Estival 14/11/2003

[ Hits: 13.676 ]

Homepage: www.mgconline.com.br

Download firewall-scr




Script para Firewall, utiliza variaveis de ambiente, muito facil de mudar, quando necessário muda-se apenas as variaveis e pronto.

  



Esconder código-fonte

#
#  SCRIPT FIREWALL 
#
# By Estival
#
#!/bin/sh
# 
# Adicionando modulos do iptables (OBS: remova o serviço de iptables e ipchains na inicialização)
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp

# Definicoes das Variaveis de Ambiemte, utilize a IR0 para interface da rede local, e IR1 para interface
# externa, se a mesma for Speedy ou qualquer outra que usa ppp, coloque nesta variavel a interface que 
# esta sendo utilizada, exemplo ppp0, eth1
# RINTERNA coloque o endereço de sua rede interna
# ENDREMOTO coloque o endereço de internet valido para acesso via SSH caso vai fazer conexões
# remotas neste host para gerencia-lo
IR0="eth0"
IR1="ppp0"
RINTERNA="10.62.3.0/24"
ENDREMOTO= 200.200.200.100
UP_PORTS="1024:"
D_PORTS=":1024"

##### Definicao 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
     
##### Protecao 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 "4096" > /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 tambem aceito
iptables -A INPUT -s $RINTERNA -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 
# Porta 22 (SSH) 
iptables -A INPUT -i $IR1 -s 200.193.231.163 -p tcp --dport 22 -j ACCEPT

# Liberando Portas Altas
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 e 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 servicoos serao registrados no syslog
# do sistema e serao bloqueados pelas 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 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: netbios "
iptables -A INPUT -i $IR1 -p udp --dport 137:139 -j LOG --log-level 6 --log-prefix "FIREWALL: netbios "

# Bloqueia qualquer tentativa de nova conexao de fora para esta maquina
iptables -A INPUT -i $IR1 -m state --state ! ESTABLISHED,RELATED -j LOG --log-level 6 --log-prefix "FIREWALL: IN "
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 (somente para proxy  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



# Exemplo de redirecionamento de portas para HOST na Rede interna
iptables -t nat -A PREROUTING -p tcp -i $IR1 --dport 4899 -j DNAT --to 10.62.3.55:4899
iptables -t nat -A PREROUTING -p udp -i $IR1 --dport 4899 -j DNAT --to 10.62.3.55:4899

# Masquerade
iptables -t nat -A POSTROUTING -o $IR1 -j MASQUERADE



Scripts recomendados

Script para modificar Encoding de UTF-8 para ISO-8859-1

Agenda de Contatos - Shell Script + MYSQL

Administração de VirtualBox com ShellScript

Backup Facil e rapido

Calculadora de host de uma rede


  

Comentários
[1] Comentário enviado por Andracom em 15/12/2003 - 20:06h

Apenas gostaria de mensionar que o real autor deste firewall script, é Gleydson M. Silva, um grande contribuidor da causa linux, parte se sua obra pode ser encontrada em no guia focaLinux:
http://focalinux.cipsga.org.br/guia/avancado/ch-fw-iptables.htm

pessoal vamos pelo menos preservar o nome do autor e fazer referencias das fontes de consulta como pede a GLP.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts