GNU/Linux >> Tutoriales Linux >  >> Linux

Haga que Linux sea más fuerte con firewalls

Todo el mundo ha oído hablar de los cortafuegos, aunque solo sea como un elemento de la trama en un drama televisivo sobre delitos cibernéticos. Muchas personas también saben que su computadora (probablemente) está ejecutando un firewall, pero menos personas saben cómo tomar el control de su firewall cuando es necesario.

Los cortafuegos bloquean el tráfico de red no deseado, pero diferentes redes tienen diferentes niveles de amenaza. Por ejemplo, si está en casa, probablemente confíe mucho más en las otras computadoras y dispositivos en su red que cuando está en el café local usando WiFi público. Puede esperar que su computadora diferencie entre una red confiable y una no confiable, o puede aprender a administrar, o al menos verificar, su configuración de seguridad usted mismo.

Cómo funcionan los 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

La comunicación entre dispositivos en una red ocurre a través de puertas de enlace llamadas puertos . Puerto, en este contexto, no significa una conexión física como un puerto USB o un puerto HDMI. En la jerga de la red, un puerto es un concepto completamente virtual que representa vías para que un tipo específico de datos lleguen o salgan de una computadora. Este sistema podría haber sido llamado cualquier cosa, como "conexiones" o "puertas", pero se llamaron puertos al menos desde 1981, y ese es el nombre que se usa hoy. El punto es que no hay nada especial en ningún puerto; son solo una forma de designar una dirección donde puede ocurrir la transferencia de datos.

En 1972, se publicó una lista de números de puerto (entonces llamados "sockets"), y desde entonces se ha convertido en un conjunto de números de puerto estándar bien conocidos que ayudan a administrar tipos específicos de tráfico. Por ejemplo, accede a los puertos 80 y 443 a diario cuando visita un sitio web, porque la mayoría de las personas en Internet han acordado, implícita o explícitamente, que los datos se transfieren desde los servidores web a través de esos puertos. Puede probar esta teoría abriendo un navegador web y navegando a un sitio web con un puerto no estándar adjunto a la URL. Por ejemplo, si navega a example.com:42 , se denegó su solicitud porque example.com no sirve un sitio web en el puerto 42.

Si vuelve a visitar el mismo sitio web en el puerto 80, obtiene un sitio web, como se esperaba. Puede especificar el puerto 80 con :80 al final de la URL, pero debido a que el puerto 80 es el puerto estándar para el tráfico HTTP, su navegador web asume el puerto 80 de manera predeterminada.

Cuando una computadora, como un servidor web, espera tráfico en un puerto específico, es aceptable (y necesario) tener el puerto abierto para el tráfico. El peligro es dejar puertos abiertos en los que no hay motivos para esperar tráfico, y eso es exactamente para lo que sirve un cortafuegos.

Instalar firewalld

Hay muchas interfaces para la configuración del cortafuegos. Este artículo cubre firewalld , que se integra con Network Manager en el escritorio y firewall-cmd en la terminal Muchas distribuciones de Linux vienen con estas herramientas instaladas. Si el suyo no lo hace, puede tomar este artículo como un consejo general para la administración de firewall y aplicarlo a lo que usa, o puede instalar firewalld .

En Ubuntu, por ejemplo, debe habilitar el universo repositorio, desactive el ufw predeterminado cortafuegos y, a continuación, instale firewalld :

$ sudo systemctl disable ufw
$ sudo add-apt-repository universe
$ sudo apt install firewalld

Fedora, CentOS, RHEL, OpenSUSE y muchos otros incluyen firewalld por defecto.

Independientemente de su distribución, para que un firewall sea efectivo, debe estar activo y configurado para cargarse en el arranque. Cuanto menos tenga que pensar en el mantenimiento del cortafuegos, mejor.

$ sudo systemctl enable --now firewalld

Elige tu zona con Network Manager

Probablemente te conectas a muchas redes diferentes todos los días. Estás en una red en el trabajo, otra en el café y otra en casa. Su computadora puede detectar qué red usa con más frecuencia que otras, pero no sabe en cuál confía.

Una zona de cortafuegos contiene ajustes preestablecidos que deciden qué puertos abrir y cerrar. Con las zonas, puede elegir una política que tenga más sentido para la red en la que se encuentra actualmente.

Para ver una lista de las zonas disponibles, abra el Editor de conexiones de Network Manager, que se encuentra en el menú Aplicaciones, o con el nm-connection-editor & comando.

En la lista de conexiones de red, haga doble clic en su red actual.

En la ventana de configuración de red que aparece, haga clic en la pestaña General.

En el panel General, haga clic en el menú desplegable junto a Firewall Zone para obtener una lista de todas las zonas disponibles.

Puede obtener esta misma lista con este comando de terminal:

$ sudo firewall-cmd --get-zones

Los títulos de las zonas indican lo que sus diseñadores tenían en mente al crearlos, pero puede obtener los detalles de cualquier zona con este comando de terminal:

$ sudo firewall-cmd --zone work --list-all
work
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  [...]

En este ejemplo, el trabajo La zona está configurada para permitir el tráfico entrante de cliente SSH y DHCPv6, pero descarta cualquier otro tráfico entrante que el usuario no haya solicitado explícitamente. (En otras palabras, el trabajo zone no bloquea el tráfico de respuesta HTTP cuando visita un sitio web, pero lo hace denegar una solicitud HTTP en su puerto 80.)

Visualiza cada zona para familiarizarte con el tráfico que permite cada una. Los más comunes son:

  • Trabajo: Use este cuando esté en una red en la que confíe principalmente. Se permiten SSH, DHCPv6 y mDNS, y puede agregar más según sea necesario. Esta zona está destinada a ser un punto de partida para un entorno de trabajo personalizado basado en los requisitos diarios de su oficina.
  • Público: Para redes en las que no confíes. Esta zona es la misma que la zona de trabajo, pero presumiblemente, no agregaría las mismas excepciones que su zona de trabajo.
  • Soltar: Todas las conexiones entrantes se interrumpen sin dar ninguna respuesta. Esto es lo más cercano a un modo sigiloso que puede obtener sin apagar la red por completo porque solo las conexiones de red salientes son posibles (sin embargo, incluso un escáner de puerto casual podría detectar su computadora del tráfico saliente, así que no confunda esta zona con un encubrimiento dispositivo). Podría decirse que esta es la zona más segura cuando se está en WiFi público, y definitivamente la mejor cuando tienes razones para creer que una red es hostil.
  • Bloquear: Todas las conexiones entrantes se rechazan con un mensaje que declara que el puerto solicitado está prohibido. Solo son posibles las conexiones de red que usted inicie. Esta es una versión "amigable" de la zona de descenso porque, aunque no hay ningún puerto abierto para el tráfico entrante, un puerto rechaza detalladamente una conexión no iniciada.
  • Inicio: Use esto cuando confíe en otras computadoras en la red. Solo se aceptan conexiones entrantes seleccionadas y puede agregar más según sea necesario.
  • Interno: Similar a la zona de trabajo, está destinada a redes internas en las que confía principalmente en las otras computadoras. Puede abrir más puertos y servicios según sea necesario, pero aún así mantener un conjunto de reglas diferente al que tiene en su zona de trabajo.
  • De confianza: Se aceptan todas las conexiones de red. Bueno para solucionar problemas o en redes en las que confía absolutamente.

Asignación de una zona a una red

Puede asignar una zona a cualquier conexión de red que realice. Además, puede asignar una zona diferente a cada interfaz de red (cable Ethernet, Wi-Fi, etc.) que se conecta a cada red.

Seleccione la zona que desee y haga clic en el botón Guardar para confirmar el cambio.

La forma más fácil de adquirir el hábito de asignar una zona a una interfaz de red es ocuparse de las redes que usa con más frecuencia. Asigne la zona de inicio a su red doméstica, la zona de trabajo a su red de trabajo y la red pública a su red de biblioteca o cafetería favorita.

Una vez que haya asignado una zona a todas sus redes habituales, haga un esfuerzo por asignar una zona a la próxima red nueva a la que se una, ya sea una nueva cafetería o la red doméstica de su compañero. Asignar zonas es la mejor manera de reforzar su propia conciencia de que las redes no son todas iguales y que no está más seguro que nadie solo porque ejecuta Linux.

Zona predeterminada

En lugar de solicitarle una zona cada vez que se une a una nueva red, firewalld asigna una zona predeterminada a cualquier red desconocida. Abra una terminal y escriba este comando para obtener su zona predeterminada:

$ sudo firewall-cmd --get-default
public

En este ejemplo, la zona pública es la predeterminada. Se espera que mantenga la zona pública altamente restrictiva, por lo que es una zona bastante segura para asignar redes desconocidas. Sin embargo, puede establecer su propio valor predeterminado en su lugar.

Por ejemplo, si eres más paranoico que la mayoría, o si sabes que frecuentas redes en las que tienes razones para desconfiar, puedes asignar una zona altamente restrictiva como predeterminada:

$ sudo firewall-cmd --set-default-zone drop
success
$ sudo firewall-cmd --get-default
drop

Ahora, cualquier red nueva a la que te unas estará sujeta a las reglas de la zona de descenso, a menos que la cambies manualmente a algo menos restrictivo.

Personalizar zonas abriendo puertos y servicios

Los desarrolladores de Firewalld no pretenden que sus definiciones de zona satisfagan las necesidades de todas las diferentes redes y niveles de confianza existentes. Son solo puntos de partida para que los uses y personalices.

No tiene que saber mucho sobre cortafuegos para poder abrir y cerrar puertos según los tipos de actividad de red que sabe que genera.

Servicios predefinidos

La forma más sencilla de agregar permisos a su firewall es agregar un servicio predefinido. Estrictamente hablando, no existe tal cosa como un "servicio" hasta donde su cortafuegos sabe, porque los cortafuegos entienden los números de puerto y los tipos de protocolo. Sin embargo, firewalld proporciona colecciones de puertos y protocolos basados ​​en estándares y convenciones.

Por ejemplo, si es un desarrollador web y desea abrir su computadora en su red local para que sus colegas puedan ver el sitio web que está creando, agregaría el http y https servicios. Si eres un jugador y estás ejecutando el servidor de chat de voz de murmullo de código abierto para tu gremio, entonces agregarías el murmullo Servicio. Hay muchos otros servicios disponibles, que puede ver con este comando:

$ 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-ldap freeipa-ldaps ftp [...]

Si ve un servicio que necesita, agréguelo a su configuración de firewall actual, por ejemplo:

$ sudo firewall-cmd --add-service murmur

Este comando abre todos los puertos y protocolos necesarios para un servicio en particular dentro de su zona predeterminada , pero solo hasta que reinicie su computadora o reinicie su firewall. Para hacer que sus cambios sean permanentes, utilice --permanent bandera:

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

También puede emitir el comando para una zona que no sea la predeterminada:

$ sudo firewall-cmd --add-service murmur --permanent --zone home

Puertos

A veces desea permitir el tráfico de algo que simplemente no está definido por los servicios de firewalld. Tal vez esté configurando un puerto no estándar para un servicio común o necesite abrir un puerto arbitrario.

Por ejemplo, tal vez esté ejecutando el software de escritorio virtual de código abierto MapTool. Dado que está ejecutando el servidor MapTool y no existe un estándar de la industria que rija en qué puerto se ejecuta MapTool, puede decidir qué puerto usa y luego "hacer un agujero" en su firewall para permitir el tráfico en ese puerto.

El proceso es básicamente el mismo que para los servicios:

$ sudo firewall-cmd --add-port 51234/tcp

Este comando abre el puerto 51234 a las conexiones TCP entrantes en su zona predeterminada , pero solo hasta que reinicie su computadora o reinicie su firewall. Para hacer que sus cambios sean permanentes, utilice --permanent bandera:

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

También puede emitir el comando para una zona que no sea la predeterminada:

$ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home

Permitir el tráfico a través de su computadora es diferente a permitir el tráfico a través del firewall de su enrutador. Su enrutador probablemente tenga una interfaz diferente para su propio firewall integrado (aunque el principio es el mismo), lo cual está fuera del alcance de este artículo.

Eliminación de puertos y servicios

Si decide que un servicio o un puerto ya no son necesarios, puede reiniciar el cortafuegos para borrar los cambios, a menos que utilice el --permanent bandera.

Si hizo que sus cambios fueran permanentes, use el --remove-port o --eliminar-servicio bandera:

$ sudo firewall-cmd --remove-port 51234/tcp --permanent

Puede eliminar puertos y servicios de una zona que no sea su zona predeterminada especificando una zona en su comando:

$ sudo firewall-cmd --remove-service murmur --permanent --zone home

Zonas personalizadas

Puede usar y abusar de las zonas predeterminadas proporcionadas por firewalld, pero también tiene la libertad de crear las suyas propias. Por ejemplo, si tiene sentido para usted tener una zona específica para juegos, entonces puede crear una y cambiar a ella solo mientras juega.

Para crear una nueva zona vacía, crea una nueva zona llamada juego y recarga las reglas del cortafuegos para que tu nueva zona se active:

$ sudo firewall-cmd --new-zone game --permanent
success
$ sudo firewall-cmd --reload

Una vez creado y activo, puede personalizarlo con todos los servicios y puertos que necesita para tener abiertos para la noche de juegos.

Diligencia

Empiece a pensar en su estrategia de firewall hoy mismo. Comience despacio y cree algunos valores predeterminados sensatos que tengan sentido para usted. Puede tomar tiempo antes de que se acostumbre a pensar en su firewall y comprender qué servicios de red usa, pero con un poco de exploración, puede fortalecer su estación de trabajo Linux sin importar cuál sea su entorno.


Linux
  1. Vea las conexiones de red de su servidor Linux con netstat

  2. Introducción a los cortafuegos de Linux

  3. Sincronizar la hora del servidor Linux con el servidor de hora de la red

  4. Linux:¿cómo montar un sistema de archivos remoto especificando un número de puerto?

  5. Servicio de sistema operativo Linux 'red'

Cómo monitorear el uso de la red con nload en Linux

El comando make de Linux explicado con ejemplos

Asegure su red Linux con firewall-cmd

7 formas de verificar la velocidad de la red en Linux con navegador y cli

Network Manager en Linux con ejemplos

Comando make de Linux con ejemplos