Enviado em 07/07/2012 - 15:19h
Pessoal preciso da ajuda de vocês....
Fiz algumas mudanças no meu script de Firewall e depois disso a internet não funciona quando ativo o squid, se eu tirar a regra do iptables que redireciona para o squid tudo funciona normalmente, abaixo segue meu Firewall.sh:
--------------------------------------------------------------------------------------
#!/bin/bash
## SCRIPT DE FIREWALL ##
## DECLARAÇÂO DE VARIAVEIS ##
IPT=$(which iptables)
IP_LOCAL="192.168.0.1"
LO="127.0.0.1"
QQR_LUGAR="0/0"
PORTS_ALTAS="1024:65535"
REDE_LOCAL="192.168.0.0/24"
IFACE_LOCAL="eth0"
IFACE_EXTERNA="eth1"
## DECLARACAO DOS MODULOS ##
modprobe iptable_nat
#---------------------------------------------------------------------
politica_drop ()
{
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
}
limpa_regras ()
{
echo "### ABRINDO O FIREWALL ###"
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
}
compartilhando ()
{
echo "### COMPARTILHANDO ###"
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING -o $IFACE_EXTERNA -j MASQUERADE
}
#proxy_transparent ()
#{
#
#$IPT -t nat -A PREROUTING -s $REDE_LOCAL -i $IFACE_LOCAL -p tcp --dport 80 -j REDIRECT --to-port 3128
#}
loop_back ()
{
echo "### LIBERANDO O LOOP BACK ###"
$IPT -A INPUT -i lo -d $LO -j ACCEPT
$IPT -A OUTPUT -o lo -d $LO -j ACCEPT
}
estabiliza_input ()
{
echo "### ESTABILIZANDO CONEXOES DE INPUT ###"
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
}
estabiliza_output ()
{
echo "### ESTABILIZANDO CONEXOES DE OUTPUT ###"
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
}
estabiliza_forward ()
{
echo " ### ESTABILIZANDO CONEXOES DE FORWARD ### "
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
}
controle_de_icmp ()
{
echo " ### LIBERANDO ICMPS ###"
for TIPO in 0 3/0 3/1 3/2 3/3 3/4 4 5 11 12
do
$IPT -A INPUT -p icmp -s $QQR_LUGAR -i $IFACE_EXTERNA --icmp-type $TIPO -m limit --limit 1/s -j ACCEPT
done
$IPT -A OUTPUT -p icmp -d $QQR_LUGAR --icmp-type 8 -j ACCEPT
$IPT -A INPUT -p icmp -s $REDE_LOCAL --icmp-type 8 -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -p icmp -s $REDE_LOCAL -d $QQR_LUGAR --icmp-type 8 -m limit --limit 1/s -j ACCEPT
}
portas_tcp ()
{
echo "### LIBERANDO CONEXOES EM PORTAS TCP ###"
for PORTAS in $(cat /etc/firewall/portas_tcp.txt | grep -v ^#)
do
$IPT -A OUTPUT -p tcp -m state --state NEW --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
$IPT -A FORWARD -p tcp -m state --state NEW -s $REDE_LOCAL --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
done
}
portas_udp ()
{
echo "### LIBERANDO CONEXOES EM PORTAS UDP ###"
for PORTAS in $(cat /etc/firewall/portas_udp.txt | grep -v ^#)
do
$IPT -A OUTPUT -p udp -m state --state NEW -s $IP_LOCAL --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
$IPT -A FORWARD -p udp -m state --state NEW -s $REDE_LOCAL --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
done
}
libera_pt_ip_seguros ()
{
echo "### ATIVANDO CONTROLE DE IPs REMOTO ###"
for IP in $(cat /etc/firewall/ips_seguros.txt | grep -v ^#)
do
for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#)
do
$IPT -A INPUT -p tcp -m state --state NEW -s $IP --sport $PORTS_ALTAS -d $IP_LOCAL --dport $PORTAS -j ACCEPT
done
done
for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#)
do
$IPT -A INPUT -p tcp -s $QQR_LUGAR --sport $PORTS_ALTAS -d $IP_LOCAL --dport $PORTAS -j REJECT --reject-with tcp-reset
done
}
flags_invalidas ()
{
echo "### BLOQUEANDO POSSIVEIS SCANNERS ###"
for FLAGS in $(cat /etc/firewall/flags.txt | grep -v ^#)
do
for CHAINS in INPUT FORWARD
do
$IPT -A $CHAINS -p tcp -d $IP_LOCAL -m state --state NEW --tcp-flags $FLAGS $FLAGS -j LOG --log-prefix "POSSIVEL_SCANNER"
$IPT -A $CHAINS -p tcp -d $IP_LOCAL -m state --state NEW --tcp-flags $FLAGS $FLAGS -j DROP
done
done
}
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
#-----------------------------------------------------------------------
case $1 in
start)
compartilhando
#proxy_transparent
politica_drop
loop_back
estabiliza_input
estabiliza_output
estabiliza_forward
controle_de_icmp
portas_tcp
portas_udp
libera_pt_ip_seguros
flags_invalidas
echo " ******* FIREWAL ATIVADO ******* "
;;
stop)
limpa_regras
echo " ******* FIREWALL DESATIVADO ******* "
;;
filter) $IPT -nL | more
;;
nat) $IPT -nL -t nat | more
;;
mangle) $IPT -nL -t mangle | more
;;
restart) $0 stop
$0 start
;;
*) echo "erro use $0 {start|stop|filter|nat|mangle|restart}"
exit 0
;;
esac
exit 1
-------------------------------------------------------------------------------------
Quando eu descomento as linhas do proxy transparente não consigo navegar mais, eu consigo pingar pra ip da internet, pra dominio, mas navegar não consigo......
Eu dei uma olhada com o tcpdump e pelo o que eu vi a requisição chega no destino mas não consegue voltar...
Obrigado pela ajuda desde já.
Fiz algumas mudanças no meu script de Firewall e depois disso a internet não funciona quando ativo o squid, se eu tirar a regra do iptables que redireciona para o squid tudo funciona normalmente, abaixo segue meu Firewall.sh:
--------------------------------------------------------------------------------------
#!/bin/bash
## SCRIPT DE FIREWALL ##
## DECLARAÇÂO DE VARIAVEIS ##
IPT=$(which iptables)
IP_LOCAL="192.168.0.1"
LO="127.0.0.1"
QQR_LUGAR="0/0"
PORTS_ALTAS="1024:65535"
REDE_LOCAL="192.168.0.0/24"
IFACE_LOCAL="eth0"
IFACE_EXTERNA="eth1"
## DECLARACAO DOS MODULOS ##
modprobe iptable_nat
#---------------------------------------------------------------------
politica_drop ()
{
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
}
limpa_regras ()
{
echo "### ABRINDO O FIREWALL ###"
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
}
compartilhando ()
{
echo "### COMPARTILHANDO ###"
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING -o $IFACE_EXTERNA -j MASQUERADE
}
#proxy_transparent ()
#{
#
#$IPT -t nat -A PREROUTING -s $REDE_LOCAL -i $IFACE_LOCAL -p tcp --dport 80 -j REDIRECT --to-port 3128
#}
loop_back ()
{
echo "### LIBERANDO O LOOP BACK ###"
$IPT -A INPUT -i lo -d $LO -j ACCEPT
$IPT -A OUTPUT -o lo -d $LO -j ACCEPT
}
estabiliza_input ()
{
echo "### ESTABILIZANDO CONEXOES DE INPUT ###"
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
}
estabiliza_output ()
{
echo "### ESTABILIZANDO CONEXOES DE OUTPUT ###"
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
}
estabiliza_forward ()
{
echo " ### ESTABILIZANDO CONEXOES DE FORWARD ### "
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
}
controle_de_icmp ()
{
echo " ### LIBERANDO ICMPS ###"
for TIPO in 0 3/0 3/1 3/2 3/3 3/4 4 5 11 12
do
$IPT -A INPUT -p icmp -s $QQR_LUGAR -i $IFACE_EXTERNA --icmp-type $TIPO -m limit --limit 1/s -j ACCEPT
done
$IPT -A OUTPUT -p icmp -d $QQR_LUGAR --icmp-type 8 -j ACCEPT
$IPT -A INPUT -p icmp -s $REDE_LOCAL --icmp-type 8 -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -p icmp -s $REDE_LOCAL -d $QQR_LUGAR --icmp-type 8 -m limit --limit 1/s -j ACCEPT
}
portas_tcp ()
{
echo "### LIBERANDO CONEXOES EM PORTAS TCP ###"
for PORTAS in $(cat /etc/firewall/portas_tcp.txt | grep -v ^#)
do
$IPT -A OUTPUT -p tcp -m state --state NEW --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
$IPT -A FORWARD -p tcp -m state --state NEW -s $REDE_LOCAL --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
done
}
portas_udp ()
{
echo "### LIBERANDO CONEXOES EM PORTAS UDP ###"
for PORTAS in $(cat /etc/firewall/portas_udp.txt | grep -v ^#)
do
$IPT -A OUTPUT -p udp -m state --state NEW -s $IP_LOCAL --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
$IPT -A FORWARD -p udp -m state --state NEW -s $REDE_LOCAL --sport $PORTS_ALTAS -d $QQR_LUGAR --dport $PORTAS -j ACCEPT
done
}
libera_pt_ip_seguros ()
{
echo "### ATIVANDO CONTROLE DE IPs REMOTO ###"
for IP in $(cat /etc/firewall/ips_seguros.txt | grep -v ^#)
do
for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#)
do
$IPT -A INPUT -p tcp -m state --state NEW -s $IP --sport $PORTS_ALTAS -d $IP_LOCAL --dport $PORTAS -j ACCEPT
done
done
for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#)
do
$IPT -A INPUT -p tcp -s $QQR_LUGAR --sport $PORTS_ALTAS -d $IP_LOCAL --dport $PORTAS -j REJECT --reject-with tcp-reset
done
}
flags_invalidas ()
{
echo "### BLOQUEANDO POSSIVEIS SCANNERS ###"
for FLAGS in $(cat /etc/firewall/flags.txt | grep -v ^#)
do
for CHAINS in INPUT FORWARD
do
$IPT -A $CHAINS -p tcp -d $IP_LOCAL -m state --state NEW --tcp-flags $FLAGS $FLAGS -j LOG --log-prefix "POSSIVEL_SCANNER"
$IPT -A $CHAINS -p tcp -d $IP_LOCAL -m state --state NEW --tcp-flags $FLAGS $FLAGS -j DROP
done
done
}
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
#-----------------------------------------------------------------------
case $1 in
start)
compartilhando
#proxy_transparent
politica_drop
loop_back
estabiliza_input
estabiliza_output
estabiliza_forward
controle_de_icmp
portas_tcp
portas_udp
libera_pt_ip_seguros
flags_invalidas
echo " ******* FIREWAL ATIVADO ******* "
;;
stop)
limpa_regras
echo " ******* FIREWALL DESATIVADO ******* "
;;
filter) $IPT -nL | more
;;
nat) $IPT -nL -t nat | more
;;
mangle) $IPT -nL -t mangle | more
;;
restart) $0 stop
$0 start
;;
*) echo "erro use $0 {start|stop|filter|nat|mangle|restart}"
exit 0
;;
esac
exit 1
-------------------------------------------------------------------------------------
Quando eu descomento as linhas do proxy transparente não consigo navegar mais, eu consigo pingar pra ip da internet, pra dominio, mas navegar não consigo......
Eu dei uma olhada com o tcpdump e pelo o que eu vi a requisição chega no destino mas não consegue voltar...
Obrigado pela ajuda desde já.