← Regresar a lecciones
  • linux

Servicios de red

Configuración de la interfaz de red

Configuración de la interfaz de red

La interfaz de red y su configuración es una de las partes más importantes de un servidor y las labores de un administrador de sistemas, ya que con la interfaz de red podemos establecer la conectividad y permitir que el servidor se comunique con otros dispositivos en la red.

Para poder entablar una conexión con otros dispositivos lo primero que tenemos que hacer es asignarle una IP a nuestro servidor, bien sea de forma estática (nosotros asignamos la IP manualmente) o dinámica (dejamos que un servidor DHCP le asigne una dirección IP temporal).

La elección entre una dirección IP dinámica o estática para un servidor depende de varios factores y requisitos específicos. Aquí hay algunas consideraciones que pueden ayudarte a tomar una decisión informada:

  • Estabilidad y disponibilidad: Si necesitas que tu servidor esté siempre disponible y accesible, una dirección IP estática puede ser más adecuada. Con una dirección IP estática, la dirección del servidor no cambiará, lo que facilita la conexión y el acceso constante.
  • Servicios y aplicaciones: Si tu servidor aloja servicios o aplicaciones que requieren una dirección IP constante, como servidores web, bases de datos o servidores de correo electrónico, una dirección IP estática es recomendable. Esto garantiza que los clientes y usuarios siempre puedan acceder a tus servicios utilizando la misma dirección IP.
  • Seguridad: Una dirección IP estática puede facilitar la implementación de medidas de seguridad, como el filtrado de direcciones IP o la configuración de reglas de firewall específicas. Esto puede ayudar a proteger tu servidor y los servicios que ofrece
  • Flexibilidad y movilidad: Si necesitas flexibilidad para cambiar la ubicación física de tu servidor o si tu proveedor de servicios de Internet (ISP) requiere el uso de direcciones IP dinámicas, una dirección IP dinámica puede ser más conveniente. Las direcciones IP dinámicas se asignan automáticamente y pueden cambiar con el tiempo.

Después de estas consideraciones podemos indicar que la mejor configuración de IP es estática para nuestro servidor, para lograr esta configuración hacemos los siguientes pasos.

Usamos el comando ip addr show (o su forma abreviada ip a) para conocer cuál es nuestra interfaz de red. En sistemas modernos (Debian 10+, Ubuntu 18.04+, RHEL 7+) ifconfig está deprecado y el paquete net-tools no se instala por defecto; ip es el reemplazo oficial del proyecto iproute2.

Configuración de la interfaz de red - comando ip addr show para conocer cuál es nuestra interfaz

Podemos identificar nuestra interfaz principal en el resultado (por ejemplo enp0s3 en máquinas VirtualBox).

Generalmente en las distribuciones Debian las interfaces de red se configuran a través del archivo /etc/network/interfaces. En Ubuntu, desde la versión 17.10, la configuración de red pasó a la utilidad netplan, que genera un archivo YAML para facilitar la configuración. Accederemos a este archivo con un editor de código en la ruta /etc/netplan/00-installer-config.yaml. El nombre exacto puede variar según la instalación (por ejemplo 01-netcfg.yaml); si no estás seguro, lista el directorio con ls /etc/netplan/.

Configuración de la interfaz de red - Accederemos a este archivo con un editor de código a la ruta /etc/netplan/00-installer-config-yaml

Configuración de la interfaz de red - Accederemos a este archivo con un editor de código a la ruta /etc/netplan/00-installer-config-yaml

Asignamos una IP 192.168.1.10 a nuestro servidor y el resto de las configuraciones.

Configuración de la interfaz de red - Ya una vez asignado los valores, aplicamos el comando

Ya una vez asignado los valores, aplicamos el comando

netplan apply

Configuración de la interfaz de red - aplicamos el comando netplan apply

Corroboramos que nuestra IP ya sea la que le asignamos y listo, ya tenemos la interfaz de red de nuestros servidores configurada.

Configuración de la interfaz de red - Corroborar nuestra IP

Configuración de la resolución de nombres (DNS)

Otra configuración esencial para la conexión de la red es la configuración de la DNS (Domain Name System), recordemos que este protocolo es el encargado de traducir los nombres de los dominios que utilizamos en nuestro navegador como por ejemplo www.google.com en las direcciones IP de los servidores web de que queremos acceder.

Este proceso se da cuando ingresamos una dirección web en nuestro navegador, éste envía una solicitud a un servicio DNS para obtener la dirección IP asociada a ese nombre del dominio, el servidor DNS busca en su base de dato devuelve la dirección IP correspondiente, permitiendo que el navegador establezca una conexión con el servidor web que aloja el sitio.

Además de su función principal de traducción de nombres de dominio, las DNS también desempeñan un papel importante en la seguridad y la optimización de la navegación. Por ejemplo, las DNS pueden implementar medidas de seguridad, como el filtrado de contenido malicioso o la detección de sitios web fraudulentos, ayudando a proteger a los usuarios de posibles amenazas en línea.

Es importante tener configurado la DNS de nuestro servidor ya que es el que nos va a permitir que los usuarios accedan a los servicios y aplicaciones alojados en el servidor mediante los nombres del dominio, aparte también se utiliza para redireccionar el tráfico a diferentes servidores en función de la carga o la disponibilidad. Esto permite distribuir la carga de trabajo entre varios servidores y garantizar un rendimiento óptimo.

La DNS también desempeña un papel importante en la seguridad de un servidor al implementar medidas de seguridad en la configuración de la DNS, como el filtrado de contenido malicioso o la detección de sitios web fraudulentos, se puede proteger al servidor y a los usuarios de posibles amenazas en línea.

Para configurar la DNS de nuestro servidor Ubuntu repetiremos el mismo proceso que hicimos al configurar nuestra IP estática ingresando a la ruta /etc/netplan/00-installer-config.yaml desde un editor de código.

De acuerdo a la documentación de netplan la forma de agregar nuestras DNS es a través del valor

nameservers:

En el archivo de netplan configuramos una o más direcciones DNS que el servidor usará para resolver nombres. Por defecto, para un servidor web/FTP/genérico, lo habitual es apuntar a un par de resolvers DNS públicos (Cloudflare, Google, OpenDNS) o a los del proveedor de red.

⚠️ Apuntar como DNS primaria a la propia IP del servidor solo tiene sentido si ese servidor está ejecutando un servicio de resolución DNS (por ejemplo BIND, Unbound o dnsmasq). En caso contrario, dejará al servidor sin resolución de nombres.

Configuración de la resolución de nombres - DNS

Les dejamos una lista de DNS públicas que pueden usar para la red

Nombre DNSIP principalIP alternativa
Cloudflare1.1.1.11.0.0.1
OpenDNS208.67.222.222208.67.220.220
Google8.8.8.88.8.4.4

Para esta configuración usaremos la DNS google

Una vez editado el archivo YAML aplicamos el comando sudo netplan apply.

Si queremos corroborar que tenemos conexión, usamos el comando ping junto a nuestro servidor alternativo.

Configuración de la resolución de nombres - comando ping

Configuración de servicios de red

Cuando hablamos de los servicios de red en los referimos hablamos de las aplicaciones que se ejecutan en un segundo plano, habilitando ciertas capacidades cuando sean necesarias, estas aplicaciones son componentes fundamentales que permiten la comunicación y el intercambio de información en una red.

Uno de los servicios de red más comunes en servidores Linux es el servidor web, que permite alojar y entregar páginas web a través del protocolo HTTP. El servidor web más popular en Linux es Apache, aunque también existen otras opciones como Nginx. Estos servidores web permiten a los usuarios acceder a sitios web y aplicaciones en línea, brindando una experiencia de navegación fluida y segura

Vamos a configurar nuestro servidor HTTP con Apache aplicando los siguientes pasos:

  • Instalamos Apache tras actualizar los paquetes locales previamente con sudo apt update.

    Configuración de servicios de red

  • Una vez actualizados los paquetes instalamos nuestro servidor Apache con sudo apt install apache2.

    Configuración de servicios de red - firewall

  • Antes de probar apache, es necesario modificar unos ajustes de firewall para permitir acceso externo a los puertos web predeterminados, durante la instalación, Apache se registra con UFW para proporcionar algunos perfiles de aplicaciones que pueden utilizarse para habilitar o deshabilitar el acceso a Apache a través del firewall.

  • Con el comando sudo ufw app list tendremos una lista de los perfiles de aplicación.

    Configuración de servicios de red - sudo ufw

    En el resultado tendremos tres perfiles disponibles para Apache.

    • Apache: este perfil abre solo el puerto 80 (tráfico web normal no cifrado)
    • Apache Full: este perfil abre el puerto 80 (tráfico web normal no cifrado) y el puerto 443 (tráfico TLS/SSL cifrado)
    • Apache Secure: este perfil abre solo el puerto 443 (tráfico TLS/SSL cifrado)
    • Habilitamos el perfil más restrictivo el cual sería Apache permitiendo el tráfico en el puerto 80 (puerto http)
1sudo ufw allow "Apache"

sudo ufw allow "Apache"

Podemos corroborar los cambios usando el comando sudo ufw status.

sudo ufw status

En algunos casos podemos tener una respuesta Status: inactive; esto ocurre porque el firewall está desactivado. Para activarlo usamos el comando sudo ufw enable y volvemos a comprobar el estado.

Network Services Configuration

Configuración de servicios de red - comando sudo systemctl status apache2

  • Una vez permitido el tráfico en el puerto HTTP, revisamos el estado de nuestro servidor con sudo systemctl status apache2.

Configuración de servicios de red - Servidor activo

Podemos ver que su estado es activo y corriendo.

  • Otra forma de comprobar que nuestro servidor está activo es haciendo una solicitud HTTP. Si no estamos seguros de la dirección IP de nuestro servidor, usamos el comando hostname -I y nos devolverá la IP, que abriremos en un navegador web para comprobar que esté activo.

Configuración de servicios de red - Host Name -I

Configuración de servicios de red - FTP (File Transfer Protocol)

Otro servicio habitual en un servidor es FTP (File Transfer Protocol), utilizado para enviar y recibir archivos entre cliente y servidor a través de la red. Es importante dejar claro que el FTP clásico (puerto 21) transmite las credenciales y los datos en texto plano, por lo que no es seguro y no debería usarse en redes no confiables.

Existen tres variantes relacionadas:

  • FTP: protocolo original, sin cifrado. No usar en producción.
  • FTPS: FTP sobre TLS/SSL (explícito con AUTH TLS en el puerto 21, o implícito en el puerto 990). Sí cifra tráfico y credenciales.
  • SFTP: SSH File Transfer Protocol. No es FTP; es un subsistema de SSH (puerto 22). Es la opción recomendada hoy por simplicidad y seguridad: si ya tienes SSH, tienes SFTP.

FTP funciona de manera análoga a HTTP (HyperText Transfer Protocol) o SMTP (Simple Mail Transfer Protocol). La diferencia es que FTP está diseñado para transferir archivos, mientras que HTTP transfiere páginas web y SMTP correos electrónicos.

⚠️ En un curso de ciberseguridad, la recomendación por defecto es SFTP. Si necesitas específicamente FTP, usa siempre FTPS con TLS obligatorio. A continuación mostramos la instalación de vsftpd como ejemplo didáctico; al final incluiremos la configuración TLS.

Para instalar este servicio en nuestro servidor podemos seguir los siguientes pasos:

  • Antes de instalar nuestro servicio, lo recomendable es actualizar el sistema operativo con sudo apt update y sudo apt upgrade.

Configuración de servicios de red - actualizar nuestro sistema operativo con sudo apt update y sudo apt upgrade

  • Procederemos a instalar vsftpd (Very Secure FTP Daemon), un servidor FTP para sistemas tipo Unix, incluido Linux. Lo instalamos con sudo apt install vsftpd.

Configuración de servicios de red - vsftpd (Very Secure FTP Daemon por sus siglas en inglés)

  • Una vez completada la instalación, tendremos que editar el archivo de configuración, lo recomendable en estos casos es crear una copia de seguridad del archivo original para así comenzar la configuración en blanco si cometemos algún error

Configuración de servicios de red - crear una copia de seguridad)

  • Ya configurado el tenemos la copia creada comenzamos a permitir el trafico FTP desde el firewall usando los siguientes comandos

sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

sudo ufw allow 990/tcp

sudo ufw allow 40000:50000/tcp

Configuración de servicios de red - permitir el trafico FTP desde el firewall

Estos comandos abrirán varios puertos

  • OpenSSH es necesario si todavía quieres acceder a tu servidor a través de SSH. A veces, esta opción está activada por defecto.
  • los puertos 20 y 21 para el tráfico FTP.
  • los puertos 40000:50000 se reservarán para el rango de puertos pasivos que eventualmente se establecerá en el archivo de configuración.
  • el puerto 990 se utilizará cuando se active el TLS.

Ya una vez agregadas las reglas revisamos el estatus del firewall

Configuración de servicios de red - estatus del firewall

  • Abrimos el archivo /etc/vsftpd.conf con el editor de codigo de nuestra elección y ya dentro del archivo habilitamos la opcion

  • write_enable=yes eliminando el #,

    Configuración de servicios de red - write_enable=yes eliminando el #

  • Agregamos unos valores nuevos al final del archivo. En primer lugar, se agregará un user_sub_token en la ruta del directorio local_root. Esto permitirá que la configuración funcione con el usuario actual y con cualquier otro usuario que se agregue posteriormente:

  • user_sub_token=$USER

    local_root=/home/$USER/ftp

Configuración de servicios de red - limitar puertos

  • Para garantizar que haya una cantidad considerable de conexiones disponibles, limitaremos la cantidad de puertos utilizados en el archivo de configuración:
    • pasv_min_port=40000
    • pasv_max_port=50000
  • Ya una vez hecho estos cambios cerramos el archivo y agregamos a nuestro usuario en la lista de usuarios del servicio ftp y comprobamos que este agregado adecuadamente

Configuración de servicios de red - cerrar y agregar usuario

  • Por último reiniciamos el servicio vsftpd

Configuración de servicios de red - reiniciamos el servicio vsftpd

📖 En este módulo hemos aprendido como configurar dos servicios muy importantes para administrar un servidor como lo son HTTP y FTP, existen muchos otros que puedes investigar y poner en práctica dentro de tu máquina virtual, anímate, la práctica hace al maestro.