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

iptables/squid + hotmail + msn 81000306 (Ayuda por favor)



Hola listeros, en principio y antes que nada, les deseo un buen año 2009
 para todos.
En segundo lugar puede que este mail sea bastante ridículo y cuasi
off-topic; pero la verdad es que ya no tengo ni la mas mínima idea de
donde puede venir el problema.

Voy a detallar todo, paso por paso.

Bien, todo estaba funcionando muy bien, hasta de que de un dia para el
otro, el msn dejo de conectarse, arrojando siempre el mismo error
(81000306) y ofreciendo su ridículo y apestoso "solucionador de
problemas" que lo único que hace es traer mas confuciones y no
solucionar NUNCA nada de nada.

Paralelamente deja de funcionar hotmail, es decir desde la web uno se
logonea, y se queda esperando, esperando y nunca accede al webmail. En
un primer momento pensé: "bueno debe estar funcionando mal hotmail ó
algún problema con mi ISP" (Telefónica de Argentina).

Entonces dejé pasar un tiempo (24hs), hasta que llame a telefónica para
preguntar si estaba pasando algo con hotmail o si había algún tipo de
problemas con el servicio, etc, respuesta de ellos: NO.

Intente de TODO, de lo mas común hasta lo mas ridículo, para contarles
deberían ver como es la red actualmente [0].

En "SRV1" de la imagen lo único que te tiene son estas reglas de iptables:

#!/bin/bash

modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_MASQUERADE
modprobe ipt_LOG
modprobe ipt_REJECT

echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1  > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 2400 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 2 > /proc/sys/net/ipv4/ip_dynaddr
echo 0 > /proc/sys/net/ipv4/tcp_ecn

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
        echo 0 > $f
done

for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
        echo 0 > $f
done

for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
        echo 0 > $f
done

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
        echo 1 > $f
done

for f in /proc/sys/net/ipv4/conf/*/log_martians; do
        echo 0 > $f
done

iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -t filter -F
iptables -t filter -X
iptables -t filter -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z

iptables -N bad_tcp_packets
iptables -A bad_tcp_packets -i ppp0 -s 192.168.0.0/24 -j DROP
iptables -A bad_tcp_packets -i ppp0 -s 172.16.0.0/12 -j DROP
iptables -A bad_tcp_packets -i ppp0 -s 192.168.0.0/16 -j LOG
--log-prefix "Spoofed packet CLASS C"
iptables -A bad_tcp_packets -i ppp0 -s 192.168.0.0/16 -j DROP
iptables -A bad_tcp_packets -i ppp0 -s 10.0.0.0/8 -j LOG --log-prefix
"Spoofed packet CLASS A"
iptables -A bad_tcp_packets -i ppp0 -s 10.0.0.0/8 -j DROP
iptables -A bad_tcp_packets -i ppp0 -s 172.16.0.0/12 -j LOG --log-prefix
"Spoofed packet CLASS B"
iptables -A bad_tcp_packets -i ppp0 -s 172.16.0.0/12 -j DROP
iptables -A bad_tcp_packets -o ppp0 -j DROP
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG
--log-prefix "New not syn:"

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


                # FILTER #


iptables -N no-conns-from-ppp0
iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j
ACCEPT
iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix
"Paquete malo de ppp0:"
iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix
"Paquete que no viene de ppp0:"
iptables -A no-conns-from-ppp0 -j DROP


        # INPUT HP #


iptables -t filter -A INPUT -i lo -j ACCEPT

iptables -t filter -A INPUT -i eth0 -j DROP
iptables -t filter -A INPUT -p ! udp -d 224.0.0.0/4 -j DROP

iptables -t filter -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type fragmentation-needed -j
ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type source-quench -j ACCEPT

iptables -t filter -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport
113 -j REJECT --reject-with tcp-reset

iptables -t filter -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -t filter -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m
limit --limit 1/s -j ACCEPT

iptables -t filter -A INPUT -i eth1 -s 192.168.0.2 -d 192.168.0.1 -p tcp
-m tcp --dport 22 -j ACCEPT #ssh
iptables -t filter -A INPUT -i eth1 -s ! 192.168.0.2 -p tcp --dport 22
-j LOG --log-prefix 'INTENTO DE ACCESO A SSH ' --log-level 4

iptables -t filter -A INPUT -j no-conns-from-ppp0
iptables -t filter -A INPUT -j bad_tcp_packets

iptables -t filter -A INPUT -m limit --limit 3/minute --limit-burst 3 -j
LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -m state --state INVALID -j DROP
iptables -t filter -A INPUT -m state --state NEW -j DROP


        # FORWARD LAN #


iptables -t filter -A FORWARD -p icmp --icmp-type parameter-problem -j
ACCEPT
iptables -t filter -A FORWARD -p icmp --icmp-type
destination-unreachable -j ACCEPT
iptables -t filter -A FORWARD -p icmp --icmp-type fragmentation-needed
-j ACCEPT
iptables -t filter -A FORWARD -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -t filter -A FORWARD -p icmp --icmp-type source-quench -j ACCEPT

iptables -t filter -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -t filter -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m
limit --limit 1/s -j ACCEPT

iptables -t filter -A FORWARD -d 255.255.255.255 -j DROP
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 20 -j ACCEPT #ftp-control
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 21 -j ACCEPT #ftp-data
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 22 -j ACCEPT #ssh
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 25 -j ACCEPT #smtp
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p udp --sport
1024:65535 --dport 25 -j ACCEPT #smtp
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 110 -j ACCEPT #pop
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p udp --dport
123 -j ACCEPT #NTP
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 143 -j ACCEPT #imap
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p udp --sport
1024:65535 --dport 143 -j ACCEPT #imap
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 443 -j ACCEPT #https
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 465 -j ACCEPT #SMTP over SSL
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 587 -j ACCEPT #SMTP gmail
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 989 -j ACCEPT #FTP Protocol (data) over TLS/SSL
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 990 -j ACCEPT #FTP Protocol (control) over TLS/SSL
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 993 -j ACCEPT #IMAPS
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --sport
1024:65535 --dport 995 -j ACCEPT #POP3S
iptables -t filter -A FORWARD -i eth1 -o ppp0 -s 192.168.0.0/24 -m tcp
-p tcp --sport 1024:65535 --dport 1863 -j ACCEPT #msn

iptables -t filter -A FORWARD -i eth1 -o ppp0 -s 192.168.0.20 -p tcp
--sport 1024:65535 --dport 65000 -j ACCEPT #w#1
iptables -t filter -A FORWARD -i eth1 -o ppp0 -s 192.168.0.20 -p tcp
--sport 1024:65535 --dport 3389 -j ACCEPT #w#2

iptables -t filter -A FORWARD -i eth1 -o ppp0 -s 192.168.0.2 -p tcp -m
tcp --sport 1024:65535 --dport 11999 -j ACCEPT #yahoo! Juegos

iptables -t filter -A FORWARD -i eth1 -o eth1 -s 192.168.0.0/24 -d
192.168.0.7 -p tcp --dport 3128 -j ACCEPT #squid-box
iptables -t filter -A FORWARD -i eth1 -o ppp0 -s 192.168.0.7 -p tcp
--sport 1024:65535 --dport 80 -j ACCEPT #www
iptables -t filter -A FORWARD -i eth1 -o ppp0 -s 192.168.0.7 -p udp
--sport 1024:65535 --dport 53 -j ACCEPT #bind-box
iptables -t filter -A FORWARD -i ppp0 -o eth1 -d 192.168.0.7 -p udp
--sport 53 --dport 1024:65535 -j ACCEPT #bind-box

iptables -t filter -A FORWARD -p ! udp -d 224.0.0.0/4 -j DROP
iptables -t filter -A FORWARD -i eth1 -o ppp0 -s ! 192.168.0.0/24 -j DROP
iptables -t filter -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS
--clamp-mss-to-pmtu
iptables -t filter -A FORWARD -j bad_tcp_packets
iptables -t filter -A FORWARD -j no-conns-from-ppp0

iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -m state --state INVALID -j DROP
iptables -t filter -A FORWARD -m state --state NEW -j DROP


        # OUTPUT HP #


iptables -t filter -A OUTPUT -o lo -j ACCEPT

iptables -t filter -A OUTPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m
limit --limit 1/s -j ACCEPT

iptables -t filter -A OUTPUT -p icmp --icmp-type parameter-problem -j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type fragmentation-needed -j
ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type source-quench -j ACCEPT

iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

iptables -t filter -A OUTPUT -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -m state --state INVALID -j DROP
iptables -t filter -A OUTPUT -m state --state NEW -j DROP


                # NAT #

        # POSTROUTING

# Squid

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -d 192.168.0.7
-j SNAT --to 192.168.0.1

iptables -t nat -A POSTROUTING -m state --state INVALID -j DROP
iptables -t nat -A POSTROUTING -m state --state RELATED,ESTABLISHED -j
ACCEPT


        # PREROUTING #


# Squid

iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.0.7 -p tcp --dport 80
-j DNAT --to 192.168.0.7:3128

iptables -t nat -A PREROUTING -i ppp0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 224.0.0.0/4 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 127.0.0.0/7 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 127.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 0.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 169.254.0.0/16 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 255.255.255.255 -j DROP
iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.0.0/24 -j DROP

iptables -t nat -A PREROUTING -m state --state INVALID -j DROP
iptables -t nat -A PREROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT


        # OUTPUT


iptables -t nat -A OUTPUT -m state --state INVALID -j DROP
iptables -t nat -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forward

#EOF

Y en SRV2 según la imagen tiene estas regalas de iptables:

#!/bin/sh

# Begin $rc_base/rc.iptables

# Insert connection-tracking modules
# (not needed if built into the kernel)
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe ipt_LOG

# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Disable Source Routed Packets
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Disable ICMP Redirect Acceptance
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Don¹t send Redirect Messages
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# Drop Spoofed Packets coming in on an interface, where responses
# would result in the reply going out a different interface.
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Log packets with impossible addresses.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# be verbose on dynamic ip-addresses  (not needed in case of static IP)
echo 0 > /proc/sys/net/ipv4/ip_dynaddr

# disable Explicit Congestion Notification
# too many routers are still ignorant
echo 0 > /proc/sys/net/ipv4/tcp_ecn

# Set a known state
iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP

# These lines are here in case rules are already in place and the
# script is ever rerun on the fly. We want to remove all rules and
# pre-existing user defined chains before we implement new rules.
iptables -F
iptables -X
iptables -Z

iptables -t nat -F

# Allow local-only connections
iptables -A INPUT  -i lo -j ACCEPT

iptables -A INPUT -i eth0 -s 192.168.0.2 -d 192.168.0.7 -p tcp --sport
1024:65535 --dport 22 -j ACCEPT #ssh

iptables -A INPUT -i eth0 -p tcp --sport 80 -m state --state ESTABLISHED
-j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.0.1 -d 192.168.0.7 -p tcp --sport
1024:65535 --dport 3128 -j ACCEPT #squid
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 0/0 -m udp -p udp --sport
1024:65535 --dport 53 -j ACCEPT #dns
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -d 255.255.255.255 -m udp
-p udp --sport 67 --dport 68 -j ACCEPT
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

iptables -t filter -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type fragmentation-needed -j
ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type source-quench -j ACCEPT

# Free output on any interface to any ip for any service
# (equal to -P ACCEPT)
iptables -A OUTPUT -j ACCEPT

iptables -t filter -A OUTPUT -p icmp --icmp-type parameter-problem -j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type fragmentation-needed -j
ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type source-quench -j ACCEPT


# Permit answers on already established connections
# and permit new connections related to established ones
# (e.g. port mode ftp)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Log everything else. What's Windows' latest exploitable vulnerability?
iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT "

# End

Con respecto a iptables probe poniendo todas las politicas en ACCEPT y
vaciando las cadenas en ambos servidores, y seguía el problema. En squid
creé acl´s para los dominios de hotamil y probé con relgas del tipo:

acl hot_domains dstdomain .hotmail .messenger.hotmail.com .msn .etc
always_direct allow hot_domains

Lo cual me parecio redundante (pero con probar) ya que squid no entiende
otro protocolo que no sea http/s y algo de ftp.
Además hacia squid-box mando solo el trafico http, el https le dejo
pasar. (formward)

Lo cual llama también la atención ya al intentar loguearse en hotmail la
URL es https, y una vez que pasa esa instacia es http, en mi caso de
todos se queda trabado en https, no llega al http.

Vale aclarar que esto es SOLO con hotmail, el https anda perfectamente
en otros sitios.

Lo raro y lo que me hace pensar (muchísimo) es que el problema esta en
alguno de mis "servidores" ya que si:
conecto el modem (ethernet zyxel) directo a una pc (cualquiera) y creo
una conexion ppp0 (digamos en modo brigde), el msn conecta y entra a
hotmail.

Lo peor es que no estuve haciendo cambios, esto empezó a suceder de la
nada. Y esto es lo peor a la hora de dar con la solución.

En el dns no toque nada, en el squid tampoco, no se muchachos, estoy
barado, me estoy enloqueciendo y mi hno. me va a acribillar por su jotmeil.

Un dato importante es que si en el GW, que es el que disca la conexion
ppp, hago poff y pon el msn conecta..pero si dps cierro sesion y intento
de nuevo (todo esto en cuestion de 3 minutos), nunca mas se conecta.
Igualmente eso fue antes ahora ya no sirve, ni siquiera me puedo
conectar de esa forma.

Hace ya unos 6 dias incluyendo el de hoy, que vengo lidiando con esto.

Googleé: si googleo "iptables 81000306" hay unas paginas brasileras en
donde alguien parece ser que tuvo un problema similar..y otras paginas
arabaes, en fin; si googleo "81000306" Ufff..aparecen muchos resultados
y de paginas del estilo, messengeradictos.com, ilovemess.com,
meesengerandmyfamily.com y algún que otro foro, en donde la gente
escribe cada cosa, que a uno de dan ganas de apagar la PC para siempre y
dedicarse a jugar al crocket.
Las soluciones que ofrecen en estas paginas son de lo mas insólitas que
he leído en mi vida. Te pueden llegar a decir "Apagá el modem un rato,
regá el jardin de tu casa y proba a la media hora"
El resto de google, paginas en chino u otros idiomas desconocidos.

Y bueno el "Sop.Tec." de M$ ...mejor ni mencionarlo.

Perdon por el mail largo, pero realmente no se que hacer. Me estoy
volviendo loco.

	Les agradezco infinitamente a todos, al menos por el hecho de leerlo.

Muchas Gracias, Saludos.

[0] http://img152.imageshack.us/img152/7951/esrcm0.jpg




Reply to: