GNU/Linux >> Tutoriales Linux >  >> Linux

Abra puertos y enrute el tráfico a través de su firewall

Idealmente, la mayoría de las redes locales están protegidas del mundo exterior. Si alguna vez ha intentado instalar un servicio, como un servidor web o una instancia de Nextcloud en casa, entonces probablemente sepa por experiencia propia que, si bien es fácil acceder al servicio desde dentro de la red, es inalcanzable en todo el mundo. web.

Hay razones tanto técnicas como de seguridad para esto, pero a veces desea abrir el acceso a algo dentro de una red local al mundo exterior. Esto significa que debe poder enrutar el tráfico de Internet a su red local, de manera correcta y segura. En este artículo, te explicaré cómo.

Direcciones IP públicas y locales

Lo primero que debe comprender es la diferencia entre una dirección de protocolo de Internet (IP) local y una dirección IP pública. Actualmente, la mayor parte del mundo (todavía) usa un sistema de direccionamiento llamado IPv4, que tiene un grupo limitado de números disponibles para asignar a dispositivos electrónicos en red. De hecho, hay más dispositivos en red en el mundo que direcciones IPv4 y, sin embargo, IPv4 sigue funcionando. Esto es posible gracias a las direcciones locales.

Todas las redes locales del mundo utilizan el mismo grupos de direcciones. Por ejemplo, la dirección IP local de mi enrutador doméstico es 192.168.1.1. Uno de esos es probablemente el mismo número que el enrutador de su hogar, pero cuando navego a 192.168.1.1, llego a mi la pantalla de inicio de sesión del enrutador y no su pantalla de inicio de sesión del enrutador. Esto se debe a que el enrutador de su hogar en realidad tiene dos direcciones:una pública y otra local, y la pública protege a la local para que no sea detectada por Internet, y mucho menos para que no se confunda con la 192.168.1.1 de otra persona.

Esta es, de hecho, la razón por la cual Internet se llama Internet:es una "red" de redes interconectadas y autónomas. Cada red, ya sea su lugar de trabajo, su hogar, su escuela, un gran centro de datos o la "nube" misma, es una colección de hosts conectados que, a su vez, se comunican con una puerta de enlace (generalmente un enrutador) que administra el tráfico desde el Internet y a la red local, así como fuera de la red local a Internet.

Esto significa que si está tratando de acceder a una computadora en una red que no es la red a la que está conectado actualmente, entonces conocer la dirección local de esa computadora no le sirve de nada. Necesitas conocer al público dirección de la puerta de enlace de la red remota. Y eso no es todo. También necesita permiso para pasar a través de esa puerta de enlace a la red remota.

Cortafuegos

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Idealmente, hay cortafuegos a tu alrededor, incluso ahora. No los ves (con suerte), pero están ahí. A medida que avanza la tecnología, los cortafuegos tienen un nombre divertido, pero en realidad son un poco aburridos. Un firewall es simplemente un servicio informático (también llamado "daemon"), un subsistema que se ejecuta en segundo plano en la mayoría de los dispositivos electrónicos. Hay muchos demonios ejecutándose en su computadora, incluido el que escucha los movimientos del mouse o del trackpad, por ejemplo. Un firewall es un demonio programado para aceptar o rechazar ciertos tipos de tráfico de red.

Los cortafuegos son programas relativamente pequeños, por lo que están integrados en la mayoría de los dispositivos modernos. Se ejecutan en su teléfono móvil, en su enrutador y en su computadora. Los firewalls están diseñados en base a protocolos de red, y es parte de la especificación de comunicarse con otras computadoras que un paquete de datos enviado a través de una red debe anunciar información específica sobre sí mismo (o ser ignorado). Una cosa que contienen los datos de red es un puerto número, que es una de las cosas principales que utiliza un cortafuegos cuando acepta o deniega el tráfico.

Los sitios web, por ejemplo, están alojados en servidores web. Cuando desea ver un sitio web, su computadora envía datos de red que se identifican como tráfico destinado al puerto 80 del servidor web. El firewall del servidor web está programado para aceptar el tráfico entrante destinado al puerto 80, por lo que acepta su solicitud (y el servidor web, a su vez, le envía la página web en respuesta). Sin embargo, si enviara (ya sea por accidente o por diseño) datos de red destinados al puerto 22 de ese servidor web, es probable que el firewall lo deniegue (y posiblemente lo prohíba durante algún tiempo).

Este puede ser un concepto extraño de entender porque, al igual que las direcciones IP, los puertos y los cortafuegos realmente no "existen" en el mundo físico. Estos son conceptos definidos en el software. No puede abrir su computadora o su enrutador para inspeccionar físicamente los puertos de red, y no puede mirar un número impreso en un chip para encontrar su dirección IP, y no puede rociar su firewall con agua para apagarlo. Pero ahora que sabe que existen estos conceptos, conoce los obstáculos que implica pasar de una computadora en una red a otra en una red diferente.

Ahora es el momento de sortear esos bloqueos.

Tu dirección IP

Supongo que tiene control sobre su propia red y está tratando de abrir sus propios firewalls y enrutar su propio tráfico para permitir el ingreso de tráfico externo a su red. Primero, necesita sus direcciones IP locales y públicas.

Para encontrar su dirección IP local, puede usar el ip comando de dirección en Linux:

$ ip addr show | grep "inet "
 inet 127.0.0.1/8 scope host lo
 inet 192.168.1.6/27 brd 10.1.1.31 scope [...]

En este ejemplo, mi dirección IP local es 192.168.1.6. La otra dirección (127.0.0.1) es una dirección especial de "bucle invertido" que su computadora usa para referirse a sí misma desde dentro de sí misma.

Para encontrar su dirección IP local en macOS, puede usar ifconfig :

$ ifconfig | grep "inet "
 inet 127.0.0.1 netmask 0xff000000
 inet 192.168.1.6 netmask 0xffffffe0 [...]

Y en Windows, use ipconfig :

$ ipconfig

Obtenga la dirección IP pública de su enrutador en icanhazip.com. En Linux, puede obtener esto desde una terminal con el comando curl:

$ curl http://icanhazip.com
93.184.216.34

Mantenga estos números a mano para más adelante.

Dirigir el tráfico a través de un enrutador

El primer dispositivo que debe ajustarse es el dispositivo de puerta de enlace. Esto podría ser un gran servidor físico, o podría ser un pequeño enrutador. De cualquier manera, es casi seguro que la puerta de enlace está realizando la traducción de direcciones de red (NAT), que es el proceso de aceptar tráfico y modificar la dirección IP de destino.

Cuando genera tráfico de red para ver un sitio web externo, su computadora debe enviar ese tráfico a la puerta de enlace de su red local porque su computadora, esencialmente, no tiene conocimiento del mundo exterior. Hasta donde sabe su computadora, todo Internet es solo su enrutador de red, 192.168.1.1 (o cualquiera que sea la dirección de su enrutador). Entonces, su computadora envía todo a su puerta de enlace. El trabajo de la puerta de enlace es observar el tráfico y determinar dónde está realmente. dirigido, y luego reenviar esos datos a Internet real. Cuando la puerta de enlace recibe una respuesta, reenvía los datos entrantes a su computadora.

Si su puerta de enlace es un enrutador, para exponer su computadora al mundo exterior, debe designar un puerto en su enrutador para representar su computadora. Esto configura su enrutador para aceptar tráfico a un puerto específico y dirigir todo ese tráfico directamente a su computadora. Dependiendo de la marca del enrutador que use, este proceso tiene algunos nombres diferentes, incluido el reenvío de puertos o el servidor virtual o, a veces, incluso la configuración del firewall.

Cada dispositivo es diferente, por lo que no tengo forma de decirle exactamente en qué debe hacer clic para ajustar la configuración. En general, accede al enrutador de su hogar a través de un navegador web. La dirección de su enrutador a veces está impresa en la parte inferior del enrutador y comienza con 192.168 o 10.

Navegue a la dirección de su enrutador e inicie sesión con las credenciales que se le proporcionaron cuando obtuvo su servicio de Internet. A menudo es tan simple como admin con una contraseña numérica (a veces, esta contraseña también está impresa en el enrutador). Si no conoce el inicio de sesión, llame a su proveedor de Internet y solicite los detalles.

En la interfaz gráfica, redirija el tráfico entrante de un puerto a un puerto (el mismo suele ser el más fácil) de la dirección IP local de su computadora. En este ejemplo, redirijo el tráfico entrante destinado al puerto 22 (usado para conexiones SSH) de mi enrutador doméstico a mi PC de escritorio.

Puede redirigir cualquier puerto que desee. Por ejemplo, si está alojando un sitio web en una computadora de repuesto, puede redirigir el tráfico destinado al puerto 80 de su enrutador al puerto 80 del host de su sitio web.

Dirigir el tráfico a través de un servidor

Si su puerta de enlace es un servidor físico, puede dirigir el tráfico mediante firewall-cmd. Uso de la regla rica opción, puede hacer que su servidor escuche una solicitud entrante en una dirección específica (su IP pública) y un puerto específico (en este ejemplo, uso 22, que es el puerto utilizado para SSH), y luego dirige ese tráfico a una IP dirección y puerto en la red local (la dirección local de su computadora).

$ firewall-cmd --permanent --zone=public \
--add-rich-rule 'rule family="ipv4" destination address="93.184.216.34" forward-port port=22 protocol=tcp to-port=22 to-addr=192.168.1.6'

Configura tu cortafuegos

La mayoría de los dispositivos tienen firewalls, por lo que es posible que el tráfico no pueda llegar a su computadora local incluso después de haber reenviado los puertos y el tráfico. Es posible que haya un cortafuegos que bloquee el tráfico incluso dentro de su red local. Los cortafuegos están diseñados para hacer que su computadora sea segura, así que resista la tentación de desactivar su cortafuegos por completo (excepto para solucionar problemas). En su lugar, puede permitir el tráfico de forma selectiva.

El proceso de modificación de su cortafuegos personal difiere según su sistema operativo.

En Linux, hay muchos servicios ya definidos. Ver los disponibles:

$ sudo firewall-cmd --get-services
amanda-client amanda-k5-client bacula bacula-client
bgp bitcoin bitcoin-rpc ceph cfengine condor-collector
ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch
freeipa-ldaps ftp [...] ssh steam-streaming svdrp [...]

Si el servicio que intenta permitir aparece en la lista, puede agregarlo a su firewall:

$ sudo firewall-cmd --add-service ssh --permanent

Si su servicio no está en la lista, puede agregar el puerto que desea abrir manualmente:

$ sudo firewall-cmd --add-port 22/tcp --permanent

Abrir un puerto en su firewall es específico para su zona actual . Para obtener más información sobre firewalls, firewall-cmd y puertos, consulte mi artículo Haga que Linux sea más fuerte con firewalls y descargue nuestra hoja de trucos de Firewall para una referencia rápida.

Este paso solo se trata de abrir un puerto en su computadora para que se acepte el tráfico destinado a él en un puerto específico. No necesita redirigir el tráfico porque ya lo ha hecho en su puerta de enlace.

Hacer la conexión

Configuró su puerta de enlace y su red local para enrutar el tráfico por usted. Ahora, cuando alguien fuera de su red navegue a su dirección IP pública, con destino a un puerto específico, será redirigido a su computadora en el mismo puerto. Depende de usted monitorear y proteger su red, así que use su nuevo conocimiento con cuidado. Demasiados puertos abiertos pueden parecer invitaciones a malos actores y bots, así que abra solo lo que pretende usar. Y sobre todo, ¡diviértete!


Linux
  1. Herramientas y consejos de código abierto para mejorar el rendimiento de su PC con Linux

  2. Cómo buscar puertos abiertos en Linux con netstat, lsof y nmap

  3. Abra puertos en el firewall de Linux para acceder a los servidores de correo POP e IMAP

  4. Cómo monitorear el conmutador de red y los puertos usando Nagios

  5. ¿Cómo puedo canalizar todo el tráfico de mi red a través de SSH?

Asegure su red Linux con firewall-cmd

Cómo encontrar y cerrar puertos abiertos en Linux

Cómo instalar y administrar Evillimiter para controlar su red Wi-Fi en Linux

Cómo instalar y usar el analizador de tráfico de red de Linux basado en la web Darkstat

¿Cómo permitir puertos en WHM Firewall y CSF Firewall a través de SSH?

Cómo verificar todos los puertos abiertos en su sistema Linux