Configuración de Servicios de Red en Linux: DHCP, DNS, FTP y Apache

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 13,89 KB

DHCP (Dynamic Host Configuration Protocol)

El Protocolo de Configuración Dinámica de Host (DHCP) es un protocolo de red que permite a los clientes de una red obtener automáticamente su configuración de red (dirección IP, máscara de subred, puerta de enlace predeterminada, servidores DNS, etc.) de un servidor DHCP.

Instalación y Gestión del Servicio (isc-dhcp-server)

  • Instalación: # apt install isc-dhcp-server
  • Iniciar servicio: # service isc-dhcp-server start
  • Detener servicio: # service isc-dhcp-server stop
  • Reiniciar servicio: # service isc-dhcp-server restart
  • Estado y proceso (PID): $ systemctl status isc-dhcp-server

Configuración del Servidor DHCP (/etc/dhcp/dhcpd.conf)

El archivo principal de configuración es /etc/dhcp/dhcpd.conf. Aquí se definen los parámetros globales y las configuraciones específicas para subredes y hosts.

Parámetros Globales

  • default-lease-time: Tiempo de concesión predeterminado (en segundos).
  • max-lease-time: Tiempo máximo de concesión (en segundos).
  • authoritative: Indica si el servidor DHCP es el principal (autoritativo) para la red. Se recomienda activarlo.

Parámetros de Subred

subnet dirección_subred netmask máscara_de_subred {
  range IP_primera IP_última;
  option routers Dirección_IP_del_Gateway;
  option domain-name-servers servidor_de_nombres;
}
  • subnet: Define la subred para la cual se configura el DHCP.
  • range: Especifica el rango de direcciones IP que el servidor DHCP puede asignar.
  • option routers: Define la dirección IP de la puerta de enlace predeterminada.
  • option domain-name-servers: Especifica las direcciones IP de los servidores DNS.

Asignación de IP Fija a un Host

host etiqueta_cliente {
  hardware ethernet dirección_MAC_cliente;
  fixed-address dirección_IP;
}
  • host: Define un host específico por su dirección MAC.
  • hardware ethernet: Especifica la dirección MAC del cliente.
  • fixed-address: Asigna una dirección IP fija a ese cliente.

Registro de Concesiones

El archivo /var/lib/dhcp/dhcpd.leases almacena las concesiones actuales de direcciones IP.

Comandos del Cliente DHCP (dhclient)

  • Liberar IP (Linux): # dhclient -v -r enp0s3
  • Solicitar IP (Linux): # dhclient -v enp0s3
  • Registro de concesiones del cliente (Linux): /var/lib/dhcp/dhclient.leases
  • Liberar IP (Windows): > ipconfig /release
  • Solicitar IP (Windows): > ipconfig /renew

Nota: El sistema usa el tiempo UTC.

Información de Red en Ubuntu

  • Dirección IP: ip a
  • Puerta de enlace (Gateway): ip r
  • Servidores DNS: /run/systemd/resolve/resolv.conf o systemd-resolve --status

DNS (Domain Name System)

El Sistema de Nombres de Dominio (DNS) es un sistema que traduce nombres de dominio legibles por humanos (como www.ejemplo.com) a direcciones IP numéricas (como 192.168.1.1) que las computadoras usan para identificarse en la red.

Instalación y Gestión del Servicio (BIND9)

  • Instalación: # apt install bind9
  • Nombre del servicio: bind9
  • Proceso: named
  • Puerto de escucha: 53 (UDP para consultas, TCP para transferencias de zona)

Archivos de Configuración de BIND9

  • named.conf: Archivo principal de configuración (no modificar directamente).
  • named.conf.local: Aquí se definen las zonas locales.
  • named.conf.options: Opciones globales del servidor.

Definición de Zonas (named.conf.local)

Servidor Primario (Maestro)

Zona Directa

zone "nombre_de_la_zona" {
  type master;
  file "archivo_donde_están_los_RR";
};

Zona Inversa

zone "z.y.x.in-addr.arpa" {
  type master;
  file "archivo_donde_están_los_RR";
};

Servidor Secundario (Esclavo)

zone "nombre_de_la_zona" {
  type slave;
  masters { IP_servidor_maestro; };
  file "archivo_donde_se_guardan_los_RR_transferidos";
};

Comprobación de la Configuración

  • Verificar named.conf.local: named-checkconf /etc/bind/named.conf.local

Registros de Recursos (RR) en la Zona Directa

$TTL número_en_segundos
; Zona IN SOA
dominio.  IN  SOA  servidor.dominio. correo.dominio. (
    Serial
    Refresh
    Retry
    Expire
    default_TTL
)

dominio.  IN  NS  servidor.dominio.

; Otros RR posibles:
; Direcciones IP:
Nombre_máquina  IN  A  Dirección_IP
; Alias:
Nombre_máquina1  IN  CNAME  Nombre_máquina2
; Servidor de correo electrónico:
dominio.  IN  MX  preferencia  mail.dominio.

Registros de Recursos (RR) en la Zona Inversa

$TTL número_en_segundos
; Zona IN SOA
Zona_inversa.  IN  SOA  servidor.dominio. correo.dominio. (
    Serial
    Refresh
    Retry
    Expire
    default_TTL
)

zona_inversa.  IN  NS  servidor.dominio.

; Registros PTR:
IP_a_la_inversa.in-addr.arpa.  IN  PTR  nombre_máquina.

Comprobación de los Archivos de RR

  • Verificar archivos de RR: named-checkzone zona archivo_con_los_RR_de_la_zona

Transferencia de Zona a un Servidor Esclavo

Para permitir la transferencia de zona a un servidor esclavo, añade la opción allow-transfer y notify en la definición de la zona en el servidor primario:

zone "nombre_de_la_zona" {
  type master;
  file "archivo_donde_están_los_RR";
  allow-transfer { IP_DNS_esclavo; };
  notify yes;
};

Comprobación de transferencia: Busca en /var/log/syslog cuándo tuvo lugar la transferencia (zone nombre_zona/IN: Transfer started).

Directiva $GENERATE

La directiva $GENERATE se utiliza para asociar múltiples nombres en registros A con direcciones IP continuas. Es útil para rangos de hosts.

Ejemplo:

$GENERATE 1-15 equipo$.smr2.com.  A  192.168.4.$

Cliente DNS

  • Configuración de servidores DNS (/etc/netplan/*.yaml):
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 192.168.1.10/24
      gateway4: 192.168.1.1
      nameservers:
          addresses: [8.8.8.8, 8.8.4.4]
  • Comprobar servidores DNS en uso: /run/systemd/resolve/resolv.conf o systemd-resolve --status
  • Comprobación con ping: ping nombre_de_dominio (El servidor DNS resuelve el nombre a su IP).
  • Comprobación con dig:
    • Resolución directa: dig nombre_dns
    • Resolución inversa: dig -x IP_a_resolver
  • Comando nslookup: nslookup (Permite consultar los registros RR de una zona. Se puede filtrar por tipo de RR con set type=tipo_de_RR).
  • Borrado de caché DNS:
    • Ubuntu: sudo systemd-resolve --flush-caches
    • Windows: ipconfig /flushdns

vsftpd (Very Secure FTP Daemon)

vsftpd es un servidor FTP (File Transfer Protocol) seguro y eficiente para sistemas Unix y Linux.

Resumen de Configuración

  • Instalación: # apt install vsftpd
  • Nombre del servicio: vsftpd
  • Nombre del proceso: vsftpd
  • Puerto de escucha: 21 (TCP)
  • Archivo de configuración: /etc/vsftpd.conf
  • Directorio compartido de usuario local (por defecto): /home/nombre_usuario
  • Registro de actividad: /var/log/vsftpd.log

Directivas de Configuración (/etc/vsftpd.conf)

  • listen=YES: El servidor escucha en modo standalone (solo IPv4).
  • listen_ipv6=YES: El servidor escucha en modo standalone (IPv4 e IPv6).
  • idle_session_timeout=tiempo-en-segundos: Tiempo de espera para conexiones inactivas.
  • write_enable=YES: Permite operaciones de escritura (subir archivos, crear directorios, etc.). El usuario también debe tener permisos de escritura en el sistema de archivos.
  • local_enable=YES: Permite el acceso a usuarios locales.
  • chroot_local_user=YES: Enjaula a los usuarios locales en sus directorios home. ¡Importante! Requiere configuración adicional (ver más abajo).
  • anonymous_enable=YES: Habilita el acceso anónimo.
  • anon_root=directorio_compartido: Directorio compartido para el usuario anónimo.

Configuración de chroot para Usuarios Locales

Para que chroot_local_user=YES funcione correctamente y de forma segura, se deben seguir estos pasos:

  1. Asegurarse de que el directorio home del usuario no tenga permisos de escritura para el usuario. Esto es una medida de seguridad.
  2. Crear un subdirectorio dentro del directorio home del usuario donde sí tenga permisos de escritura.

Ejemplo:

# Quitar permisos de escritura en el directorio home del usuario a todos:
chmod a-w /home/nombre_usuario

# Crear un directorio dentro del home del usuario con permisos de escritura:
mkdir /home/nombre_usuario/documentos
chown nombre_usuario:nombre_grupo /home/nombre_usuario/documentos

Apache2 (Servidor Web HTTP)

Apache2 es un servidor web HTTP de código abierto, multiplataforma, muy popular y ampliamente utilizado.

Instalación y Gestión

  • Instalación: # apt install apache2
  • Página de inicio por defecto: /var/www/html/index.html
  • Nombre del servicio: apache2
  • Detener servicio: # systemctl stop apache2
  • Iniciar servicio: # systemctl start apache2
  • Reiniciar servicio: # systemctl restart apache2
  • Recargar configuración: # systemctl reload apache2
  • Nombre del proceso: apache2
  • Puerto de escucha por defecto: 80 (TCP)
  • Directorio de instalación: /etc/apache2
  • Archivo de configuración principal: /etc/apache2/apache2.conf
  • Puertos de escucha: /etc/apache2/ports.conf
  • Variables de entorno: /etc/apache2/envvars
  • Directorio de sitios disponibles: /etc/apache2/sites-available
  • Archivo de configuración por defecto: /etc/apache2/sites-available/000-default.conf

Directivas Básicas de un Sitio Virtual

Las directivas se colocan dentro de un bloque <VirtualHost *:80> ... </VirtualHost>.

  • ServerName: Nombre DNS o nombre de la máquina por el que se accederá al sitio.
  • DocumentRoot: Directorio raíz de los documentos del sitio (por defecto: /var/www/html).
  • ErrorLog: Archivo de registro de errores (por defecto: /var/log/apache2/error.log).
  • CustomLog: Archivo de registro de accesos (por defecto: /var/log/apache2/access.log common).

Archivos de registro (logs): Se encuentran en /var/log/apache2 (access.log, error.log).

Habilitar/Deshabilitar Sitios Virtuales

  • Habilitar un sitio: # a2ensite archivo_de_configuración_del_sitio.conf (Crea un enlace simbólico en /etc/apache2/sites-enabled).
  • Deshabilitar un sitio: # a2dissite archivo_de_configuración_del_sitio.conf (Elimina el enlace simbólico en /etc/apache2/sites-enabled).

HTTPS en Apache (SSL/TLS)

  1. Habilitar el módulo SSL: # a2enmod ssl
  2. Habilitar el sitio SSL por defecto: # a2ensite default-ssl.conf
  3. Reiniciar Apache: # systemctl restart apache2

Entradas relacionadas: