[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: Problema na rede



#!/bin/sh

# --------------------------------------------------------------------------
----
VERSAO="1.02"
ULTALT="Janeiro 2001"
# IPCHAINS FIREWALL por Carlos Fernando Scheidecker Antunes
# e-mail nando@antunes.eti.br
#
# Esse firewall possibilita conectividade das suas redes internas 1 e 2 para
# a internet e vice versa com varias medidas de seguranca.
# Alem disso, permite a conectividade entre as duas redes internas.
# Esse script de Firewall e derivado do firewall que construi para rodar
# na empresa usando um ip fixo via ADSL de 256kbps. Esse firewall foi
# montado num servidor Linux usando IPCHAINS com 3 NICs, eth0 conectado
# ao modem ADSL, eth1 conectado a rede interna 1 e eth2 conectado a rede
# interna 2.
#
# Pode ser usado com IP variaveis (fornecidos por DHCP) no caso de
# cable modem ou ip discado normal ao seu provedor.Tudo esta devidamente
# documentado para facilitar de acordo com o seu tipo de acesso.
#
# Esse script e o resultado de pesquisas na internet e estudo de publicacoes
# sobre o assunto.
#
# Condicoes de uso :
# Nao me responsabilizo ou dou qualquer garantia com
# relacao ao uso desse script.A responsabilidade de
# uso do script e TOTAL do usuario sendo que nao irei
# me responsabilizar por nenhum dano direto ou
# indireto. Use-o sob sua responsabilidade.
# Esse script e fornecido gratuitamente e nao me
# obriga a fornecer qualquer tipo de assistencia ou
# suporte.Fique a vontade para enviar seus comentarios
# ou agradecimentos por e-mail.
#
# A configuracao abaixo e voltada para uso com DSL com caracteristicas :
#
# a) A interface externa, conectada ao DSL e a " eth0"
# b) O endereco IP externo e fixo, IP da eth0
# c) A rede interna 1 e acessivel via "eth1"
# d) A rede interna 2 e acessivel via "eth2"
# e) Os enderecos das redes internas estao dentro dos limites
# de rede privada segundo a RFC1918.
# Rede interna 1 : 192.168.1.0/24
# Rede interna 2 : 192.168.2.0/24
# f) Por uma questao de protecao, estaremos usando
# endereco da rede externa como sendo 192.168.0.0/26 (reservado)
# Altere o endereco de acordo com os IPs validos fornecidos pelo
# seu provedor.
# Recomendacoes :
# - Utilizar Kernel maior ou igual a 2.2.16. Versoes anterioes
# possuem bugs de seguranca que podem comprometer seu sistema.
# Para saber qual e a sua versao utilize o comando "uname -r".
#-----------------------------------------------------------------------
# Para utilizar ou modificar o script para adequar ao seu uso voce
# precisa, basicamente, alterar as seguintes variaveis :
# EXTIF = Interface externa, eth0 no meu caso mas pode ser ppp0 no seu.
# EXTIP = IP da interface externa, caso seja fixo. Para ip variavel veja
# comentarios abaixo.
# EXTBROAD = Endereco de BroadCast da rede externa, pode ser obtido rodando
# ifconfig. O endereco de BroadCast e o ultimo endereco IP de
# uma subnet.Especificar esse endereco apenas se seu ip for
# fixo.
# EXTGW = Endereco do gateway da rede externa. Deve ser obtido com
# seu provedor ou via script abaixo.
# Rede Interna 1
# INTIF = Interface interna 1, eth1 no meu caso
# INTIP = IP da interface interna 1
# INTLAN = Endereco da rede interna 1 com subnet mask
# Rede Interna 2
# INTIF2 = Interface interna 2, eth2 no meu caso
# INTIP2 = IP da interface interna 2
# INTLAN2 = Endereco da rede interna 2 com subnet mask
#--------------------------------------------------------------------

#********************************************************************
# Inicializando
#********************************************************************
echo -e "\n\nCarregando IPCHAINS Firewall $VERSAO de $ULTALT"
echo
"----------------------------------------------------------------------"

#--------------------------------------------------------------------
# Declaracao de variaveis
#--------------------------------------------------------------------

# Interface e enderco de loopback
#
LOOPBACKIF="lo"
LOOPBACKIP="127.0.0.1"

# Interface Externa.
#
# Para usuarios de PPP a interface externa deve ser algo como ppp0.
# Para usuarios com mais de um modem, ou interface ppp veja codigo
# abaixo. O firewall deve ser executado depois do script
# /etc/ppp/ip-up.
#
#if [ "x$1" != "x" ]; then
# EXTIF=$1
#else
# EXTIF="ippp0"
#fi
#
# Interface Externa
EXTIF="eth0"

# Verificar se a interface externa esta habilitada :
if ! /sbin/ifconfig | grep $EXTIF > /dev/null; then
echo -e "\n\nInterface Externa nao esta habilitada.Abortando."
exit 1;
fi
echo Interface Externa: $EXTIF

# IP da interface externa :
# A maioria dos acessos discados ppp atribui enderecos dinamicos
# ao modem.
# Para usuarios de cable modem :
# No caso de cable modems, alguns provedores utilizam DHCP e
# alteram seu endereco de IP pelo menos uma vez ao dia. Nesse
# caso, crie um script para parar e reinicializar o seu firewall
# e programe-o atraves do crond.
# No caso de IPs dinamicos e necessario colocar uma regra no firewall
# para entender/obter o novo endereco IP toda vez que um novo IP for
# fornecido pelo provedor. Especialmente util para usuarios de cable modem.
# Utilize o DHCPd editando o arquivo ifup em /sbin. Veja man pages.
#
# Script para obter o endereco da interface externa em caso de ip dinamico :
#
# EXTIP=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $2) ; print
$2 }'`
#
#if [ "$EXTIP" = '' ]; then
# echo "Abortando.Nao foi possivel determinar o IP da $EXTIF .Problema de
DHCP ou PPP?"
# exit 1
#fi
# Rede Externa
EXTIP="192.168.0.13"
echo IP Externo: $EXTIP

# Funcao para obter o Endereco do broadcast da rede externa
# "apenas para IPs dinamicos"
#
#EXTBROAD=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $3) ; print
$3 }'`
#
# Rede Externa
EXTBROAD="192.168.0.63"
echo BroadCast Externo: $EXTBROAD

# Funcao para obter Gateway da rede Externa
#
#EXTGW=`/sbin/route -n | grep -A 4 UG | awk '{ print $2}'`
# Rede Externa
EXTGW="192.168.0.1"
echo Default GW: $EXTGW

echo " --- "

# Interface Interna 1.
INTIF="eth1"
echo Interface Interna 1: $INTIF

# IP da interface interna 1
INTIP="192.168.1.1"
echo IP Interno 1: $INTIP

# IP e subnet mask da rede interna 1
INTLAN="192.168.1.0/24"
echo Rede Interna 1: $INTLAN

echo " --- "

# Interface Interna 2.
INTIF2="eth2"
echo Interface Interna 2: $INTIF2

# IP da interface interna 2
INTIP2="192.168.2.20"
echo IP Interno 2: $INTIP2

# IP e subnet mask da rede interna 2
INTLAN2="192.168.2.0/24"
echo Rede Interna 2: $INTLAN2

echo " --- "

# IP e mascara para todos os enderecos internet
UNIVERSE="0.0.0.0/0"

# Mascara de IP para todas as transmissoes de broadcast
BROADCAST="255.255.255.255"

# Portas IP altas nao privilegiadas.
UNPRIVPORTS="1024:65535"

# Portas do sistema X Windows (TCP).
XWINDOWS_PORTS="6000:6010"


# Caso voce precise especificar uma lista de hosts externos
# permitidos ou uma lista de subnets permitidas.
#
# Caso voce deseje permitir uma rede inteira, basta colocar
# o ultimo octeto com .0 e a subnet mask. Por exemplo :
#
# HOSTSEG="200.204.0.0/26"
#
#HOSTSEG="200.204.0.40"
#echo Host Seguro 1 IP: $HOSTSEG
#HOSTSEG2="200.204.0.41"
#echo Host Seguro 2 IP: $HOSTSEG2
#HOSTSEG3="200.204.0.42"
#echo Host Seguro 3 IP: $HOSTSEG3
#HOSTSEG2="200.204.0.43"
#echo Host Seguro 4 IP: $HOSTSEG4

# Enderecos IP para Port Forwarding
#
# Port forwarding, habilita trafico externo a conectar diretamente a sua
# maquina mascarada interna, acessivel apenas na rede interna.
# Uma aplicacao seria o acesso a um servidor FTP protegido atras de uma
# mascara. Variaveis PORTFW, descomentar se for necessario.
#
#PORTFWIP1="192.168.1.20"
#echo IP PortForward 1 : $PORTFWIP1
#PORTFWIP2="192.168.2.12"
#echo IP PortForward 2 : $PORTFWIP2
#PORTFWIP3="192.168.1.21"
#echo IP PortForward 3 : $PORTFWIP3


# TCP/IP addresses of INTENRAL hosts network allowed to directly
# connect to the Linux server. All internal hosts are allowed
# per default.
# Enderecos da rede interna que terao acesso a esse firewall. O padrao e
# todos os hosts da rede interna estao habilitados.
#
# Coloque o IP e crie variaveis com nomenclatura HOST<rede><numero>IP
#
#HOST11IP="192.168.1.10"
#echo IP do Host Interno 1 da rede 1 : $HOST11IP
#HOST21IP="192.168.2.10"
#echo IP do Host Interno 1 da rede 2 : $HOST21IP

# Log do sistema firewall.
#
# Descomenta a linha " " e comente a -"l" para desabilitar o log.
#
# O arquivo de log pode ser encontrado no arquivo /var/log/messages.
# Caso voce so queria o log em algumas regras, simplesmente apague
# "$LOGGING" nas regras que nao deseja logar.
#
# LOGGING=" "
LOGGING="-l"

echo " --- "

echo
"----------------------------------------------------------------------"

#--------------------------------------------------------------------
# Seccao de Debug do Firewall
#--------------------------------------------------------------------
# Se voce esta tendo problemas com seu firewall, descomente as linhas
# abaixo e reinicialize seu script.
#
# O arquivo de debug encontra-se em /tmp/rc.firewall.dump
#--------------------------------------------------------------------
#
#echo " - Debugging."
#echo IP de Loopback : $LOOPBACKIP > /tmp/rc.firewall.dump
#echo Nome da interface de Loopback : $LOOPBACKIF >> /tmp/rc.firewall.dump
#echo Nome da interface interna 1 : $INTIF >> /tmp/rc.firewall.dump
#echo IP da interface interna 1 : $INTIP >> /tmp/rc.firewall.dump
#echo Endereco da rede interna 1 : $INTLAN >> /tmp/rc.firewall.dump
#echo Nome da interface interna 2 : $INTIF2 >> /tmp/rc.firewall.dump
#echo IP da interface interna 2 : $INTIP2 >> /tmp/rc.firewall.dump
#echo Endereco da rede interna 2 : $INTLAN2 >> /tmp/rc.firewall.dump
#echo ----------------------------------------------------- >>
/tmp/rc.firewall.dump
#echo Nome da interface Externa : $EXTIF >> /tmp/rc.firewall.dump
#echo IP da interface Externa : $EXTIP >> /tmp/rc.firewall.dump
#echo IP de broadcast da interface Externa : $EXTBROAD >>
/tmp/rc.firewall.dump
#echo IP do default gateway da Interface Externa : $EXTGW >>
/tmp/rc.firewall.dump
#echo ----------------------------------------------------- >>
/tmp/rc.firewall.dump
# Liste os HOSTSEG, Hosts seguros
#echo Host Externo segruo : $HOSTSEG >> /tmp/rc.firewall.dump

#--------------------------------------------------------------------
# Geral
#--------------------------------------------------------------------
# Efetua processamentos gerais como configurar a rota de multicast
# e hackeamento de endereco DHCP.
#
# Multicast serve para transmitir dados para aplicacoes multimidia.
# Opcao de Multicast e opcional.
#
#echo " - Adicionando rota de multicast."
#/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev $EXTIF


# Desabilitando ataques de IP Spoofing.
#
#
echo " - Desabilitando ataques de IP Spoofing."
for file in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo "2" > $file
done

# Descomente se estiver usando um endereco dinamico
#*
#echo " - Habilitando hackeamento de endereco TCP/IP dinamico."
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr


# Habilitando protecao a Cookie TCP SYN
#
echo " - Habilitando protecao a Cookie TCP SYN."
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Certifique que as configuracoes de diversos ICMP sanity estao presentes.
#
echo " - Habilitando configuracoes de ICMP."

# Desabilitando protecao a echo de broadcast ICMP.
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Habilitando protecao a mensagem de "bad error"
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Desabilitando redirecionamentos de ICMP
for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo "0" > $file
done
#

# Certifique que pacotes roteados na origem foram descartados
# Se estiver rodando IPROUTE2, sera necessario desabilitar isso.
#
echo " - Certifique que pacotes roteados na origem foram descartados "
for file in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo "0" > $file
done

# Logar pacotes spoofed, roteados na origem ou redirecionados.
#
echo " - Logar pacotes spoofed, roteados na origem ou redirecionados "
for file in /proc/sys/net/ipv4/conf/*/log_martians; do
echo "1" > $file
done

#--------------------------------------------------------------------
# Configuracoes de Tipo de Servico (TOS - Type of Service)
#--------------------------------------------------------------------
# Voce pode dizer a internet como lidar com o seu trafico.
#
# -t 0x01 0x10 = Delay Minimo
# -t 0x01 0x08 = Throughput Maximo
# -t 0x01 0x04 = Confiabilidade Maxima
# -t 0x01 0x02 = Custo Minimo
#
# Por exemplo :
#
# Configuracao para FTP, SSH e TELNET
# /sbin/ipchains -A output -p tcp -d 0/0 21:23 -t 0x01 0x10
#
# Configuracao para Web WWW
# /sbin/ipchains -A output -p tcp -d 0/0 80 -t 0x01 0x10


#--------------------------------------------------------------------
# Timeouts de Masquerading
#--------------------------------------------------------------------
# Determinar valores de timeout para a sessao de masquerading.
#
# Explicacao : 7200 = 7200 segundos (2 hrs) para sessoes TCP
# 10 = 10 segundos para trafico TCP/IP apos recebimento
# do pacote "FIN"
# 60 = 60 segundos para timeout do trafico UDP
# Para usuarios de ICQ aumente o valor para trafico UDP para 180 segundos
#
echo " - Alterando timeouts de IP masquerading."
/sbin/ipchains -M -S 7200 10 60

#--------------------------------------------------------------------
# Modulos de Masquerading
#--------------------------------------------------------------------
# A maioria de aplicativos TCP/IP funcionam bem atras de um servidor
# IP masquerading Linux. Alguns aplicativos precisam de modulos
# especiais para gerenciar o trafico de entrada e saida devidamente.
# Apenas descomente os modulos que ira efetivamente utilizar.
# O modulo FTP sera carregado.
#
# Verifique os modulos presentes no seu sistema no diretorio
# /lib/modules/<versao do seu kernel>/ipv4/
#--------------------------------------------------------------------
echo " - Carregando modulos de masquerading."

#/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_ftp
#/sbin/modprobe ip_masq_irc
#/sbin/modprobe ip_masq_quake
#/sbin/modprobe ip_masq_raudio
#/sbin/modprobe ip_masq_vdolive
#/sbin/modprobe ip_masq_icq


#--------------------------------------------------------------------
# Politicas default
#--------------------------------------------------------------------
# Configure todas as politicas default (padrao) para REJEITAR (REJECT)
# e descarte todas as regras antigas.
#--------------------------------------------------------------------

# Alterar politicas padrao para rejeitar REJECT
#
# Fazemos isso para, posteriormente, permitir qual o trafico que iremos
# permitir para OUT (saida) e In (entrada). Qualquer outro tipo de trafico,
# a nao ser que seja especificamente determinado, sera bloqueado.
#
echo " - Configurar politicas padrao para REJECT"
/sbin/ipchains -P input REJECT
/sbin/ipchains -P output REJECT
/sbin/ipchains -P forward REJECT

echo " - Descartar todas as regras antigas e configurar todas as "
echo " politicas default para REJECT."
#
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward


#********************************************************************
# Regras de entrada (input)
#********************************************************************
echo
"----------------------------------------------------------------------"
echo "Regras de Entrada (Input) : "

#--------------------------------------------------------------------
# Trafico de entrada na rede Interna
#--------------------------------------------------------------------
# Essa parte controla o fluxo do trafico de entrada (input) dentro
# da rede interna.
# Todo o trafico da rede local e valido.
# Se voce precisar controlar qual trafico e permitido tera que configurar
# linhas individuais com ACCEPT para cada endereco IP.
#
# Voce pode desejar permitir apenas trafico numa direcao mas nao na
contraria.
# Uma aplicacao seria permitir acesso a um servidor Web externo mas nao o
# acesso proveniente desse servidor. O correto e usar a flag -y.
#--------------------------------------------------------------------
echo " - Determinar filtros de trafico de entrada (INPUT) na rede interna."

# Servidor DHCP
#
# Se voce configurou um servidor DHCP na sua maquina Linux para servir
# enderecos IP a rede interna, voce tera que habilitar essa seccao.
#
# Esse e um exemplo de como permitir o fluxo do trafico de entrada na
# rede interna.
#
# echo " Parametro Opcional : Servidor DHCPd"
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p udp -s $UNIVERSE bootpc -d
$BROADCAST/0 bootps
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $UNIVERSE bootpc -d
$BROADCAST/0 bootps
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p udp -s $UNIVERSE bootpc -d
$BROADCAST/0 bootps
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $UNIVERSE bootpc -d
$BROADCAST/0 bootps


#--------------------------------------------------------------------
# Acesso explicito a partir dos hosts da rede interna.
#--------------------------------------------------------------------
# Esse e um exemplo de como permitir apenas que hosts especificos
# na rede interna possam acessar os servicos de firewall.
#
# Exemplos de permissao para acesso de FTP, dados de FTP, SSH e TELNET.
#--------------------------------------------------------------------
#echo " - Configurando flitros de input para hosts especificos na rede
interna."

# Host1 : Permita que o ip do host interno $HOST11IP conecte ao servidor
linux
#
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
telnet
# mesma coisa para rede 2 dentro da rede 2
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP
ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP
ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP
ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP
telnet

# Host2 : Permita que o ip do host interno $HOST12IP conecte ao servidor
linux
#
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
telnet
# mesma coisa para rede 2
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP
ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP
ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP
ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP
telnet

#--------------------------------------------------------------------
# Trafico proveniente da interface externa
#--------------------------------------------------------------------
# Essa regra ira controlar o trafico especifico cuja entrada e permitida
# proveniente da interface externa.
#
#--------------------------------------------------------------------
#
echo " - Configurando filtro de entrada para trafico proveniente da
interface externa."

# Clientes de DHCP.
#
# Se seu provedor nao lhe designou um IP fixo, seu IP e dinamico.
# Portanto, voce tera que habilitar as linhas abaixo. Geralmente para
# usuarios de cable modem ou modems convencionais essa e a situacao.
#*
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE bootps -d
$BROADCAST/0 bootpc
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE bootps -d
$BROADCAST/0 bootpc

# FTP : Pemite usuarios externos (da internet) conectar ao seu servidor
linux
# para servicos FTP.
#
# echo " Parametro opcional : Servidor FTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
ftp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
ftp-data

# IRC : Permite usuarios externos (na internet) conectar ao seu servidor
Linux
# para servicos IRC.
# Verifique se o seu IRCd esta definido na tabela de servicos no arquivo
# /etc/services
#
# echo " Parametro Opcional : servidor IRC"
# /sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
ircd

# HTTP : Permite usuarios externos (na internet) conectar ao seu servidor
Linux.
#
# echo " Parametro Opcional : servidor HTTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
http

# HTTPS : Permite usuarios externos (na internet) conectar ao seu servidor
Linux.
#
# echo " Parametro Opcional : servidor HTTPS"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
https


# Advanced ICMP: Some users prefer that their UNIX box NOT ping, etc.
# This is easy enough to do but be sure you know what you
# are doing.
# ICMP avancado : Alguns administradores preferem que seu servidor Linux
# nao permita ping, etc.
#
# Consulte o paper sobre filtragem de ICMP para saber mais :
# http://www.sys-security.com/archive/papers/ICMP_Scanning_v2.0.pdf
#
# Quando um firewall e configurado para rejeitar trafico de ICMP,
# o trafico resultante de reply e automaticamente rejeitado.
# Rode "/sbin/ipchains -h icmp" para verificar codigos de icmp suportados.
#
# Nao responda (reply) a ECHO REPLYs (tipo 0) vindos pela internet.
#
# echo " Parametro Opcional : Filtro de entrada de ICMP ECHO-REPLY"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type echo-reply $LOGGING
#
# Nao responder a requisicoes TCP/UDP TRACEROUTE da internet.
#
# echo " Parametro Opcional : Filtro de entrada TCP/UDP TRACEROUTE"
#
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
33434 $LOGGING
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP
33434 $LOGGING
#
# Nao responder a requisicoes TCP/UDP TRACEROUTE da Internet para clientes
# MS que utilizam ICMP ECHO e nao TCP/UDP.
#
# echo " Parametro Opcional : Filtro de entrada ICMP TRACEROUTE (MS)"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type destination-unreachable $LOGGING
#
# Nao responder a DESTINATION-UNREACHABLE (tipo 3) da internet.
#
# echo " Parametro Opcional : filtro de entrada ICMP
DESTINATION-UNREACHABLE"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type destination-unreachable $LOGGING
#
# Nao responder a SOURCEQUENCH (tipo 4) da internet.
#
# echo " Parametro Opcional : filtro de entrada ICMP SOURCEQUENCH"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type source-quench $LOGGING
#
# Nao responder a nenhuma forma de refirecionamento de pacotes (tipo 5)
#
echo " Parametro Opcional : filtro de entrada ICMP REDIRECT"
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type redirect $LOGGING
#
# Nao permitir requisicoes de PING (tipo 8) da internet.
#
# echo " Parematro Opcional : filtro de entrada ICMP ECHO"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type echo-request $LOGGING
#
# Nao responder a pacotes do tipo (Time to Live expirado) TTL-Expired.
#
# echo " Parametro Opcional : filtro de entrada ICMP TTL-EXPIRED"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type time-exceeded $LOGGING
#
# Nao responder a pacotes do tipo ICMP PARAMETER-PROBLEM.
#
# echo " Parametro Opcional : filtro de entrada ICMP PARAMETER-PROBLEM"
# /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type parameter-problem $LOGGING
#
# Nao responder a pacotes ICMP TIMESTAMP (tipos 13 e 14)
#
echo " Parametro Opcional : filtro de entrada ICMP TIMESTAMP"
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type timestamp-request $LOGGING
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type timestamp-reply $LOGGING
#
# Nao responder a pacotes ICMP ADDRESS MASK (tipo 17 e 18).
#
echo " Parametro Opcional : filtro de entrada ICMP ADDRESS-MASK"
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type address-mask-request $LOGGING
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d
$EXTIP --icmp-type address-mask-reply $LOGGING


# ICMP Geral : Permite pacotes ICMP a partir de todos enderecos externos.
#
# Desabilitar pacotes ICMP por regras de firewall pode fazer muito mais
# que apenas barrar usuarios pingando a sua maquina. Muitos aspectos
# do TCP/IP e seus aplicativos relacionados baseiam-se em varias mensagens
# ICMP. Sem ICMP, tanto seu servidor Linux quanto os hosts internos da sua
# rede podem nao funcionar.
#
# Se desejar filtrar pacotes ICMP, faca-o descomentando o tipo de trafico
# que deseja barrar nas linhas acima e nao na linha a seguir.
#
# Essa linha aceita pacotes ICMP originarios da Internet para o IP da
# sua interface externa.
#
/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP


# NNTP : Permite hosts externos conectarem o seu servidor Linux para
# servicos de news NNTP.
#
# echo " Parametro Opcional : servidor NNTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
nntp

# NTP : Permite hosts externos conectarem o seu servidor Linux para
# servicos NTP.Alguns clientes de NTP utilizam trafico TCP
# enquanto outros utilizam UDP.
#
# echo " Parametro Opcional : servidor NTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
ntp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP
ntp

# TELNET : Permite hosts externos conectarem seu servidor Linux para
# acesso TELNET.
#
# echo " Parametro Opcional : servidor TELNET"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
telnet

# Servidor SSH: Permite hosts externos conectarem seu servidor Linux para
# acesso seguro secure shell SSH.
#
# echo " Parametro Opcional : servidor SSH"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
ssh


#--------------------------------------------------------------------
# Rejeicoes especificas de entrada pela interface externa
#--------------------------------------------------------------------
# Essas regras rejeitam trafico especifico que voce nao deseja dentro
# do seu sistema.
#--------------------------------------------------------------------
echo " - Rejeitar entradas (inputs) especificos."

# Recusar pacotes via interface externa com endereco de loopback
#*
/sbin/ipchains -A input -j DENY -i $EXTIF -s $LOOPBACKIP

# Interface remota alegando ser maquina local.Caso de IP spoofing.
/sbin/ipchains -A input -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE $LOGGING


# De acordo com RFC1918 e IANA
# Filtro de enderecos reservados
#
# Filtrar todo o trafico externo originario do espaco reservado de
enderecos.
# Rode "whois IANA*@arin.net" e "whois RESERVED*@arin.net" para obter
# maiores informacoes.
#

# Reservado-1
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 0.0.0.0/8 -d $UNIVERSE
$LOGGING

# Reservado-9
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 1.0.0.0/8 -d $UNIVERSE
$LOGGING

# Reservado-10
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 10.0.0.0/8 -d $UNIVERSE
$LOGGING

# Reservado-23
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 23.0.0.0/8 -d $UNIVERSE
$LOGGING

# Reservado-31
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 31.0.0.0/8 -d $UNIVERSE
$LOGGING

# Reservado-7 (65.0.0.0 - 95.255.255.255)
#
# 65.0.0.0 - 65.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 65.0.0.0/8 -d $UNIVERSE
$LOGGING
# 66.0.0.0 - 67.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 66.0.0.0/7 -d $UNIVERSE
$LOGGING
# 68.0.0.0 - 71.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 68.0.0.0/6 -d $UNIVERSE
$LOGGING
# 72.0.0.0 - 79.55.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 72.0.0/5 -d $UNIVERSE
$LOGGING
# 80.0.0.0 - 95.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 80.0.0.0/4 -d $UNIVERSE
$LOGGING


# Reservado-8 (96.0.0.0 - 126.255.255.255)
# A mascara a seguir inclui tambem a rede 127.0.0.0.
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 96.0.0.0/3 -d $UNIVERSE
$LOGGING

# Loopback
# Incluso acima no Reservado-8

# Reservado-3
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.0.0.0/16 -d $UNIVERSE
$LOGGING

# BuracoNegro3 = BLACKHOLE3
#
# Desabilitado pelo fato que todas as funcoes de reverso de DNS , exceto
# a funcao de endereco, nao irao funcionar corretamente.
#
#/sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.9.64.26/32 -d $UNIVERSE
$LOGGING

# Inclui NET-TEST-B
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.66.0.0/16 -d $UNIVERSE
$LOGGING

# IANA-RESERVED e RFC1918 (172.19-31.0.0)
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 172.16.0.0/12 -d $UNIVERSE
$LOGGING

# Reservado-4
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 191.255.0.0/16 -d $UNIVERSE
$LOGGING

# ROOT-NS-LAB - 192.0.0.0/24
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.0.0/24 -d $UNIVERSE
$LOGGING

# NET-ROOTS-NS-LIVE - 192.0.1.0/24
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.1.0/24 -d $UNIVERSE
$LOGGING

# NET-TEST - 192.0.2.0/24
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.2.0/24 -d $UNIVERSE
$LOGGING

# RFC1918
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.168.0.0/16 -d $UNIVERSE
$LOGGING

# Reservado-13
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 197.0.0.0/16 -d $UNIVERSE
$LOGGING

# Reservado-14
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 201.0.0.0/8 -d $UNIVERSE
$LOGGING

# Reservado-5
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 223.255.255.0/24 -d $UNIVERSE
$LOGGING

# Para uso futuro com classes E e F.
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 240.0.0.0/5 -d $UNIVERSE
$LOGGING
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 248.0.0.0/5 -d $UNIVERSE
$LOGGING


# Multicast : Desabilitar trafico Multicast.
#
# echo " Parametro Opcional : Ignorar MULTICAST"
# /sbin/ipchains -A input -j REJECT -i $EXTIF -s $UNIVERSE -d 224.0.0.0/4


# NFS: Rejeita trafico NFS de e para maquinas externas.
#
# Procure nao habilitar trafico externo de NFS para evitar problemas de
# seguranca.
#
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
2049
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 2049 -d
$EXTIP

# SMB e CIFS: Rejeita trafico SMB e CIFS de e para maquinas externas.
#
# Procure nao habilitar trafico externo de Samba (Windows 3.x, 9x e NT) ou
# CIFS (Windows 2000) para evitar problemas de seguranca.
#
# Portas: 137 TCP/UDP (NetBIOS name service)
# 138 UDP (NetBIOS datagram service) - filtra TCP
# 139 TCP (NetBIOS session service) - filtra UDP
# 445 TCP/UDP (MS CIFS em Windows 2000)

echo " - Rejeitar silenciosamente trafico TCP/UDP de SMB e CIFS pela
interface externa."
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP
137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD
137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD
137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP
138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD
138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD
138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP
139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD
139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD
139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP
445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP
445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD
445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD
445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 137 -d
$EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 137 -d
$EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 138 -d
$EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 138 -d
$EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 139 -d
$EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 139 -d
$EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 445 -d
$EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 445 -d
$EXTIP



#--------------------------------------------------------------------
# Trafico de entrada para todas as Interfaces
#--------------------------------------------------------------------
# Isso ira controlar o trafico de entrada em todas as interfaces.
#--------------------------------------------------------------------
echo " - Configurando filtros de entrada para servicos publicos em todas as
interfaces."

# AUTH: Permite o protocolo de autenticacao em todas as interfaces
# mas desabilita no arquivo /etc/inetd.conf. A razao disso
# e que algumas pilhas TCP/IP nao lidam corretamente com
# requisicoes de autorizacao rejeitadas.
#
# Trafico para e apartir da sua maquina
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE auth
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE auth -d $UNIVERSE

# DHCP/BOOTP : Rejeita todo trafico.
#
#/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE bootpc

# DNS: Se voce e um provedor de acesso e esta rodando um DNS
# de IPs validos, e necessario abrir as portas do DNS em
# todas as interfaces e permitir lookups.
#
# echo " Parametro Opcional : servidor DNS"
#/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE domain
#/sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $UNIVERSE domain

# RIP: Rejeita todo o trafico RIP.Muitas redes mal configuradas
# propagam protocolos de roteamento de rede ate o limite da rede.
# A linha a seguir permite que voce filtre RPI.
#
#/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE -d $UNIVERSE route

# SMTP: Se voce esta rodando um servidor SMTP valido, deve permitir
# o trafico de SMTP em todas as interfaces.
#
# echo " Parametro Opcional : servidor SMTP"
#/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE smtp

# Proxy SQUID com filtro de lixo
#
# Se voce esta usando o Squid com filtro de Banners, voce tera que
# habilitar as linhas a seguir para fazer o redirecionamento IPCHAINS
# para a porta 3128 do Squid.
#
#echo " Parametro Opcional : Proxy transparente SQUID"
#/sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -p tcp -d $LOOPBACKIP/32
www
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $INTLAN -d $INTIP/32
www
#/sbin/ipchains -A input -j REDIRECT 3128 -i $INTIF -p tcp -s $INTLAN -d
$INTLAN/0 www $LOGGING
# Rede 2
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $INTLAN2 -d
$INTIP2/32 www
#/sbin/ipchains -A input -j REDIRECT 3128 -i $INTIF2 -p tcp -s $INTLAN2 -d
$INTLAN2/0 www $LOGGING


#--------------------------------------------------------------------
# Rejeicoes de entrada especifica em qualquer interface.
#--------------------------------------------------------------------
# AS regras abaixo rejeitam trafico especifico que voce nao quer fora
# do seu sistema.
#--------------------------------------------------------------------
#echo " - Rejeitar trafico para dominios especificos."

# Nao permitir que qualquer host interno tenha acesso aos seguintes sites :
#
#
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
63.160.54.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
128.11.92.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
199.95.206.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
199.95.207.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
199.95.208.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
199.95.210.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
204.178.112.160/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
204.253.104.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
208.10.202.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
208.203.243.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
208.211.225.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
208.228.86.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d
209.67.38.0/24


# Suponha que voce nao quer receber nenhum e-mail de um servidor.
# Use o codigo abaixo, colocando o endereco valido apos o flag -d
#
#/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE 25 -d
152.163.159.0/24
#/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE 25 -d
205.188.157.0/24


#--------------------------------------------------------------------
# Permite INPUT de hosts externos
#--------------------------------------------------------------------
# Isso controla acesso externo de hosts especificos. O exemplo permite
# FTP, Secure Shell, POP3 e TELNET de um servidor especificado dentro do
# firewall. Alem das regras de input voce precisa permitir o trafico desse
# servidor para fora. Veja as regras de output mais abaixo.
#
#--------------------------------------------------------------------
echo " - Configurando filtros de entrada para hosts externos."

#
#echo " Permite INPUT de $HOSTSEG para ftp, ssh, POP3 e TELNET."
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP
ftp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP
ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP
ssh
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP
pop-3
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP
telnet

#echo " Permite INPUT de $HOSTSEG2 para ftp, ssh, POP3 e TELNET."
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP
ftp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP
ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP
ssh
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP
pop-3
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP
telnet
#
# copie o bloco para mais hosts apos $HOSTSEG2

# Permite que todas as interfaces internas acessem a internet
# -----------------------------------------------------------
# Inteface local e maquinas locais podem ir a qualquer lugar.
#
# A razao principal dessa regra estar no final da seccao de INPUT
# e certificar que todas as linhas DENY/REJECT do firewall sejam
# testadas antes de permitir todo o trafico interno.
# Se voce desejar pode voltar ao topo dessa seccao e especificar
# quais os hosts que podem sair, depois comente a linha abaixo
# de modo que so os hosts permitidos podem sair para a internet.
#
# Rede Interna 1
/sbin/ipchains -A input -j ACCEPT -i $INTIF -s $INTLAN -d $UNIVERSE
#*
# Rede Interna 2
/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -s $INTLAN2 -d $UNIVERSE


# Interface de Loopback e valida.
#
/sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE


# Portas altas :
#
# Habilita todas as portas altas nao privilegiadas para todo o trafico
# TCP/UDP de reply.
#
# O uso da flag "! -y" (not -y) filtra todo trafico TCP que nao possui
# o bit SYN configurado. Isso significa que qualquer trafico que tentar
# negociar com seu servidor numa porta alta sera rejeitado. Apenas
# trafico de retorno ou trafico baseado em UDP sera aceito em portas
# altas. Nao utilizar filtro SYN na porta 20 para secoes ativas de FTP.
# Por isso, deve-se especificar isso.
#
echo " - Habilitando toda a entrada de trafico de REPLY (TCP/UDP) em portas
altas."
/sbin/ipchains -A input -j ACCEPT ! -y -p tcp -s $UNIVERSE -d $EXTIP
$UNPRIVPORTS
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE ftp-data -d $EXTIP
$UNPRIVPORTS
/sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $EXTIP $UNPRIVPORTS


#--------------------------------------------------------------------
# Capturar todas as regras de INPUT
#--------------------------------------------------------------------
#
echo " - Capturar todas as regras de input finais."

# Todos os outros tipos de entradas sao negadas e logadas.
/sbin/ipchains -A input -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING


#********************************************************************
# Regras de Output (saida)
#********************************************************************
echo
"----------------------------------------------------------------------"
echo "Regras de Output:"

#--------------------------------------------------------------------
# Trafico de saida (Outgoing) da rede interna
#--------------------------------------------------------------------
# Essas regras contem politicas para todo trafico de saida da rede
# interna. Todo trafico para fora e permitido.
#
#--------------------------------------------------------------------
echo " - Configurando filtros de output para todo o trafico da rede
interna."

# Filtrar pacotes via interface externa com endereco de loopback
#*
/sbin/ipchains -A output -j DENY -i $EXTIF -s $LOOPBACK $LOGGING

# Interface local, qualquer origem para a rede local 1 e valida.
/sbin/ipchains -A output -j ACCEPT -i $INTIF -s $UNIVERSE -d $INTLAN

# Interface local, qualquer origem para a rede local 2 e valida.
#*
/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -s $UNIVERSE -d $INTLAN2

# Interface de Loopback e valida.
/sbin/ipchains -A output -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE

# DHCP: Se voce configurou um servidor DHCP nessa maquina Linux, voce tera
# que habilitar as seguintes regras :
#
# echo " Parametro Opcional : servidor DHCPd"
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p udp -s $INTIP/32 bootps -d
$BROADCAST/0 bootpc
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 bootps -d
$BROADCAST/0 bootpc
#*
# Rede 2
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p udp -s $INTIP2/32
bootps -d $BROADCAST/0 bootpc
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $INTIP2/32
bootps -d $BROADCAST/0 bootpc

# HTTP: Como permitir trafico interno HTTP a um servidor intranet de Web
# sem permitir o acesso externo.
#
# echo " Parametro Opcional : servidor WWW"
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 http -d
$INTLAN


# APC PowerChute para Linux. Esse e o software de gerenciamento de nobreaks
# da marca APC que uso internamente. Serve para desligar e verificar o
nobreak.
# Esse software manda um broadcast para a rede interna procurando pelo
daemon
# upsd.
#
# echo " Parametro Opcional : servidor UPSd"
# /sbin/ipchains -A output -j ACCEPT -i $INTIF -p udp -s $INTIP/32 -d
$BROADCAST 5456
#*
# Rede 2
# /sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p udp -s $INTIP2/32 -d
$BROADCAST 5456



#--------------------------------------------------------------------
# Output da rede interna.Acesso de hosts internos ao firewall.
#--------------------------------------------------------------------
# As regras abaixo permitem a apenas hosts especificados o acesso
# aos servicos desse firewall.
#
# Abaixo, esta demonstrado como permitir acesso FTP, SSH e TELNET.
#
#--------------------------------------------------------------------
#echo " - Estabelecendo filtros para output de hosts da rede interna."

# Host1 da rede 1 HOST11IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP
telnet

# Host2 da rede 1 HOST12IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP
telnet

# Host1 da rede 2 HOST21IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d
$INTIP2 ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d
$INTIP2 ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d
$INTIP2 ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d
$INTIP2 telnet

# Host2 da rede 2 HOST22IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d
$INTIP2 ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d
$INTIP2 ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d
$INTIP2 ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d
$INTIP2 telnet

#--------------------------------------------------------------------
# Trafico de saida na interface externa
#--------------------------------------------------------------------
# Essa regra controla o trafico que pode sair pela interface externa.
#--------------------------------------------------------------------
echo " - Configurando filtros de input para trafico com a interface
externa."

# Cliente DHCP : Se o seu servidor Linux esta conectado via Cablemodem, ou
seja,
# acesso dedicado por cabo e seu provedor nao lhe forneceu um IP
# fixo e sim um endereco dinamico que muda de acordo com
# intervalos determinados, sera necessario descomentar as
# regras abaixo.
#
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE bootpc -d
$UNIVERSE bootps
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE bootpc -d
$UNIVERSE bootps

# FTP : Permite trafico FTP se o seu servidor Linux for um servidor FTP
tambem.
#
# echo " Parametro Opcional : servidor FTP"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d
$UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d
$UNIVERSE

# IRCd : Permite trafico se o seu servidor Linux servir IRC.
# Obs : ircd deve estar especificado no arquivo de servicos
# localizado em etc/services
#
# echo " Parametro Opcional : servidor IRC"
# /sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ircd -d
$UNIVERSE

# HTTP : Permite trafico HTTP. Seu Linux e um servidor de documentos WWW
#
# echo " Parametro Opcional : servidor WWW"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP http -d
$UNIVERSE

# HTTPS : Permite trafico HTTP. Seu Linux e um servidor de documentos
seguros WWW
#
# echo " Parametro Opcional : servidor WWW seguro HTTPS"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP https -d
$UNIVERSE

# NTP : Permite atualizacoes NTP. Seu Linux e um servidor NTP.
# Alguns clientes NTP usam TCP e outros usam UDP.
#
# echo " Parametro Opcional : servidor NTP"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ntp -d
$UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p udp -s $EXTIP ntp -d
$UNIVERSE

# TELNET: Permite trafico TELNET.
#
# echo " Parametro Opcional : servidor TELNET"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d
$UNIVERSE

# SSH : Permite trafico de saida de SSH, se o seu Linux estiver rodando o
SSHd.
# Nesse caso, voce pode acessar o seu Linux pela internet (interface
externa)
# via SSH. No meu caso, eu faco isso.
#*
# echo " Parametro Opcional : servidor SSH"
/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d
$UNIVERSE


#--------------------------------------------------------------------
# Trafico de saida em todas as interfaces
#--------------------------------------------------------------------
# As regras abaixo controlam o trafico de saida para todas as interfaces.
# As regras sao apenas para especificar o que pode ser usado, uma vez que
# a regra geral esta acima como REJECT.
#--------------------------------------------------------------------
echo " - Configurando filtros de output para todas as interfaces."

# AUTH : Permite que o protocolo de autenticacao AUTH e ident funcionem com
# todas as interfaces.
# Trafico PARA a sua maquina DA sua maquina.
/sbin/ipchains -A output -j ACCEPT -p tcp -s $UNIVERSE auth -d $UNIVERSE
/sbin/ipchains -A output -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE auth

# DNS : Caso esteja rodando um servidor Linux DNS autoritativo, voce precisa
# habilitar as regras a seguir.
#
# echo " Parametro Opcional : Servidor DNS"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP domain -d $UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP domain -d $UNIVERSE


# ICMP avancado : Alguns administradores preferem que seu servidor Linux
# nao seja pingado com PING.
# Consulte http://www.sys-security.com/archive/papers/ICMP_Scanning_v2.0.pdf
# sobre como filtrar trafico ICMP.
#
# Rode "/sbin/ipchains -h icmp" para saber sobre codigos ICMP.
#
# Nao responder a ICMP ECHO REPLYs (tipo 0) da Internet.
#
# echo " Paramentro Opcional : Saida de ICMP ECHO REPLY filtrada"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type echo-reply
#
# Nao responder a requisicoes de TRACEROUTE via TCP/UDP da Internet
#
# echo " Parametro Opcional : Trafico de saida TRACEROUTE TCP/UDP filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
33434 $LOGGING
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
33434 $LOGGING
#
# Nao responder a requisicoes de TRACEROUTE via ICMP ECHO para clientes MS
#
# echo " Parametro Opcional : Trafico de saida TRACEROUTE ICMP ECHO (MS)
filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type echo-request $LOGGING
#
# Nao responder a DESTINATION-UNREACHABLE (tipo 3) da Internet
#
# echo " Parametro Opcional : Trafico de saida ICMP DESTINATION-UNREACHABLE
filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type destination-unreachable $LOGGING
#
# Nao responder a SOURCEQUENCH (tipo 4) da Internet
#
# echo " Parametro Opcional : Trafico de saida ICMP SOURCEQUENCH filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type source-quench $LOGGING
#
# Nao responder a qualquer tipo de pacote ICMP REDIRECT (tipo 5)
#
echo " Parametro Opcional : trafico de saida ICMP REDIRECT filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type redirect $LOGGING
#
# Nao permitir PING (tipo 8) da Internet
#
# echo " Parametro Opcional : trafico de saida ICMP ECHO filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type echo-request $LOGGING
#
# Nao responder a pacotes Time To Live Expired (tipo 11) da Internet
#
echo " Parametro Opcional : trafico de saida ICMP TTL-EXPIRED filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type ttl-zero-during-reassembly $LOGGING
#
# Nao responder a pacotes PARAMETER-PROBLEM (tipo 12) da internet
#
echo " Parametro Opcional : Trafico de saida ICMP PARAMETER-PROBLEM
filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type parameter-problem $LOGGING
#
# nao responder a pacotes ICMP TIMESTAMP (tipo 13 e 14)
#
echo " Parametro Opcional : trafico de saida ICMP TIMESTAMP filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type timestamp-request $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type timestamp-reply $LOGGING
#
# Nao responder a pacotes ICMP ADDRESS MASK (tipo 17 e 18)
#
echo " Parametro Opcional : Trafico de saida ICMP ADDRESS-MASK filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type address-mask-request $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d
$UNIVERSE --icmp-type address-mask-reply $LOGGING


# ICMP Geral : Permite trafico de ICMP para fora
#
# Cuidado ao desabilitar pacotes ICMP com regras de firewall. Muitos
# aspectos do protocolo TCP/IP e aplicativos derivados dependem de
# mensagens ICMP. Portanto, ao fazer isso tenha certeza do que esta
# realmente filtrando. Sem ICMP, tanto o seu servidor Linux quanto
# as maquinas conectadas a ele podem nao funcionar.
#
# Aceita trafico ICMP da Internet
/sbin/ipchains -A output -j ACCEPT -p icmp -s $UNIVERSE -d $UNIVERSE


# NNTP : Permite trafico de News baseado em NNTP.
#
# echo " Parametro Opcional : servidor NNTP"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP nntp -d $UNIVERSE

# SMTP : Se seu servidor Linux e um servidor SMTP ou funciona como um relay
# voce precisa descomentar a linha abaixo.
#
# echo " Parametro Opcional : servidor SMTP"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP smtp -d $UNIVERSE


#--------------------------------------------------------------------
# Saida para Hosts externos especificos
#--------------------------------------------------------------------
# Essas regras permitem saida para hosts especificos que denominamos
# $HOSTSEG. Abaixo, POP3 e SSH sao permitidos para Hosts especificados.
# Alem das regras de saida (OutPut) tambem sao necessarias as regras de
# Input. Veja acima.
#
#--------------------------------------------------------------------
echo " - Configurando filtros de saida para hosts externos especificos."

# Host 1 = HOSTSEG
#
#echo " Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d
$HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d
$HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d
$HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d
$HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d
$HOSTSEG $UNPRIVPORT

#echo " Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG2"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d
$HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d
$HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d
$HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d
$HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d
$HOSTSEG2 $UNPRIVPORT

#echo " Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG3"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d
$HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d
$HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d
$HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d
$HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d
$HOSTSEG3 $UNPRIVPORT


#--------------------------------------------------------------------
# Rejeicoes especificas de output (saida)
#--------------------------------------------------------------------
# Essas regras rejeitam trafico especifico que voce nao quer saindo
# da sua rede.
#--------------------------------------------------------------------
echo " - Rejeita trafico de saida especificados."

# Rejeita trafico de saida para a rede interna atarves da interface
# de saida.
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d $INTLAN
$LOGGING
# Rede 2
#*
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d $INTLAN2
$LOGGING

# Rejeita trafico de saida originado da rede interna atraves da interface
# externa
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE
$LOGGING
# Rede 2
#*
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $INTLAN2 -d $UNIVERSE
$LOGGING

# Filtragem dos enderecos reservados RFC1918 e IANA
#
# Filtra todo o trafico vindo da interface externa cujo enderecamento
# seja baseado em enderecos reservados.
# Para saber mais rode "whois IANA*@arin.net" e
# "whois RESERVED*@arin.net".
#

# Reservado-1
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 0.0.0.0/8
$LOGGING

# Reservado-9
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 1.0.0.0/8
$LOGGING

# Reservado-10
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 10.0.0.0/8
$LOGGING

# Reservado-23
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 23.0.0.0/8
$LOGGING

# Reservado-31
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 31.0.0.0/8
$LOGGING

# Reservado-7 (65.0.0.0 - 95.255.255.255)
#
# 65.0.0.0 - 65.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 65.0.0.0/8
$LOGGING
# 66.0.0.0 - 67.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 66.0.0.0/7
$LOGGING
# 68.0.0.0 - 71.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 68.0.0.0/6
$LOGGING
# 72.0.0.0 - 79.55.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 72.0.0/5
$LOGGING
# 80.0.0.0 - 95.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 80.0.0.0/4
$LOGGING

# Reservado-3
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.0.0.0/16
$LOGGING

# BLACKHOLE3
#/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.9.64.26/32
$LOGGING

# Inclui NET-TEST-B
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.66.0.0/12
$LOGGING

# IANA-BBLK-RESERVED e RFC1918 (172.19-31.0.0)
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 172.16.0.0/12
$LOGGING

# Reservado-4
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 191.255.0.0/16
$LOGGING

# ROOT-NS-LAB - 192.0.0.0/24
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.0.0/24
$LOGGING

# NET-ROOTS-NS-LIVE - 192.0.1.0/24
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.1.0/24
$LOGGING

# NET-TEST - 192.0.2.0/24
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.2.0/24
$LOGGING

# RFC1918
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.168.0.0/16
$LOGGING

# Reservado-13
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 197.0.0.0/8
$LOGGING

# Reservado-14
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 201.0.0.0/8
$LOGGING

# Reservado-5
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d
223.255.255.0/24 $LOGGING

# Para uso futuro das classes E e F :
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 240.0.0.0/5
$LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 248.0.0.0/5
$LOGGING


# Samba e CIFS. Rejeita trafico Samba e CIFS de maquinas externas.
#
# NUNCA habilite trafico SMB/CIFS pela internet a nao ser que tenha
# absoluta certeza do que esta fazendo. Se voce realmente precisa
# dessa funcionalidade use um IP seguro ou sistema VPN.
#
# Portas: 137 TCP/UDP (NetBIOS name service)
# 138 UDP (NetBIOS datagram service) - TCP filtrado por seguranca
# 139 TCP (NetBIOS session service) - UDP filtrado por seguranca
# 445 TCP/UDP (MS CIFS no Windows 2000)

echo " - Rejeitando trafico TCP/UDP para Samba na interface externa."
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
137
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
137
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
138
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
138
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
139
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
139
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
445
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
445
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 137 -d
$UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 137 -d
$UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 138 -d
$UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 138 -d
$UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 139 -d
$UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 139 -d
$UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 445 -d
$UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 445 -d
$UNIVERSE


# Filtrando todo o trafico de saida que e declarado inseguro ou de alguma
# maquina interna que possa estar infectada com algum cavalo de troia
(Trojan).
#

# RPC. Usado para NFS ou outro mecanismo inseguro
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
sunrpc $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP sunrpc -d
$UNIVERSE $LOGGING

# Mountd - Usado para NFS
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
635 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 635 -d
$UNIVERSE $LOGGING

# PPTP - Bloco nao autorizado de saida a VPNs
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
1723 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
1723 $LOGGING

# Winsock remoto - Bloqueia maquinas Windows internas de realizar operacoes
estranhas.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
1745 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
1745 $LOGGING

# NFS - Bloqueia NFS devido a falta de seguranca
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
2049 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 2049 -d
$UNIVERSE $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
2049 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 2049 -d
$UNIVERSE $LOGGING

# Software PcAnywhere - Bloqueia sessoes de saida remota nao autorizadas
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
5631 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
5631 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
5632 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
5632 $LOGGING

# Xwindows - Bloqueia sessoes Xwindows nao autorizadas ou inseguras
#
# Veja a parte de variaveis acima para intervalo de portas (6000:6007
padrao)
# O X pode usar mais portas que apenas o intervalo de 6000 a 6007.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
$XWINDOWS_PORTS $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE
$XWINDOWS_PORTS $LOGGING

# VPNs de IPs seguros - Bloqueia VPNs nao autorizadas
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 500 -d
$UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0
500 $LOGGING

# MySQL - Bloqueia sessoes nao autorizadas de SQL
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 3306 -d
$UNIVERSE/0 $LOGGING

# EggDrop IRC - Bloqueia bots nao autorizados
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 3456 -d
$UNIVERSE/0 $LOGGING


# Bloqueia as portas de rede conhecidas para Torjans.
#
# O protocolo TCP/IP pode usar portas altas aleatoriamente.Por isso, o
filtro
# abaixo nao garante que voce nao tenha uma maquina interna infectada. Essa
lista nao e
# completa mas possui as portas mais comuns.
#
# Consulte http://www.simovits.com/sve/nyhetsarkiv/1999/nyheter9902.html
# para uma lista completa.

# NetBus.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
12345 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE
12346 $LOGGING

# NetBus Pro.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0
20034 $LOGGING

# BackOrofice
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE/0
31337 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE/0
31338 $LOGGING

# Win Crash Trojan.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0
5742 $LOGGING

# Socket De Troye.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0
30303 $LOGGING

# Cavalo de Troia desconhecido (Master's Paradise [CHR])
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0
40421 $LOGGING

# Trinoo UDP flooder - Essa porta pode mudar com o tempo
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 27665 -d
$UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 27444 -d
$UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 31335 -d
$UNIVERSE/0 $LOGGING

# Shaft distributed flooder - Essa porta pode mudar com o tempo
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 20432 -d
$UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 18753 -d
$UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 20433 -d
$UNIVERSE/0 $LOGGING


#--------------------------------------------------------------------
# Permite todas as portas altas de retornar trafico.
#
echo " - Habilitando todo o trafico de saida REPLY (TCP/UDP) nas portas
altas."
/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP $UNPRIVPORTS -d
$UNIVERSE
/sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP $UNPRIVPORTS -d
$UNIVERSE


#--------------------------------------------------------------------
# Capturar todas as regras
#--------------------------------------------------------------------
echo " - Output final, capturar todas as regras."

# Qualquer outro tipo de saida sera negada e logada. Essa regra
# deve capturar tudo inclusive Samba que ainda nao foi bloqueado.
#
/sbin/ipchains -A output -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING


#********************************************************************
# Regras de encaminhamento (Forwarding)
#********************************************************************
#
echo
"----------------------------------------------------------------------"
echo "Regras de Forwarding :"

#------------------------------------------------------------------------
# Habilita forwarding e masquerading de TCP/IP originario da rede interna
#------------------------------------------------------------------------

# Usuarios de Diald :
#
# Essa regra sera necessaria para permitir que a interface SLIP s10
# receba trafico quando estiver subindo a s10.
#
#/sbin/ipchains -A forward -j MASQ -i sl0 -s $INTLAN -d $UNIVERSE/0


#----------------------------------------------------------------------
# Port Forwarding
#----------------------------------------------------------------------
# Port forwarding permite o direcionamento de trafico externo para uma
# maquina interna mascarada. Um uso disso seria usuarios externos
# acessando um servidor web atras de uma mascara.
#
# Para usar PORTFW voce precisa descomentar e editar a seccao $HOSTSEG
# acima.
#
# Consulte o howto de IP-MASQUERADING para detalhes sobre Port Forwarding.
#
# Nao utilizar portas maiores que 1023 para redirecionamento.
#
#--------------------------------------------------------------------
#echo " Habilitando Port Forwarding nos hosts internos."
#/usr/sbin/ipmasqadm portfw -f
#echo " Redirecionando trafico SSH na porta 26 para $PORTFWIP1"
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP1 22
#
#echo " Redirecionando trafico SSH na porta 26 para $PORTFWIP2"
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP2 22
#
#echo " Redirecionando trafico SSH na porta 26 para $PORTFWIP3"
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP3 22


#--------------------------------------------------------------------
# Habilita forwarding e masquerading TCP/IP a partir da rede interna
#--------------------------------------------------------------------

# Habilita IP Forwarding no kernel do Linux
#
# Existem dois metodos para habilitar essa opcao. O primeiro e editar
# o arquivo /etc/sysconfig/network e alterar a linha FORWARD_IPV4 para
# FORWARD_IPV4=true
#
# O segundo pode ser executado a qualquer momento.
# Basta alterar o arquivo /proc/sys/net/ipv4/ip_forward atraves
# do comando abaixo
#
echo " - Habilitando IP forwarding."
echo "1" > /proc/sys/net/ipv4/ip_forward


# Masquerade da rede interna 1 na interface local para internet.
#
echo " - Habilitando IP Masquerading na rede interna 1 para internet."
/sbin/ipchains -A forward -j MASQ -i $EXTIF -s $INTLAN -d $UNIVERSE

# Masquerade da rede interna 2 na interface local para internet.
#
echo " - Habilitando IP Masquerading na rede interna 2 para internet."
/sbin/ipchains -A forward -j MASQ -i $EXTIF -s $INTLAN2 -d $UNIVERSE


# Masquerading da Rede interna 1 para a Rede interna 2
#
echo " Habilitando IP Masquerading da Rede Interna 1 para a Rede Interna 2"
/sbin/ipchains -A forward -j MASQ -i $INTLAN2 -s $INTLAN -d $INTLAN2

# Masquerading da Rede interna 2 para a Rede interna 1
#
echo " Habilitando IP Masquerading da Rede Interna 2 para a Rede Interna 1"
/sbin/ipchains -A forward -j MASQ -i $INTLAN -s $INTLAN2 -d $INTLAN

# Habilitando "Always Defrag" para sistemas Masqueraded
#
echo " - Habilitando IP Always Defrag para a rede interna."
echo "1" > /proc/sys/net/ipv4/ip_always_defrag


# Desabilitando o patch LooseUDP que alguns jogos via internet usam.
#
#
echo " - Desabilitando o patch LooseUDP por seguranca."
echo "0" > /proc/sys/net/ipv4/ip_masq_udp_dloose


# Capturar todas as regras, qualquer outro tipo de forwarding e negado.
#
/sbin/ipchains -A forward -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING

# Final
#
echo
"----------------------------------------------------------------------"
echo -e "IPCHAINS Firewall $VERSAO $ULTALT implementado.\n\n"



Reply to: