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

Res: Script de firewall não funciona, pq ?



Velho se inscreve nessa lista. Ela trabalha somente com IpTables: iptables-br@yahoogrupos.com.br. Boa sorte.



----- Mensagem original ----
De: hamacker <sirhamacker@gmail.com>
Para: Lista Debian <debian-user-portuguese@lists.debian.org>
Enviadas: Segunda-feira, 24 de Maio de 2010 10:23:13
Assunto: Script de firewall não funciona, pq ?

Olá pessoal, será que seria possivel uma mãozinha aqui :
Estou desenvolvendo um script para firewall que bloqueia/libera
portas, dá acesso transparente a alguns ips, etc...
O script funciona perfeitamente no servidor onde coloco, porém quando
vou a uma estação e ponho tal servidor como gateway simplesmente não
funciona.
Sei que tá funcionando porque faço um ssh neste servidor e as regras
alí estão funcionando sem problemas, além disso, coloquei até um
proxy lá e com o proxy tá funcionando.
Vou colar aqui o script, só em suas regras e se alguem for ninja em
iptables e puder me dizer qual é o problema, eu seria muito grato.

Gostaria de dizer que comentei todas as linhas para depurar e mesmo
que eu dê um :
$IPTABLES -t nat -A POSTROUTING  -o $WAN -j MASQUERADE

para mascarar tudo, não adianta.

Falha com DNS estão descartados.
Qualquer ajuda será bem vinda.

#
# Inicio do Script
#

# Declaração de variaveis
IPTABLES="/sbin/iptables"
FWDIR="$FIREWALL/config"

# criando arquivos importantes para servirem de samples
. /home/servidor/fw-scripts/firewall.files

# Interfaces de Rede
# Se precisar mudar a ordem das placas fisicamente, entao
# edite o arquivo :
# /etc/udev/rules.d/70-persistent-net.rules
LAN=eth1
WAN=eth0
REDE_INTERNA="192.168.0.0/16"

# Os diversos módulos do iptables são chamdos através do modprobe
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe ipt_multiport
modprobe iptable_mangle
modprobe ipt_tos
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK

# Mensagem de inicialização do script
echo "########################################"
echo "# Script de Firewall - v2010.05   by Hamacker    #"
echo "########################################"

$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t mangle -F
$IPTABLES -t nat -F
$IPTABLES -X

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

echo "Ativando o redirecionamento entre as placas de rede (ip_forward)"
echo "1" > /proc/sys/net/ipv4/ip_forward

echo "Ativando entrada/saida da interface de loopback"
$IPTABLES -I INPUT -i lo -j ACCEPT
$IPTABLES -I OUTPUT -o lo -j ACCEPT

echo "Liberando portas do servidor ($WAN):"
while read LINHA ; do
  PORTA=`semremarks "$LINHA"`
  if [ "$PORTA" != "" ] ; then
    echo -e "\tPorta : $PORTA"
    $IPTABLES -A INPUT -p tcp --dport $PORTA -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport $PORTA -j ACCEPT
    $IPTABLES -A OUTPUT -p tcp --sport $PORTA -j ACCEPT
  fi
done <"$LISTA_PORTAS_LIBERADAS"
$IPTABLES -I INPUT -m state --state ESTABLISHED -j ACCEPT
$IPTABLES -I INPUT -m state --state RELATED -j ACCEPT
$IPTABLES -I OUTPUT -p icmp -o $WAN -j ACCEPT
$IPTABLES -I INPUT -p icmp -j ACCEPT

echo "Redirecionando portas ($WAN) a outros servidores :"
while read LINHA ; do
  i=`semremarks "$LINHA"`
  if [ "$i" != "" ] ; then
    REDIPROTO=`echo $i | cut -d ';' -f 1` #recebe o protocolo a ser
redirecionado
    REDIPORTA=`echo $i | cut -d ';' -f 2` #recebe a porta a ser redirecionado
    REDIP=`echo $i | cut -d ';' -f 3` #recebe o ip a ser redirecionado
    REDISERVICO=`echo $i | cut -d ';' -f 4` #recebe o nome do serviço
    REDIHOST=`echo $i | cut -d ';' -f 5` #recebe o nome do host
    echo -e "\t$WAN:$REDIPORTA($REDISERVICO) ->$REDIP($REDIHOST)"
    $IPTABLES -A FORWARD -p $REDIPROTO --dport $REDIPORTA -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -p $REDIPROTO -i $WAN --dport
$REDIPORTA -j DNAT --to $REDIP
  fi
done <"$LISTA_REDIRECIONAMENTOS"

echo "Bloqueando MacAddr da lista $LISTA_MACLIST_BLOQUEADOS :"
echo "(este bloqueio precede outras permissoes)"
while read LINHA ; do
  MACSOURCE=`semremarks "$LINHA"`
  if [ "$MACSOURCE" != "" ] ; then
    echo -e "\tBloqueado MacAddr:$LINHA"
    $IPTABLES -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
    $IPTABLES -t filter -A INPUT -m mac --mac-source $MACSOURCE -j DROP
    #$IPTABLES -t filter -A PREROUTING -m mac --mac-source $MACSOURCE -j DROP
  fi
done < "$LISTA_MACLIST_BLOQUEADOS"

echo "Liberando IPs/Sites com acesso transparente e direito"
while read LINHA ; do
  LIBERAR_SITE=`semremarks "$LINHA"`
  if [ "$LIBERAR_SITE" != "" ] ; then
     echo -e "\tSite transparente : $LINHA"
     $IPTABLES -t nat -A POSTROUTING -s $REDE_INTERNA -d $LIBERAR_SITE
-j MASQUERADE
  fi
done <"$SQUIDACL/sites_diretos.txt"

echo "Liberando IPs transparentes fixos a partir de
$LISTA_IP_TRANSPARENTES_FIXO"
while read LINHA ; do
  LIBERAR_IP=`semremarks "$LINHA"`
  if [ "$LIBERAR_IP" != "" ] ; then
     echo -e "\tIP transparente [fixo] : $LINHA"
     $IPTABLES -t nat -A POSTROUTING -s $LIBERAR_IP -j MASQUERADE
  fi
done <"$LISTA_IP_TRANSPARENTES_FIXO"

echo "Liberando IPs transparentes temporarios a partir de
$LISTA_IP_TRANSPARENTES_TEMP"
while read LINHA ; do
  LIBERAR_IP=`semremarks "$LINHA"`
  if [ "$LIBERAR_IP" != "" ] ; then
     echo -e "\tIP transparente [temp] : $LINHA"
     $IPTABLES -t nat -A POSTROUTING -s $LIBERAR_IP -j MASQUERADE
  fi
done <"$LISTA_IP_TRANSPARENTES_TEMP"

echo "Bloqueando o acesso de nossa rede a algumas redes externas :"
while read LINHA ; do
  SITE=`semremarks "$LINHA"`
  if [ "$SITE" != "" ] ; then
    echo -e "\tSite :$SITE"
    $IPTABLES -t filter -A FORWARD -s $REDE_INTERNA -d $SITE -j DROP
    $IPTABLES -t filter -A FORWARD -s $SITE -d $REDE_INTERNA -j DROP
    $IPTABLES -t filter -A INPUT -s $SITE -j DROP
    $IPTABLES -t filter -A OUTPUT -d $SITE -j DROP
  fi
done <"$LISTA_SITES_NEGADOS"

echo "Bloqueando algumas de portas :"
while read LINHA ; do
  PORTA=`semremarks "$LINHA"`
  if [ "$i" != "" ] ; then
    echo -e "\tPorta :$i"
    $IPTABLES -A INPUT -p tcp -i $WAN --dport $PORTA -j DROP
    $IPTABLES -A INPUT -p udp -i $WAN --dport $PORTA -j DROP
    $IPTABLES -A FORWARD -p tcp --dport $PORTA -j DROP
  fi
done <"$LISTA_PORTAS_BLOQUEADAS"

exit 0;


--
To UNSUBSCRIBE, email to debian-user-portuguese-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: AANLkTilpFkvJF2AqKIoEJ0Z5xEgPkSRv_4L3yut9dCM2@mail.gmail.com">http://lists.debian.org/AANLkTilpFkvJF2AqKIoEJ0Z5xEgPkSRv_4L3yut9dCM2@mail.gmail.com


    


Reply to: