Script para Firewall - Utlizando iptables

Publicado por Marcos Estival 14/11/2003

[ Hits: 13.771 ]

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

Exemplos de scripts com dialog

Geração de gráfico em shell script

Cálculo de Horas

Um super limpador do sistema KDu

Enviar mensagens Via Net Send no Linux


  

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