Autor Tema: [Howto] Configuración Firewall desde luci para novatos  (Leído 556 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado peperfus

  • *****
  • Mensajes: 129
[Howto] Configuración Firewall desde luci para novatos
« en: 21-09-2018, 13:07 (Viernes) »
W A R N I N G
Citar
DISCLAIMER - EXCENCIÓN DE RESPONSABILIDAD
El siguiente tutorial / manual / howto, instrucciones o texto en general, carece de cualquier garantía y sólo está pensado como uso a modo educativo, de aprendizaje, experimentación, investigación y desarrollo.
Puede contener errores así como ambigüedades o falta de información precisa. En cualquier caso, las sugerencias, comentarios y críticas constructivas serán siempre bienvenidos.
El autor rechaza cualquier responsabilidad por cualquier tipo de daño, ya sea directo o indirecto, accidental o intencionado que la aplicación del siguiente texto pueda ocasionar.
Su uso está totalmente desaconsejado en entornos de producción a no ser, bajo la supervisión de un profesional debidamente cualificado y bajo su única responsabilidad.
La aplicación del siguiente texto en cualquier sistema, implica la total aceptación de estas condiciones.
Peperfus.

HOWTO FIREWALL (desde Luci)

Consideraciones previas.
Se recomienda descargar este texto a un archivo, o bien imprimirlo por si se pierde acceso a Internet durante la manipulación del firewall. Además, se recomienda encarecidamente, tener conocimientos de arranque en modo failsafe y recuperación. Altamente recomendado también es tener una copia del archivo de configuración del firewall (/etc/config/firewall). Pero sobre todo, la mejor opción es practicar estas pruebas en una máquina virtual.

Se parte de un router openwrt con 2 interfaces: la interfaz WAN (roja, Wide Area Network, normalmente correspondiente a Internet) y la LAN (verde, Local Area Network). Las opciones no comentadas las he dejado en su valor por defecto. Este Howto se centra sólo en red IPv4.

Configuración básica 1. (Configuración por defecto. Aquí no cambiaremos nada. Sólo echaremos un vistazo.)
Pestaña General.
Firewall – Zone Settings. Esta sección se refiere a las reglas generales por defecto.. Cuando un paquete no encaja con ninguna regla, se aplican estas por defecto. Si por ejemplo creamos una nueva interfaz y le asignamos una nueva zona, se le aplicarán estas reglas por defecto. (Una zona es un conjunto de reglas que se aplican a sus interfaces asociadas)
Input: accept
Output: accept
Forward: reject

Zones
NameZone ForwardingsInputOutputForwardMasqueradingMSS clampling
lanlan=>wanacceptacceptaccept
wanwan=>rejectrejectacceptrejectcheckcheck

Explicación:
  • El Zone forwarding se refiere al reenvío de paquetes, de una zona a otra. En este caso, la columna Zone Forwardings nos indica que la redirección de lan hacia wan está permitida (cosa necesaria para poder navegar por Internet). Esta es una regla específica que se puede modificar pulsando Edit, para especificar qué redirecciones entre qué interfaces permitir. Lo que venga de wan se rechaza. Esta configuración es específica.
  • Input se refiere a cualquier paquete que tenga como destinatario el propio router y provenga de alguna interfaz asociada a esa zona (entrada).
  • Output se refiere a cualquier paquete que tenga como emisor el propio router y vaya a alguna interfaz asociada a esa zona (salida).
  • Forward se refiere a cualquier paquete que venga desde esa zona para otra zona o viceversa (redirección).

Configuración básica 2. (Un poco más avanzada, con el propósito de entender mejor cómo funciona. No es una configuración fija, ni mucho menos. Se trata tan sólo de un ejemplo para practicar y entender. Cada uno que ajuste su firewall a sus necesidades)
Pestaña General.
Antes de nada, lo primero que vamos a hacer es irnos a la pestaña Traffic Rules.
Sección Open ports on router (bajo la lista de traffic rules)
Name: WEB
Protocol: TCP
External port: 80 443 (no sé por qué pone external. Yo creo que debería poner internal)
Pulsamos ADD. Se recargadá la página con la regla que hemos creado añadida a la lista. Le pulsamos el botón Edit:
Restrict to address family, yo le pongo sólo IPv4 porque paso del IPv6.
En Source zone le ponemos: lan
Bajamos abajo del todo y le damos a Save and Apply.

Gracias a la regla que acabamos de crear, no perderemos el acceso la web del router por los cambios que vamos a hacer ahora. Aparte, se debe poner una IP estática en el PC porque a partir de ahora cerraremos también el tráfico al DHCP y nos quedaremos sin IP de la red si la tenemos en dinámica (se nos asignará una dirección APIPA).
Nótese que en la especificación de puertos, hemos podido escribir varios, separados por espacio. También se puede especificar un rango, separando el puerto inicial y el final con un guión.

Vamos a ponerlo todo en reject (ojo, no apliquéis la configuración sin haber creado la regla anterior, porque perderéis el acceso al router y tendréis que reiniciarlo en failsafe mode)
Firewall – Zone Settings. Esta sección se refiere a las reglas generales. Cuando un paquete no encaja con ninguna regla, se aplican estas.
Input: reject
Output: reject
Forward: reject

Zones
NameZone ForwardingsInputOutputForwardMasqueradingMSS clampling
lanlan=>wanrejectrejectreject
wanwan=>rejectrejectrejectrejectcheckcheck

Pulsad en Edit de la Zona lan y, abajo, en la sección Inter-Zone Forwarding, desactivad wan de Allow forward to destination zones. El Zone Forwarding de la zona lan pasará a estar ahora en reject.
Save And Apply.
Comprobad en otra pestaña del navegador que no podréis navegar por Internet. Supuestamente, ahora mismo sólo deberíamos poder acceder a la web de administración del router (el maravilloso LUCI).

Explicación extra:
  • Masquerading significa que esa zona necesita enmascaramiento de IP (básicamente muy parecido a NAT, salvo que NAT asocia 1IP priv-1IP pub y NAPT asocia x IP's priv-1 IP pub), es decir, que la IP privada del host de lan debe ser “traducida” a la IP pública con la que sale a Internet, y luego viceversa para el camino de vuelta desde Internet hacia el host de la lan. Masquerading = NAPT
  • MSS Clamping no va a ser explicado aquí. No tocar.
Citar
Nota: NAT traduce (asocia) una dirección IP privada a una dirección IP pública, de tal manera que tan sólo podría navegar por Internet una máquina de la red local, puesto que la IP pública estaría ocupada en ese momento (a no ser que tuviéramos contratadas más direcciones IP públicas, lo cual es caro e innecesario en ámbito doméstico).
En cambio, Masquerading, también conocido como NAPT (Network Address Port Translation) o PAT (Port Address Translation) es capaz de asociar una IP pública a múltiples IPs privadas, gracias al uso de puertos. La asociación de una IP con su puerto IP:puerto (y su protocolo de transporte correspondiente en cada caso) se conoce como SOCKET.

Pestaña Port Forwards
En este apartado podemos abrir puertos para ofrecer servicios a Internet. Por ejemplo, servidor web, ftp, … o por ejemplo abrir puertos para eMule, uTorrent, o algún videojuego.

New port forward
Aquí le indicamos un nombre, el protocolo necesario, la zona externa (zona cliente), el puerto externo (en caso de querer asociar algún puerto concreto o rango, que no es algo común), la zona interna (servidora), la IP interna que ofrece el servicio y el puerto interno. Este apartado se entiende mejor cuando comprendemos el masquerading o NAPT. En este caso, nuestro servicio IP:puerto se “traduciría” a múltiples asociaciones IP:puerto a la salida, para los clientes. Veamos un ejemplo:
Voy a abrir los puertos 42.000 TCP y 42.001 UDP al eMule de mi ordenador (192.168.0.125)

NameProtocolExternal zoneExternal portInternal zoneInternal IP addressInternal port
eMule TCPTCPwanlan192.168.0.12542000
eMule UDPUDPwanlan192.168.0.12542001

En este caso estoy ofreciendo servicio TCP eMule en mi ordenador a través del puerto 42.000. Pero no especifico puerto externo, porque quiero que las conexiones entrantes puedan venir desde cualquier puerto de cliente. Y lo mismo con el servicio UDP.
Nota: es posible especificar un rango de puertos en la misma casilla. Para ello, simplemente separar el puerto inicial del final con un guión, por ejemplo: 3000-4000 (del 3000 al 4000). En otros apartados, también es posible la especificación de distintos puertos sueltos, simplemente separándolos con un espacio. Aquí no deja (no sé porqué)


Pestaña Traffic Rules
En esta sección podemos especificar reglas personalizadas. Aquí veremos la regla que creamos hace un rato, que hace posible que podamos seguir entrando a Luci.
Citar
Toda comunicación (esto es un concepto básico general) requiere de un emisor y un receptor. Y para que haya un diálogo, ambos papeles se intercambian en cuanto a que un mensaje va y vuelve de uno a otro.
Ahora nos preguntamos: Si tan sólo hemos abierto los puertos web a la entrada del router (INPUT).... y todo lo demás lo hemos cerrado (reject) ¿Cómo es que la información también puede volver, si no hemos creado regla de salida desde dichos puertos?  ???
Esta cuestión me tuvo bastantes horas investigando, hasta que di con el tema  :D
Existe una regla especial que se aplica por defecto y no podemos modificar desde este apartado (ya que es algo más avanzada), que dice que cualquier paquete de una conexión previamente establecida o relacionado con ella, tiene el paso permitido. Por esta regla genérica especial, que no vemos en esta sección, no es necesario permitir el tráfico de vuelta de un servicio, sino sólo el de ida.

Vamos a crear algunas reglas más para entenderlo mejor con ejemplos.
Ahora mismo podemos navegar por la web del router, pero prácticamente nada más. No podemos navegar por Internet, ni entrar por SSH al router....
Vamos a permitir esas conexiones desde aquí.
Open ports on router:
Name. SSH
Protocol: TCP
External port: 22
Pulsamos Add y luego, en la lista, la editamos para afinar la regla (botón Edit):
Restrict to family: (esto depende de tu configuración. Yo uso sólo IPv4)
Source zone: lan (de momento no queremos abrir este puedo afuera de nuestra red local)
Bajamos al final y Save & Apply.
Ahora ya deberíamos poder acceder por SSH al router. Probadlo con (por ejemplo) el putty.
Entramos por putty. Vamos a probar a hacer ping a google:
Código: [Seleccionar]
ping google.com
ping: bad address 'google.com'
Aquí tenemos otro problema: no hay comunicación DNS. No tenemos ninguna regla que permita tráfico DNS. Además, necesitamos 2 reglas: una para entrada de DNS desde lan hacia el router y otra de salida para que el propio router pueda consultar DNS a los servidores DNS de Internet (en este caso, la regla especial que hemos comentado antes no nos vale, porque nos referimos a dos conexiones distintas). ¿Nos valdría con una regla de tipo forward? Pues depende: si usamos el propio router como servidor dns (servicio dnsmasq) no, porque el router hace de "pivote" y por lo tanto va a recibir la consulta del cliente (entrada) y cuando no conozca la respuesta, deberá, a su vez, consultar a algún otro servidor DNS (salida); pero si usamos en el cliente un servidor DNS en Internet, en ese caso sí nos haría falta la regla de tipo forward, para que el firewall permita el reenvío de la consulta, desde lan hacia wan (y vuelta). Bueno, pues vamos a crearlas:
Caso router como DNS:
Open ports on router
Name: DNS IN
Protocol TCP+UDP
External port: 53
Add, Edit...
Source zone: lan
Save & Apply

Y el de salida (no confundir con el de retorno de respuesta, sino con salida del router a DNS de Internet para que él mismo también pueda consultar):
Name: DNS OUT
External port: 53
Add, Edit...
Source zone: Device (output)
Output zone: wan
Save & Apply

Caso otro servidor DNS (en Internet, se entiende):
Como ahora vamos a utilizar otro servidor DNS para que nos resuelva nombres de dominio, lo que necesitamos es una regla de tipo FORWARD, para que el router redirija el paquete desde LAN hacia WAN. Esta conexión ya requiere de Masquerading (que lo teníamos activado), porque ya vamos a salir a Internet.

New Forward rule
Name: DNS FW
Source zone: lan
Destination zone: wan
Add and edit....
Destination port: 53
Save & Apply

Se puede probar sin necesidad de cambiar la configuración DNS con el comando nslookup, por ejemplo:
nslookup www.google.com 194.179.1.100
Envía la petición de resolución del dominio www.google.com al servidor DNS 194.179.1.100 (Telefónica)

Vamos a abrir el servicio DHCP:
Open ports on router
Name: DHCP IN
Protocol UDP
External port: 67 68
Add, Edit...
Source zone: lan
Save & Apply

Normalmente sería suficiente con abrir la entrada, pero no sé porqué, en este caso hay que abrir la salida también.
Open ports on router
Name: DHCP OUT
Protocol UDP
External port: 67 68
Add, Edit...
Source zone: Device (output)
Source port: 67 68
Save & Apply

Ya en principio sólo nos faltaría abrir el puerto web al exterior para poder navegar con normalidad. Efectivamente, necesitamos una nueva regla de tipo Forward.
New Forward rule
Name: NAVEGACION
Source zone: lan
Destination zone: wan
Add and edit....
Destination port: 80 443
Save & Apply

Se pone también el puerto 443, para poder navegar por las webs con protocolo https.
Se comprueba en otra pestaña que podemos navegar.

Y así, sucesivamente se podría abrir todos los puertos que quisiéramos, etc.

PESTAÑA Custom Rules
En esta sección podemos especificar los parámetros específicos que queremos que ejecute iptables. Se trata de poder personalizar al máximo el comportamiento del firewall, a través del propio comando iptables. No se va a explicar aquí, porque ya pasa del límite de este propósito que es dar una idea básica del funcionamiento del firewall.
El firewall iptables tiene muchísimos parámetros y opciones y sólo los expertos llegan a entenderlo y saber su funcionamiento completo, además de que requiere conocimiento avanzado de redes...

Más información (básica) sobre iptables:
http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall.pdf


« Última modificación: 17-05-2019, 19:34 (Viernes) por peperfus »

Desconectado peperfus

  • *****
  • Mensajes: 129
Re:[Borrador-apuntes] Configuración Firewall desde luci para novatos
« Respuesta #1 en: 21-04-2019, 12:13 (Domingo) »
Hola.

Ahora que ya tengo el manual "terminado".... me gustaría que algún entendido en el firewall le echara un vistazo a ver si tengo algún error o hay algo a mejorar.
Me gustaría tener alguna opinión....

Gracias

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 1919
Re:[Howto] Configuración Firewall desde luci para novatos
« Respuesta #2 en: 22-04-2019, 10:48 (Lunes) »
Bueno, es una configuración un tanto capada, para abrir puertos justos para realizar tareas escasas.
Creo que daría problemas para comunicarse por FTP, ya que sólo el puerto 21 de control va fijo. El resto de puertos de datos que se abren para transferir ficheros son dinámicos, y como no hay regla para dirigir el tráfico si no hay puerto abierto, daría un timeout, y se cortaría la transmisión...
En alguna instalación, tengo el puerto 21 de control abierto, transferencia pasiva, y luego otros 10 puertos fijos abiertos y redirigidos en el router, para poder hacer las transfencias, y dichos puertos marcados como restringidos para transferencias en el servidor FTP. Pero eso es porque la instalación del servidor FTP es mía. Si la instalación no es propia, los puertos de transferencia serán aleatorios, y por tanto se cortará la comunicación.
Yo dejaría el forwarding de la lan a la wan, para evitar esto. Si no funciona la transferencia activa, por problemas de NAT, al menos funcionará la transferencia pasiva al poder salir el tráfico por cualquier puerto. A no ser que sea imprescindible que se corte el tráfico saliente, por ejemplo para evitar que los ¡xxjrlcxxc! (léase "palabrota" + dispositivos IoT), comuniquen datos no deseados con el exterior. Aunque en ese caso, lo que haría sería prohibir la salida de esa IP al exterior, en lugar de cortar todo el tráfico saliente.

Por cierto, lo de external port e internal port, es porque aparte de abrir puertos por el firewall, también hace una traducción de puertos. Puedes redirigir el puerto 222 externo al puerto 22 interno. Si no marcas puertos distintos, será el mismo externamente e internamente. Si haces esa redirección, por ejemplo, para acceder a SSH deberás acceder por el puerto 222 en lugar del por el puerto 22.
No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.

Desconectado peperfus

  • *****
  • Mensajes: 129
Re:[Howto] Configuración Firewall desde luci para novatos
« Respuesta #3 en: 23-04-2019, 11:54 (Martes) »
Gracias por el comentario.

En realidad, la configuración que he puesto en el howto es a modo de ejemplo. Más que nada quería hacer una explicación un poco general, pero también con algunos ejemplos para que se entendiera mejor.
Lo que me interesa saber es si me he equivocado en algún concepto que he explicado..., o está todo correcto, para estar más tranquilo (y aprender yo también de mis errores).

Un duda que tenía y de lo que no estoy 100% seguro es de si en la tabla de Zone Forwardings, donde dice LAN ... Input y Output, supongo que se refiere a lo que entre al router desde las interfaces de la zona LAN ¿es correcto? (y lo mismo con la zona WAN)

Este Howto le puede venir bien a la gente. Al menos a mí mismo, si paso tiempo sin tocarlo, siempre se olvidan cosas y está bien tener una documentación a mano para refrescar.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 1919
Re:[Howto] Configuración Firewall desde luci para novatos
« Respuesta #4 en: 23-04-2019, 12:44 (Martes) »
Gracias por el comentario.

En realidad, la configuración que he puesto en el howto es a modo de ejemplo. Más que nada quería hacer una explicación un poco general, pero también con algunos ejemplos para que se entendiera mejor.
Lo que me interesa saber es si me he equivocado en algún concepto que he explicado..., o está todo correcto, para estar más tranquilo (y aprender yo también de mis errores).

Un duda que tenía y de lo que no estoy 100% seguro es de si en la tabla de Zone Forwardings, donde dice LAN ... Input y Output, supongo que se refiere a lo que entre al router desde las interfaces de la zona LAN ¿es correcto? (y lo mismo con la zona WAN)

Este Howto le puede venir bien a la gente. Al menos a mí mismo, si paso tiempo sin tocarlo, siempre se olvidan cosas y está bien tener una documentación a mano para refrescar.

Cada una de las zonas que definas tiene el tráfico restringido dentro de su misma zona. Si quieres que la zona se comunique con otra zona, le debes habilitar la regla de transferencia. En mi caso tengo una  zona restringida para una VPN, que tiene unas reglas distintas a la wan y la lan. Si quiero que el tráfico de mi lan pase a la vpn, para comunicar los aparatos de mi lan con los de la zona vpn, le debo habilitar la reglar de traspaso de datos (forwarding). Lo mismo a la inversa, para que los aparatos de mi vpn vean los de la lan, les habilito la regla inversa. Todo esto va aparte de la wan. De la wan a la vpn no hay acceso salvo por los puertos exclusivos para establecer la VPN externa. Todo lo demás está capado. Sin embargo a mi lan, puedo acceder con "más ligereza". Te he puesto este ejemplo, porque con 3 zonas se ve mejor que con 2.
No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.