Seguridad Wireless - Wifi

Equipos y materiales => Puntos de acceso, routers, switchs y bridges => Openwrt & LEDE => Mensaje iniciado por: panteraxavi en 08-04-2017, 13:52 (Sábado)

Título: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 08-04-2017, 13:52 (Sábado)
Necesito crear un código en python que según el comando que se le envíe active o desactive la gestión remota del router con OpenWrt, tanto vía wan como lan.

He estado mirando la interfaz luci en la pestaña System-Administration que aparece la opción de habilitar SSH tanto por lan, wan, wan6, wwan y unspecified. Comprobando el código html, cuando se produce un cambio en el radiobutton llama a una función llamada "cbi_d_update(this.id)". He querido buscar esta función para saber que proceso sigue para habilitar o deshabitar ssh, sin embargo, no localizo donde almacena luci estas funciones.

Saludos.
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 08-04-2017, 16:20 (Sábado)
Acabo de ejecutar el siguiente comando: /etc/init.d/dropbear stop y deshabita el acceso al router por ssh pero  lo hace tanto para el acceso lan como wan y yo querría además poder deshabitar uno u otro.

Saludos
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: Tki2000 en 09-04-2017, 12:22 (Domingo)
Acabo de ejecutar el siguiente comando: /etc/init.d/dropbear stop y deshabita el acceso al router por ssh pero  lo hace tanto para el acceso lan como wan y yo querría además poder deshabitar uno u otro.

Saludos

¿Por qué no bloqueas el tráfico con el firewall? Desde ahí puedes escoger la zona que bloqueas.
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 09-04-2017, 12:43 (Domingo)
Acabo de ejecutar el siguiente comando: /etc/init.d/dropbear stop y deshabita el acceso al router por ssh pero  lo hace tanto para el acceso lan como wan y yo querría además poder deshabitar uno u otro.

Saludos

¿Por qué no bloqueas el tráfico con el firewall? Desde ahí puedes escoger la zona que bloqueas.

Gracias Tki2000 por responder. Entiendo por lo que dices que le añada alguna regla iptables en el fichero firewall.user ¿ verdad?.  No consigo me funcione las reglas iptables que introduzco en ese fichero y el cual es cargado en el inicio del firewall. Tengo otro post que solicito ayuda para configurar reglas porque no me está funcionando.

Saludos.
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: eduperez en 10-04-2017, 11:48 (Lunes)
En "/etc/config/dropbear" deberías tener una entrada para cada interfaz que Dropbear está escuchando conexiones; entonces, basta con que modifiques ese fichero (yo tendría dos ficheros, y cambiaría de uno a otro mediante un enlace simbólico) y ejecutes "/etc/init.d/dropbear reload".
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 10-04-2017, 15:21 (Lunes)
En "/etc/config/dropbear" deberías tener una entrada para cada interfaz que Dropbear está escuchando conexiones; entonces, basta con que modifiques ese fichero (yo tendría dos ficheros, y cambiaría de uno a otro mediante un enlace simbólico) y ejecutes "/etc/init.d/dropbear reload".

Gracias eduperez por responder. No se me ha quedado claro exactamente que debería hacer. En fichero dropbear tengo lo siguiente:

config dropbear
   option PasswordAuth 'on'
   option Port '22'
   option GatewayPorts 'on'

Saludos
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: Tki2000 en 10-04-2017, 19:06 (Lunes)
Acabo de ejecutar el siguiente comando: /etc/init.d/dropbear stop y deshabita el acceso al router por ssh pero  lo hace tanto para el acceso lan como wan y yo querría además poder deshabitar uno u otro.

Saludos

¿Por qué no bloqueas el tráfico con el firewall? Desde ahí puedes escoger la zona que bloqueas.

Gracias Tki2000 por responder. Entiendo por lo que dices que le añada alguna regla iptables en el fichero firewall.user ¿ verdad?.  No consigo me funcione las reglas iptables que introduzco en ese fichero y el cual es cargado en el inicio del firewall. Tengo otro post que solicito ayuda para configurar reglas porque no me está funcionando.

Saludos.

Las reglas iptables para bloquear puertos por interfaces me han  funcionado de la siguiente manera:

Bloquear puerto:
Código: [Seleccionar]
iptables -A input_lan_rule -p tcp --dport 80 --in-interface br-lan -j DROPDesbloquear puerto:
Código: [Seleccionar]
iptables -D input_lan_rule -p tcp --dport 80 --in-interface br-lan -j DROP
Lo más raro que he apreciado, es que si bloqueo el puerto poniendo la regla de iptables, a veces me tardaba hasta un minuto en empezar a funcionar. Al quitar la regla, empezaba a funcionar otra vez de forma casi automática. No sé el por qué. Pero entre que iptables no lo domino, se me escapan muchas cosas, y que no bloqueaba el tráfico inmediatamente, me he vuelto un poco más majareta...  >:D

Por lo que he visto, para la wan, existe otro chain delegado, al igual que input_lan_rule, que se llama input_wan_rule (por lo que que veo la simplicidad no existe en iptables), y que supongo que será el que habrá que usar para bloquear el tráfico de la wan. Mi ejemplo era para bloquear el puerto 80 de luci en la lan, y me funciona. Creo que el ejemplo lo puedes adaptar a tus necesidades para bloquear los puertos de la lan y la wan para SSH. Tendrás que averiguar cómo se llaman las interfaces en tu router. En el mío br-lan son, la lan cableada+las wifis, y la wan es eth0.2. Mira a ver cómo se llaman en el tuyo para poner los nombres correctos. Aunque supongo que si las chains ya se llaman lan_blahblah y wan_blahblah, sólo actuarán sobre un tipo de interfaz, pero yo he preferido asegurarme.

Ten cuidado y no actives todo a la vez, o no podrás administrar el router y tendrás que resetearlo para volver a acceder a él.

Edito: para saber cómo se delegan las chains he utilizado el comando iptables-save, en el que más o menos se puede leer cómo se construye el árbol de reglas de iptables. En él se puede ver que
INPUT se delega en delegate_input
Código: [Seleccionar]
-A INPUT -j delegate_inputdelegate_input se delega según la interfaz en zone_lan_input y zone_wan_input
Código: [Seleccionar]
-A delegate_input -i br-lan -j zone_lan_input
-A delegate_input -i eth0.2 -j zone_wan_input
Y en zone_lan_input es donde he puesto la regla de bloqueo.

Edito 2: Queda otro delegado más, ¡cómo no!
Código: [Seleccionar]
-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_ruleY en input_lan_rule es donde he puesto la regla de bloqueo.

Lo pongo, por si alguien quiere saber por dónde he pegado los tiros.
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 10-04-2017, 21:33 (Lunes)
Muchísimas gracias Tki2000. Estaba pegándome cabezazos con esto ya varios dias.

Por lo que dices, la forma habitual de crear las reglas no es como se hace en OpenWrt, es decir, una regla del tipo:

iptables -A INPUT -p tcp -i br-lan -o eth2 -j DROP  ----> ¿ debebería hacerse del siguiente modo?
iptables -A zone_lan_input -d zone_wan_input -j DROP

Esos comandos de delegate ¿ son para crear una referencia a un comando ?. ¿ Esa forma en la que aparecen es un modo particular a OpenWrt?. Me gustaría saber interpretar el contenido del fichero salvado con iptables-save, que más o menos puedo intuirlo gracias a lo que has aclarado pero lo mismo estoy interpretando algo de manera incorrecta y la lío.

Respecto a lo de bloquear el acceso al router por ssh y por web ya me ocurrió 2 veces esta tarde configurando las reglas desde el fichero /etc/config/firewall  ;D



Edito:  Por ejemplo, he querido transformar la primera regla que pusiste en forma más reducida como indicas al final, pero no me funciona:

iptables -A zone_lan_input -p tcp --dport 80 -j DROP

Muchas gracias por la ayuda.
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: Tki2000 en 10-04-2017, 22:38 (Lunes)
Muchísimas gracias Tki2000. Estaba pegándome cabezazos con esto ya varios dias.

Por lo que dices, la forma habitual de crear las reglas no es como se hace en OpenWrt, es decir, una regla del tipo:

iptables -A INPUT -p tcp -i br-lan -o eth2 -j DROP  ----> ¿ debebería hacerse del siguiente modo?
iptables -A zone_lan_input -d zone_wan_input -j DROP

Esos comandos de delegate ¿ son para crear una referencia a un comando ?. ¿ Esa forma en la que aparecen es un modo particular a OpenWrt?. Me gustaría saber interpretar el contenido del fichero salvado con iptables-save, que más o menos puedo intuirlo gracias a lo que has aclarado pero lo mismo estoy interpretando algo de manera incorrecta y la lío.

Respecto a lo de bloquear el acceso al router por ssh y por web ya me ocurrió 2 veces esta tarde configurando las reglas desde el fichero /etc/config/firewall  ;D



Edito:  Por ejemplo, he querido transformar la primera regla que pusiste en forma más reducida como indicas al final, pero no me funciona:

iptables -A zone_lan_input -p tcp --dport 80 -j DROP

Muchas gracias por la ayuda.

No utilices zone_lan_input. Utiliza input_lan_rule, que según la descripción es la tabla para poner las reglas de usuario.
Perdón, en el análisis de antes me faltaba un paso. Hay otro delegado:
Código: [Seleccionar]
-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_ruleEn el ejemplo lo puedes ver, pero a la hora de comentarlo me he hecho la picha un lío y al ver lan_blahblah, pensaba que ya había llegado al final del desarrollo.
Es la primera regla dentro de zone_lan_input, por eso estas reglas se ejecutan antes que las demás. En tu caso al agregarlas directamente a zone_lan_input, se ponen al final, y si hay una regla antes que decida la ejecución, se ejecuta. Por eso, pon la regla en input_lan_rule, que es lo primero que se ejecuta.


Citar
iptables -A INPUT -p tcp -i br-lan -o eth2 -j DROP  ----> ¿ debebería hacerse del siguiente modo?

El problema de ponerlo en INPUT, es que la primera regla de INPUT es delegar, y la tuya quedaría en segundo lugar, por lo tanto no llegaría. Creo que hay una opción en iptables para insertar en posiciones anteriores, pero como ya te he dicho antes, hay cosas que se me escapan, y ya que tienes el filtro establecido por interfaces, mejor poner la regla en el sitio adecuado, a ponerlo interceptando todo el tráfico de todas las interfaces. Además, si pones tu regla antes que los delegados, puedes alterar lo que ya haya en los delegados y puede dejar de funcionar todo lo demás. Mucho cuidado con ello.
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: eduperez en 11-04-2017, 00:04 (Martes)
En "/etc/config/dropbear" deberías tener una entrada para cada interfaz que Dropbear está escuchando conexiones; entonces, basta con que modifiques ese fichero (yo tendría dos ficheros, y cambiaría de uno a otro mediante un enlace simbólico) y ejecutes "/etc/init.d/dropbear reload".

Gracias eduperez por responder. No se me ha quedado claro exactamente que debería hacer. En fichero dropbear tengo lo siguiente:

config dropbear
   option PasswordAuth 'on'
   option Port '22'
   option GatewayPorts 'on'

Saludos

Esto es lo que tengo yo en "/etc/config/dropbear":
Código: [Seleccionar]
config dropbear
option Port '22'
option Interface 'lan'
option PasswordAuth 'on'

config dropbear
option Port '22'
option Interface 'wan'
option PasswordAuth 'off'
option RootPasswordAuth 'off'

Como puedes ver, tengo dos instancias de Dropbear, una para LAN (donde acepto identificación por contraseña) y una para WAN (donde sólo acepto identificación por  clave compartida). Manipulando el contenido de ese fichero, y recargando el Dropbear, puedes activarlo o desactivarlo en la interfaz que te interese.
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 12-04-2017, 09:51 (Miércoles)
En "/etc/config/dropbear" deberías tener una entrada para cada interfaz que Dropbear está escuchando conexiones; entonces, basta con que modifiques ese fichero (yo tendría dos ficheros, y cambiaría de uno a otro mediante un enlace simbólico) y ejecutes "/etc/init.d/dropbear reload".

Gracias eduperez por responder. No se me ha quedado claro exactamente que debería hacer. En fichero dropbear tengo lo siguiente:

config dropbear
   option PasswordAuth 'on'
   option Port '22'
   option GatewayPorts 'on'

Saludos

Esto es lo que tengo yo en "/etc/config/dropbear":
Código: [Seleccionar]
config dropbear
option Port '22'
option Interface 'lan'
option PasswordAuth 'on'

config dropbear
option Port '22'
option Interface 'wan'
option PasswordAuth 'off'
option RootPasswordAuth 'off'

Como puedes ver, tengo dos instancias de Dropbear, una para LAN (donde acepto identificación por contraseña) y una para WAN (donde sólo acepto identificación por  clave compartida). Manipulando el contenido de ese fichero, y recargando el Dropbear, puedes activarlo o desactivarlo en la interfaz que te interese.

muchas gracias eduperez. Me funciona del modo que indicas.

Saludos
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 12-04-2017, 10:20 (Miércoles)
Acabo de ejecutar el siguiente comando: /etc/init.d/dropbear stop y deshabita el acceso al router por ssh pero  lo hace tanto para el acceso lan como wan y yo querría además poder deshabitar uno u otro.

Saludos

¿Por qué no bloqueas el tráfico con el firewall? Desde ahí puedes escoger la zona que bloqueas.

Gracias Tki2000 por responder. Entiendo por lo que dices que le añada alguna regla iptables en el fichero firewall.user ¿ verdad?.  No consigo me funcione las reglas iptables que introduzco en ese fichero y el cual es cargado en el inicio del firewall. Tengo otro post que solicito ayuda para configurar reglas porque no me está funcionando.

Saludos.

Las reglas iptables para bloquear puertos por interfaces me han  funcionado de la siguiente manera:

Bloquear puerto:
Código: [Seleccionar]
iptables -A input_lan_rule -p tcp --dport 80 --in-interface br-lan -j DROPDesbloquear puerto:
Código: [Seleccionar]
iptables -D input_lan_rule -p tcp --dport 80 --in-interface br-lan -j DROP
Lo más raro que he apreciado, es que si bloqueo el puerto poniendo la regla de iptables, a veces me tardaba hasta un minuto en empezar a funcionar. Al quitar la regla, empezaba a funcionar otra vez de forma casi automática. No sé el por qué. Pero entre que iptables no lo domino, se me escapan muchas cosas, y que no bloqueaba el tráfico inmediatamente, me he vuelto un poco más majareta...  >:D

Por lo que he visto, para la wan, existe otro chain delegado, al igual que input_lan_rule, que se llama input_wan_rule (por lo que que veo la simplicidad no existe en iptables), y que supongo que será el que habrá que usar para bloquear el tráfico de la wan. Mi ejemplo era para bloquear el puerto 80 de luci en la lan, y me funciona. Creo que el ejemplo lo puedes adaptar a tus necesidades para bloquear los puertos de la lan y la wan para SSH. Tendrás que averiguar cómo se llaman las interfaces en tu router. En el mío br-lan son, la lan cableada+las wifis, y la wan es eth0.2. Mira a ver cómo se llaman en el tuyo para poner los nombres correctos. Aunque supongo que si las chains ya se llaman lan_blahblah y wan_blahblah, sólo actuarán sobre un tipo de interfaz, pero yo he preferido asegurarme.

Ten cuidado y no actives todo a la vez, o no podrás administrar el router y tendrás que resetearlo para volver a acceder a él.

Edito: para saber cómo se delegan las chains he utilizado el comando iptables-save, en el que más o menos se puede leer cómo se construye el árbol de reglas de iptables. En él se puede ver que
INPUT se delega en delegate_input
Código: [Seleccionar]
-A INPUT -j delegate_inputdelegate_input se delega según la interfaz en zone_lan_input y zone_wan_input
Código: [Seleccionar]
-A delegate_input -i br-lan -j zone_lan_input
-A delegate_input -i eth0.2 -j zone_wan_input
Y en zone_lan_input es donde he puesto la regla de bloqueo.

Edito 2: Queda otro delegado más, ¡cómo no!
Código: [Seleccionar]
-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_ruleY en input_lan_rule es donde he puesto la regla de bloqueo.

Lo pongo, por si alguien quiere saber por dónde he pegado los tiros.


Hola Tki2000. Voy a intentar detallar lo que he entendido y espero que no sea una barbaridad  ;D

1.- Con la siguiente regla :
-A INPUT -j delegate_input
¿ estaría creando un delegado de Input?, es decir, cuando de una manera tradicional en un SO Linux ponía "iptables -A INPUT ..... ", ahora, tras la regla siguiente debería ser, "iptables -A delegate_input ..........."

2.- Con la siguiente regla:
-A delegate_input -i br-lan -j zone_lan_input
la cadena INPUT (que ahora se llamaría delegate_input) para la interfaz br-lan, ¿ se llamará zone_lan_input?, es decir, cuando en Linux figuraba "iptables -A INPUT -i br-lan -j ACCEPT", ¿ ahora debería escribirse "iptables -A zone_lan_input -j ACCEPT?

3.- Con la siguiente regla:
-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_rule
Ahora zone_lan_input delega en input_lan_rule por lo que una regla como la del punto 2 " iptables -A INPUT -i br-lan -j ACCEPT", ¿pasaría a ser "iptables -A input_lan_rule -j ACCEPT?

Espero no haber mareado mucho

Saludos
Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: Tki2000 en 12-04-2017, 11:43 (Miércoles)
Acabo de ejecutar el siguiente comando: /etc/init.d/dropbear stop y deshabita el acceso al router por ssh pero  lo hace tanto para el acceso lan como wan y yo querría además poder deshabitar uno u otro.

Saludos

¿Por qué no bloqueas el tráfico con el firewall? Desde ahí puedes escoger la zona que bloqueas.

Gracias Tki2000 por responder. Entiendo por lo que dices que le añada alguna regla iptables en el fichero firewall.user ¿ verdad?.  No consigo me funcione las reglas iptables que introduzco en ese fichero y el cual es cargado en el inicio del firewall. Tengo otro post que solicito ayuda para configurar reglas porque no me está funcionando.

Saludos.

Las reglas iptables para bloquear puertos por interfaces me han  funcionado de la siguiente manera:

Bloquear puerto:
Código: [Seleccionar]
iptables -A input_lan_rule -p tcp --dport 80 --in-interface br-lan -j DROPDesbloquear puerto:
Código: [Seleccionar]
iptables -D input_lan_rule -p tcp --dport 80 --in-interface br-lan -j DROP
Lo más raro que he apreciado, es que si bloqueo el puerto poniendo la regla de iptables, a veces me tardaba hasta un minuto en empezar a funcionar. Al quitar la regla, empezaba a funcionar otra vez de forma casi automática. No sé el por qué. Pero entre que iptables no lo domino, se me escapan muchas cosas, y que no bloqueaba el tráfico inmediatamente, me he vuelto un poco más majareta...  >:D

Por lo que he visto, para la wan, existe otro chain delegado, al igual que input_lan_rule, que se llama input_wan_rule (por lo que que veo la simplicidad no existe en iptables), y que supongo que será el que habrá que usar para bloquear el tráfico de la wan. Mi ejemplo era para bloquear el puerto 80 de luci en la lan, y me funciona. Creo que el ejemplo lo puedes adaptar a tus necesidades para bloquear los puertos de la lan y la wan para SSH. Tendrás que averiguar cómo se llaman las interfaces en tu router. En el mío br-lan son, la lan cableada+las wifis, y la wan es eth0.2. Mira a ver cómo se llaman en el tuyo para poner los nombres correctos. Aunque supongo que si las chains ya se llaman lan_blahblah y wan_blahblah, sólo actuarán sobre un tipo de interfaz, pero yo he preferido asegurarme.

Ten cuidado y no actives todo a la vez, o no podrás administrar el router y tendrás que resetearlo para volver a acceder a él.

Edito: para saber cómo se delegan las chains he utilizado el comando iptables-save, en el que más o menos se puede leer cómo se construye el árbol de reglas de iptables. En él se puede ver que
INPUT se delega en delegate_input
Código: [Seleccionar]
-A INPUT -j delegate_inputdelegate_input se delega según la interfaz en zone_lan_input y zone_wan_input
Código: [Seleccionar]
-A delegate_input -i br-lan -j zone_lan_input
-A delegate_input -i eth0.2 -j zone_wan_input
Y en zone_lan_input es donde he puesto la regla de bloqueo.

Edito 2: Queda otro delegado más, ¡cómo no!
Código: [Seleccionar]
-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_ruleY en input_lan_rule es donde he puesto la regla de bloqueo.

Lo pongo, por si alguien quiere saber por dónde he pegado los tiros.


Hola Tki2000. Voy a intentar detallar lo que he entendido y espero que no sea una barbaridad  ;D

1.- Con la siguiente regla :
-A INPUT -j delegate_input
¿ estaría creando un delegado de Input?, es decir, cuando de una manera tradicional en un SO Linux ponía "iptables -A INPUT ..... ", ahora, tras la regla siguiente debería ser, "iptables -A delegate_input ..........."

2.- Con la siguiente regla:
-A delegate_input -i br-lan -j zone_lan_input
la cadena INPUT (que ahora se llamaría delegate_input) para la interfaz br-lan, ¿ se llamará zone_lan_input?, es decir, cuando en Linux figuraba "iptables -A INPUT -i br-lan -j ACCEPT", ¿ ahora debería escribirse "iptables -A zone_lan_input -j ACCEPT?

3.- Con la siguiente regla:
-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_rule
Ahora zone_lan_input delega en input_lan_rule por lo que una regla como la del punto 2 " iptables -A INPUT -i br-lan -j ACCEPT", ¿pasaría a ser "iptables -A input_lan_rule -j ACCEPT?

Espero no haber mareado mucho

Saludos

Te pongo un extracto del árbol de reglas, para que veas el proceso de ejecución y la secuencia en la que se ejecutan. Todo esto está extraído de un volcado de iptables-save.

En lugar de hablar de delegados, vamos a hablar de bloques de reglas.

Código: [Seleccionar]
-A INPUT -j delegate_input
...

-A delegate_input -i lo -j ACCEPT
-A delegate_input -m comment --comment "user chain for input" -j input_rule
-A delegate_input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A delegate_input -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn_flood
-A delegate_input -i br-lan -j zone_lan_input
-A delegate_input -i eth0.2 -j zone_wan_input
...

-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_rule
-A zone_lan_input -p tcp -m tcp --dport 9100 -m comment --comment p910nd_Printer -j ACCEPT
-A zone_lan_input -m conntrack --ctstate DNAT -m comment --comment "Accept port redirections" -j ACCEPT
-A zone_lan_input -j zone_lan_src_ACCEPT
...

-A input_lan_rule -p tcp --dport 80 -j DROP

En el chain filter, el primer bloque de reglas de INPUT, es saltar a ejecutar el bloque de reglas delegate_input. No tiene más elementos, así que directamente salta al bloque delegate_input.
El bloque delegate_input, tiene varias reglas que se ejecutan en secuencia. La 5ª y 6ª regla, diferencian el tipo de reglas a aplicar, distinguiendo por interface, es decir si la interfaz es br-lan, pasa a ejecutar el bloque zone_lan_input, y si es es eth0.2, pasa a ejecutar el bloque zone_wan_input. Los bloques que se ejecutan, son un salto y retorno, es decir, salta al bloque y cuando termine, vuelve al bloque original de la llamada, a no ser que la regla se corte expresamente y no haya retorno, lo cual suele suceder, por lo que la siguiente regla de un bloque que originó la llamada puede no ejecutarse en secuencia.
En este caso, la 5ª regla hace un salto al bloque zone_lan_input. Miramos el bloque zone_lan_input, y vemos que tiene 4 reglas, una de las cuales (la primera), es llamar al bloque input_lan_rule, por lo que este bloque, dentro de zone_lan_input, sería el primero en ejecutarse, y después retornaría a ejecutar la 2ª, 3ª y 4ª regla.
En input_lan_rule, he puesto que el tráfico del puerto 80 no se tenga en cuenta. Al terminar de ejecutar esa regla, retornaría la secuencia a zone_lan_input, y la última regla es zone_lan_src_ACCEPT, por lo tanto, todo lo que llegue a esa regla, sería aceptado como tráfico.


Vamos a reordenar ahora los bloques, según la secuencia en la que se ejecutan, para que lo veas más gráficamente:

Código: [Seleccionar]
-A INPUT -j delegate_input
-A delegate_input -i lo -j ACCEPT
-A delegate_input -m comment --comment "user chain for input" -j input_rule
-A delegate_input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A delegate_input -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn_flood
-A delegate_input -i br-lan -j zone_lan_input
-A zone_lan_input -m comment --comment "user chain for input" -j input_lan_rule
-A input_lan_rule -p tcp --dport 80 -j DROP
-A zone_lan_input -p tcp -m tcp --dport 9100 -m comment --comment p910nd_Printer -j ACCEPT
-A zone_lan_input -m conntrack --ctstate DNAT -m comment --comment "Accept port redirections" -j ACCEPT
-A zone_lan_input -j zone_lan_src_ACCEPT
-A delegate_input -i eth0.2 -j zone_wan_input

No sé si así verás mejor la secuenciación de reglas. He indentado la secuencia, empotrando los bloques (para el tráfico que nos interesa) dentro de la secuencia, para que veas cómo se ejecutan. Ten en cuenta, que si dentro de alguno de los bloques, cortas cierto tráfico, las siguientes reglas de la secuencia pueden no aplicarse, por eso debes tener cuidado a la hora de poner las reglas en una secuencia. Es una secuenciación, un tanto enreversada, haciendo saltos por bloques de reglas, pero que permite un control del tráfico, preciso.

La secuencia de ejecución se corta, cuando una de las reglas es satisfecha. Es decir, si en la secuenciación que te he reordenado, la regla del tráfico por el puerto 80, se satisface, la siguiente regla en la secuencia (en este caso la regla del servidor de impresión), no se sigue ejecutando. Por eso te digo, que la secuencia puede no retornar de un bloque.

Como te decía en anteriores post, hay muchas cosas de iptables que se me escapan. Sólo intento entenderlo descifrando su funcionamiento. Nada que otra persona no pueda hacer partiendo de los mismos datos.
Puede que en mis deducciones la haya cagado, y nada de lo que te cuento sea cierto.  >:D
Si alguien quiere corregirme, es libre de hacerlo.

Título: Re: Duda activar y desactivar SSH a través de consola
Publicado por: panteraxavi en 12-04-2017, 12:13 (Miércoles)
Muchísimas gracias Tki2000. Más claro explicarlo es imposible. Me ha servido de gran ayuda y he podido crear probando el que deniege todo el acceso a internet a los equipos de la red local y que sólo permita acceso a una url concreta.

iptables -A forwarding_lan_rule -p tcp  -d 54.224.0.0/12 -j zone_wan_dest_ACCEPT   
iptables -A forwarding_lan_rule -p tcp  -j zone_wan_dest_REJECT

Iré haciendo pruebas para configurar lo que necesito para el proyecto.

Saludos.