On Thu, 2006-12-07 at 12:06 -0400, Rodolfo Alcazar wrote: > On Wed, 2006-12-06 at 16:08 -0300, Horst H. von Brand wrote: > > Amables lectores: Cualquier script de cortafuegos que contenga DROP esta > > mal. Quemenlo sin mirarlo, leerlo puede meterles ideas extremadamente > > erradas en la cabeza. > > No lo creo. La mayoría de Firewalls (no solo iptables) usan reglas del > tipo DROP. DROP tiene propósitos muy importantes. Sirve para: > > a) Minimizar tráfico basura: si respondes, REJECT, generas tráfico. > Puedes ser víctima de un ataque DOS (Denial Of Service).
En general los ataques DoS se basan en que recibes demasiado tráfico, no que lo generes. Otra cosa son los llamados amplification attacks, donde se asume que pocos paquetes logran generar muchos paquetes de respuestas. No es el caso aquí (requieres 1000 paquetes para generar 1000 paquetes de respuesta, estos últimos de tamaño mínimo). > c) Minimizar el uso de tu CPU. Generar la respuesta, toma un tiempo de > proceso. Si es una, no hay problema. Pero en un ataque BRUTE FORCE, te > consume recursos valiosos. Si el atacante es hábil, te refunde el > tráfico. El trabajo de enviar un paquete es mínimo, y no se requieren recursos (memoria asociada a una conexión en vías de establecerse por ejemplo) que es lo que aprovechan generalmente los DoS. Piensa que con una CPU bastante rasca puedes saturar un enlace sin problemas enviando este tipo de paquetes. Tanto en este caso como en el anterior, puede valer la pena usar DROP en situaciones extremas (cuando por ejemplo se sabe que el remitente de un paquete es falsificado). Son el tipo de situaciones que se configuran a mano en caso de emergencia, y no están dentro del script de configuración normal. > d) Dificultar el diagnóstico de puertos. Despistar al atacante. Retrasar > los intentos fallidos. Hacer creer al atacante que el puerto no está > abierto. Un puerto cerrado genera una respuesta al querer iniciar una conexión: un paquete TCP con el flag RST seteado. Si se quiere hacer creer que el puerto está cerrado, habría que enviar algo igual (usando la opción tcp-reset). En el caso de enviar un paquete UDP a un puerto cerrado, la respuesta normal es un paquete ICMP port-unreachable, que es justamente el default de REJECT de iptables. En resumen: usando DROP están dándole más información al atacante de la que tenía antes: ahora sabe que hay un firewall bloqueándole esos puertos específicos. Saludos, -- Jens.

