Antes de nada, un saludito a la lista: estuve apuntado hace ya un puñado de años... y ahora procuro volver.
A lo que vamos. Tengo un problema que sé que creo resolver, pero no sé si habrá otra mejor solución o si simplemente estoy reinventando la rueda (quizás haya software que lo haga ya, pero no lo he encontrado). Mi problema son los smartphones: hay demasiados y no quiero dejar que se conecten a la red wifi o, mejor dicho, que se conecten a internet a través de la red wifi. He estado indagando sobre esto y he logrado identificarlos más o menos fielmente con el servidor dhcp siguiendo ciertos criterios que ahora no vienen a cuento. Muy bien, ya los tengo identificados y se me ocurre, bien darles un subrango de direcciones ip que luego filtro con iptables, bien denegarles directamente la ip. Hasta aquí todo bien. El problema es que este es un criterio demasiado endeble, porque siempre queda la posibilidad de que un avispado se de cuenta de que poniendo él una ip fija, consigue salir a internet; y luego se propague la voz. Para atajarlo se me ha ocurrido lo siguiente: 1. Al identificarlo con el servidor dhcp como un smartphone, además de darle ip en el subrango filtrado, apunto su dirección MAC en el fichero de log (pongamos que es /var/log/dhcpd.log). 2. Me creo un demonio que cada medio minuto, por ejemplo, recopile esas MAC y cree reglas de filtrado de iptables. Para no acumular y acomular direcciones MAC, el veto dura cierto tiempo, después del cual elimino la regla. 3. Esto que pretendo hacer es algo parecido a lo que hace denyhosts o, más aún, fail2ban. No he usado este segundo, pero me imagino que ni tiene esto que quiero ni habrá posibilidad de escribirle "un módulo", porque supongo que su filtrado se basa en ip de origen y el mío tiene que ser mac de origen. Mi duda viene de cuál es la mejor forma de crear las reglas iptables para que las comprobaciones de las reglas de filtrado de MAC sean las mínimas, ya que quizás puede que se junten muchas MAC vetadas y eso imagino que relentizará el flujo de paquetes. A mí se me ha ocurrido lo siguiente (supongamos que las comunicaciones con los equipos de la red wifi se reciben por la interfaz eth1): iptables -t nat -N SMARTPHONES iptables -t nat -A PREROUTING -i eth1 -p tcp -j SMARTPHONES iptables -I FORWARD -m connmark --mark 0xfe -j DROP iptables -I INPUT -m connmark --mark 0xfe -j DROP # Todas estas reglas serían las que tendría # dinámicamente que ir creando y borrando iptables -I SMARTPHONES -m mac --mac-source AA -j CONNMARK --set-mark 0xfe . . . iptables -I SMARTPHONES -m mac --mac-source ZZ -j CONNMARK --set-mark 0xfe O sea, la idea que tengo es solamente hacer las comprobaciones de la MAC con el primer paquete de la conexión y ponerle una marca. Eso evita que los siguientes paquetes de las máquinas que pueden conectar tengan que atravesar de nuevo toda la lista de direcciones MAC. ¿Es buena idea esto? ¿Creéis que funcionará? Lo que no sé si hacer es justamente después de marcar el paquete, salir de la cadena SMARTPHONES: iptables -A SMARTPHONES -m mac --mac-source AA -j CONNMARK --set-mark 0xfe iptables -A SMARTPHONES -m connmark --mark 0xfe -j RETURN Esto duplica las reglas de la cadena SMARTPHONES a cambio de no tener que comprobar todas las reglas, si el paquete resulta marcado. No sé qué será lo menos costoso: supongo que dependerá de la proporción de máquinas filtradas respecto a las totales. Tampoco sé muy bien si todas las comprobaciones son igual de costosas: imagino que no. De antemano, muchas gracias y perdón por el tochazo. -- Femmina è cosa mobil per natura. --- Francisco Petrarca --- -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20140513153152.ga7...@cubo.casa