felipedc
(usa Debian)
Enviado em 04/07/2013 - 20:04h
Pessoal, boa noite!
Meu problema é o seguinte:
tenho 1 maq rodando um firewall (iptables), squid, dns(bind9), dhcp, está maquina utiliza a distribuição debian.
Os serviços estão todos OK, tudo funcionando.. porém minha navegação está muito lenta.. acessando o facebook demora mto pra carregar imagens, o chat do facebook toda hora fica como "offline".
Se eu retiro o firewall e coloco direto, a navegação fica 100%.
A Taxa de downloads com ou sem o firewall é a mesma, o problema é só na hora de carregar (ou a falha de conexao), oque pode ser? alguma regra de firewall entrando em conflito? Muitissimo obrigado desde já!
Abaixo segue meu script de firewall:
#!/bin/bash
echo ""
echo "#| Script de Firewall - IPTABLES"
# Variaveis
PATH=/sbin:/bin:/usr/sbin:/usr/bin
IPTABLES="/sbin/iptables"
LOG_FLOOD="1/s"
# Arquivos com as portas a liberar e a bloquear
#PORTSLIB="/etc/firewall/PORTSLIB"
PBLOQ="/etc/firewall/PORTSBLOQ"
PINPUT="/etc/firewall/PORTSINPUT"
POUTPUT="/etc/firewall/PORTSOUTPUT"
PFORWARD="/etc/firewall/PORTSFORWARD"
# Redirecionamento de Pacotes
REDILIST="/etc/firewall/REDILIST"
#IPS com acesso irrestrito
IPSLIBERADOS="/etc/firewall/IPSLIBERADOS"
#MACS LIBERADOS
MACSLIBERADOS="/etc/firewall/MACSLIBERADOS"
# Script Firewall
PROGRAMA="/etc/firewall/firewall"
# Interfaces de Rede
WAN=eth0
LAN1=eth1
LAN2=eth2
REDE1="192.168.1.0/25"
REDE2="192.168.2.0/23"
# Carregando Modulos
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
case "$1" in
start)
echo "CARREGANDO FIREWALL..." ; sleep 1 ;
#Zerando Regras
$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t mangle -F
$IPTABLES -t nat -F
$IPTABLES -X
#Compartilhar a conexao
$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
#Politicas Padrao
INPUT=DROP
OUTPUT=ACCEPT
FORWARD=DROP
$IPTABLES -P INPUT $INPUT
$IPTABLES -P OUTPUT $OUTPUT
$IPTABLES -P FORWARD $FORWARD
echo "APLICANDO POLITICAS PADRAO..." ; sleep 1 ;
echo "[OK] INPUT: "$INPUT ;
echo "[OK] OUTPUT: "$OUTPUT ;
echo "[OK] FORWARD: "$FORWARD ;
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $LAN1 -j ACCEPT #Habilito o acesso ao servidor de internet para a Rede Interna ($REDE1)
$IPTABLES -A INPUT -i $LAN2 -j ACCEPT #Habilito o acesso ao servidor de internet para a Rede Wireless ($REDE2)
#echo "BLOQUEANDO PORTAS DE COMUNICACAO..." ;
#sleep 2 ;
#CONTPORTA=0;
#for i in `cat $PBLOQ`; do
#PORTA=`echo $i | cut -d '#' -f 1`
#$IPTABLES -A INPUT -p tcp --dport $PORTA -j DROP
#$IPTABLES -A INPUT -p udp --dport $PORTA -j DROP
#$IPTABLES -A OUTPUT -p tcp --dport $PORTA -j DROP
#$IPTABLES -A OUTPUT -p udp --dport $PORTA -j DROP
#$IPTABLES -A FORWARD -p tcp --dport $PORTA -j DROP
#$IPTABLES -A FORWARD -p udp --dport $PORTA -j DROP
#let CONTPORTA++ ;
#done
#sleep 2 ;
#[ $CONTPORTA -ne 0 ] && echo "[OK] $CONTPORTA PORTAS BLOQUEADAS!"
#[ $CONTPORTA -eq 0 ] && echo "[OK] NENHUMA PORTA A BLOQUEAR!"
echo "LIBERANDO PORTAS DE COMUNICACAO..." ;
sleep 2 ;
CONTPORTA=0;
for i in `cat $PINPUT`; do
PORTA=`echo $i | cut -d '#' -f 1`
$IPTABLES -A INPUT -p tcp --dport $PORTA -j ACCEPT
$IPTABLES -A INPUT -p udp --dport $PORTA -j ACCEPT
let CONTPORTA++ ;
done
sleep 2 ;
[ $CONTPORTA -ne 0 ] && echo "[OK] $CONTPORTA PORTAS INPUT LIBERADAS!"
[ $CONTPORTA -eq 0 ] && echo "[OK] NENHUMA PORTA INPUT A LIBERAR!"
sleep 2 ;
CONTPORTA=0;
for i in `cat $POUTPUT`; do
PORTA=`echo $i | cut -d '#' -f 1`
$IPTABLES -A OUTPUT -p tcp --dport $PORTA -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport $PORTA -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport $PORTA -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport $PORTA -j ACCEPT
let CONTPORTA++ ;
done
sleep 2 ;
[ $CONTPORTA -ne 0 ] && echo "[OK] $CONTPORTA PORTAS OUTPUT LIBERADAS!"
[ $CONTPORTA -eq 0 ] && echo "[OK] NENHUMA PORTA OUTPUT A LIBERAR!"
sleep 2 ;
CONTPORTA=0;
for i in `cat $PFORWARD` ; do
PORTA=`echo $i | cut -d '#' -f 1`
$IPTABLES -A FORWARD -p tcp --dport $PORTA -j ACCEPT
$IPTABLES -A FORWARD -p udp --dport $PORTA -j ACCEPT
let CONTPORTA++ ;
done
sleep 2 ;
[ $CONTPORTA -ne 0 ] && echo "[OK] $CONTPORTA PORTAS FORWARD LIBERADAS!"
[ $CONTPORTA -eq 0 ] && echo "[OK] NENHUMA PORTA FORWARD A LIBERAR!"
echo "REDIRECIONANDO PORTAS (NAT)..." ;
CONTREDIRECT=0;
for i in `cat $REDILIST`; do
IP=`echo $i | cut -d '#' -f 1`
PPRIVADA=`echo $i | cut -d '#' -f 2`
PPUBLICA=`echo $i | cut -d '#' -f 3`
$IPTABLES -t nat -I PREROUTING -i $WAN -p tcp --dport $PPUBLICA -j DNAT --to-destination $IP:$PPRIVADA
let CONTREDIRECT++ ;
done
sleep 2 ;
[ $CONTREDIRECT -ne 0 ] && echo "[OK] $CONTREDIRECT PORTAS REDIRECIONADAS!"
[ $CONTREDIRECT -eq 0 ] && echo "[OK] NENHUMA PORTA A REDIRECIONAR!"
#Proxy Transparente
#$IPTABLES -t nat -A PREROUTING -s $REDE1 -p tcp --dport 80 -j REDIRECT --to-port 3128
#$IPTABLES -t nat -A PREROUTING -s $REDE2 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "LIBERANDO IPS SEM INTERMEDIO DO PROXY..." ;
CONTIP=0;
for i in `cat $IPSLIBERADOS `; do
IPLIBERADO=`echo $i | cut -d ';' -f 1`
$IPTABLES -A FORWARD -s $IPLIBERADO -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -s $IPLIBERADO -j RETURN
let CONTIP++ ;
done
sleep 2 ;
[ $CONTIP -ne 0 ] && echo "[OK] $CONTIP IPS LIBERADOS!"
[ $CONTIP -eq 0 ] && echo "[OK] NENHUM IP A LIBERAR!"
echo "LIBERANDO MAC SEM INTERMEDIO DO PROXY..." ;
CONTMAC=0;
for i in `cat $MACSLIBERADOS `; do
MACLIBERADO=`echo $i | cut -d ';' -f 1`
$IPTABLES -t filter -A FORWARD -d 0/0 -m mac --mac-source $MACLIBERADO -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -s $MACLIBERADO -j RETURN
let CONTMAC++ ;
done
sleep 2 ;
[ $CONTMAC -ne 0 ] && echo "[OK] $CONTMAC MACS LIBERADOS!"
[ $CONTMAC -eq 0 ] && echo "[OK] NENHUM MAC A LIBERAR!"
#Proxy Transparente
$IPTABLES -t nat -A PREROUTING -s $REDE1 -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPTABLES -t nat -A PREROUTING -s $REDE2 -p tcp --dport 80 -j REDIRECT --to-port 3128
#Não responde pings
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP
#Proteção contra Ip Spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
$IPTABLES -A INPUT -m state --state INVALID -j DROP
#Impedindo ataque Ping of Death na rede
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#Impedindo ataque de Denial Of Service Dos na rede e servidor
$IPTABLES -I FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
$IPTABLES -A INPUT -p tcp -m limit --limit 1/s -j ACCEPT
#Protecao contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
$IPTABLES -A INPUT -p icmp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "ICMP Dropped "
$IPTABLES -A INPUT -p tcp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "TCP Dropped "
$IPTABLES -A INPUT -p udp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "UDP Dropped "
$IPTABLES -A INPUT -f -m limit --limit $LOG_FLOOD -j LOG --log-level warning --log-prefix "FRAGMENT Dropped "
$IPTABLES -A INPUT -m limit --limit 1/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
echo "FIREWALL CARREGADO! :)~"
echo " "
;;