Una de las tareas rutinarias consiste en alistar un servidor para ser utilizado en alguno de los ambientes de trabajo (desarrollo, prueba, pre-producción o producción – si tenemos un modelo de cuatro ambientes).  En este artículo se presentan indicaciones que permiten tener un sistema con elementos de seguridad básicos.

Paso 1: Instalar el Sistema Operativo

A menos que se tenga una imagen predefinida, es adecuado iniciar con un instalación de sistema operativo mínima. Con ello se garantiza que el alistamiento sea emergente y se puedan ir integrando los servicios requeridos en cada caso particular.

ASpectos a considerar
  • Configuración de los discos (por ejemplo si se implementa RAID o se trabaja con NAS/SAN)
  • Configurar LVM (Logical Volume Management)
  • Crear los sistemas de archivos (File Systems)
  • Una vez el sistema operativo haya arrancado se recomienda realizar una actualización para verificar la integridad de los repositorios y obtener las últimas versiones de los componentes del sistema.
Paso 2: Configurar los parámetros de red del servidor

Un servidor debe tener asignada una dirección IP, tener un nombre de nodo (host name),  un servidor de nombres de dominio (DNS) y una pasarela (Gateway).

Dependiendo de la estructura de la red, se podría asignar una IP privada fija y colocar las respectivas reglas en el NAT.

Paso 3: Instalar los servicios

El conjunto de servicios que se instalen deben corresponder exclusivamente a la funcionalidad definida para el servidor. En este sentido el grupo de servicios es exclusivo para cada organización y depende de:

  • Cantidad de infraestructura disponible
  • Recursos del servidor
  • Competencias del administrador
  • Factores de la organización (políticas de seguridad, políticas de separación de ambientes, políticas de gestión de plataforma, planes de continuidad de negocio).

En  cualquier caso se recomienda:

  • aplicar el principio de mínimo privilegio
  • documentar cada una de las tareas administrativas realizadas en el servidor.
  • Utilizar herramientas para automatizar la administración y el seguimiento al desempeño de servicios.

A modo de ejemplo, en el presente artículo se utilizará el servidor como servidor web y servidor de bases de datos (en ambientes robustos de producción no es común que un servidor web (o de aplicaciones) se despliegue en la misma máquina que el servidor de bases de datos).

Se toma como sistema operativo base GNU/Linux, distribución Red Hat/Centos

Instalar servidor Apache
Los comandos se anteceden del símbolo $ cuando deben ser ejecutados sin privilegios de administrador, o del símbolo # cuando deben ser ejecutados con privilegios de administrador. Estos últimos deberían ejecutarse por un usuario registrado como sudoer y no directamente por root
#yum -y install httpd php
#systemctl start httpd.service
#systemctl enable httpd.service
Instalar Servidor SSH
# yum -y install openssh-server
# systemctl enable sshd

Los sistemas de autenticación basados en usuario/clave son un objetivo apetecido por los delincuentes. Para evitar vectores de ataques básicos es adecuado deshabilitar este tipo de autenticación en el servidor SSH. Esto se realiza cambiando un parámetro en el archivo sshd_config (en este artículo utilizamos el editor vi pero puede utilizarse nano, emacs, o cualquier otro que esté disponible y con el cual el usuario se sienta más cómodo)

#vi /etc/ssh/sshd_config

Ir a la línea en donde se define el parámetro PasswordAuthentication, la cual debe quedar:

#PasswordAuthentication no

Después de esto es necesario iniciar el servicio

# systemctl start sshd

* Crear un par de llaves para autenticación remota
El par de llaves debe ser exclusivo para cada conexión. Se sugiere que la tarea de generación de las llaves sera realizada por el propio cliente. Así, en el computador desde el computador del cliente:

$ssh-keygen -b 4098 -f nombreLlave

Colocar una clave (passphrase) cuando se solicite. Tener en cuenta que esta clave debe ser compleja pero de fácil recordación. Si se olvida no existe la posibilidad de recuperarla y será necesario la generación de un nuevo par de llaves.

Luego de ello se deben haber creado dos archivos que contienen las llaves: nombreLlave y nombreLlave.pub. La primera corresponde a la llave PRIVADA que debe almacenarse en un directorio seguro; y la segunda es la llave pública que debe cargarse en el servidor.

$ssh-copy-id -i nombreLlave.pub usuario@192.168.0.3
Estado del documento: DRAFT (No autorizado como contenido válido)