domingo, 10 de marzo de 2013

manejar varias interfaces de red con firestarter e iptables


Por casualidades (o causalidades) de la vida, llevo una temporada usando firestarter como firewall. Firestarter es una GUI para configurar de forma sencilla iptables. Como con todo, después de usarlo un tiempo, surge una lista de pros y contras, en la que yo destacaría:





Pros:

  • Sencillez: Se configura a través de un asistente y diálogos de prefrencias. Definir reglas y políticas se convirte en algo trivial.
  • Buenos defaults: Creo que tiene una buena configuración por defecto, y suficiente para la mayoría de equipos de escritorio. Aunque siempre se pueden añadir y modificar reglas y políticas.
  • Daemon: Se ejecuta como daemon, y se puede configurar para que se inicie/pare al conectarse a internet o al renovar la sesión DHCP.
  • Icono: El icono (opcional) en el área de notificación. Es imposible pasar algún evento por alto (aunque puede llegar a distraer).

Contras:

  • Interfaces: Firestarter permite configurar un dispositivo de red conectado a internet y un dispositivo de red conectado al área local. El problema está en que, dependiendo de la configuración de la red, la interfaz puede ser la misma, o puede no ser suficiente.

Para configurar otra interfaz hay que añadir manualmente las reglas mediante iptables. Pero, después de añadir las reglas, todo lo que pase por esa interfaz se guardará en los logs*.
El peligro está en que si esta nueva interfaz tiene mucho tráfico, los logs pueden crecer GBs, llegando a saturar la partición donde se almacenan.

Hay una forma de solucionar esto, añadiendo las reglas necesarias en /etc/firestarter/user-pre.
Por ejemplo, si firestarter está controlando una interfaz de red inalámbrica (wlan0), para permitir todo el tráfico a través de una interfaz de red cableada (eth0), hay que añadir:

iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT

*Llegados a este punto, he de decir que para evitar saturar los logs lo he intentado todo, o, por lo menos, todo lo que se me ocurrió. He intentado añadir reglas con -m limit, --limit, --limit-burst, LOG, añadir las reglas a las creadas por firestarter... Pero todo se seguía guardando en los logs.
Si conoces otra forma de evitarlo, agradecería un comentario ;)

7 comentarios:

  1. Para el control de logs, lo que se podría hacer es un script que controles con Cron y te limpie los logs deseados según el tiempo que estimes o el Hardware permita, por ejemplo¿no?(
    Saludos y muchas gracias por compartir conocimento
    luweeds

    ResponderEliminar
    Respuestas
    1. Sí, creo que valdía, está bien pensado :)
      Pero tendrías que programar el script y tendría un coste computacional un poco más alto, porque habría que borrar [las mismas] líneas dentro de /var/log/kern.log y /var/log/messages.

      Gracias a ti por estar siempre al pie del cañón, y además comentar :D

      Saludos!

      Eliminar
  2. Con un script + Cron (en root) con los comandos head ó split y redirigiendo a /dev/null...quizás..

    ResponderEliminar
  3. Soy yo de nuevo, antes de nada gracias a tí, para mi es un placer, y así aprendemos todos, te dejo un enlace, y a parte de las respuestas fíjate en los enlaces al final de la página, puedes probar los script's en VM's putualmente y si el resultado es el que quieres pasarselo a Cron y a despreocuparte¡¡.
    http://www.unix.com/shell-programming-scripting/42949-delete-old-logs.html

    ResponderEliminar
    Respuestas
    1. Bueno, entones gracias a los dos, porque esto está claro que es un equipo ;P

      La idea del script está muy bien, pero, con lo del coste computacional, me refería a que es más eficiente no tener que ejecutar nada. Es decir, aunque cuando programas el script puedes hacerlo de diversas formas (más o menos eficiente cada una), imagínate que tienes unos ficheros de 1gb/5gb/10gb, son dos ficheros enormes a analizar y modificar. Si no tienes que hacerles nada, tiempo [de cpu] que ahorras, no? :P

      Con lo de probar cosas en entornos controlados, estoy completamente de acuerdo. Es la forma de evitarse muchos apuros!

      Para rotar+comprimir+borrar logs, logrotate FTW ( http://linuxcommand.org/man_pages/logrotate8.html ), si no está instalado por defecto, sólo hay que configurarlo :D

      Eliminar
  4. Ok, gracias por la info, si se me ocurre algo que no sean scripts... :P Salud¡

    ResponderEliminar