Hardening Ubuntu 14.04 Server

Endurecimiento del servidor Ubuntu 14.04 Guias y Tutoriales

El endurecimiento es el proceso de reducir las vulnerabilidades y proteger un sistema de posibles puntos de ataque. La reducción de vulnerabilidades incluye la eliminación de servicios, nombres de usuario e inicios de sesión innecesarios y la desactivación de puertos innecesarios. En este artículo, le mostraremos cómo puede fortalecer un servidor Ubuntu.

Requisitos

Servidor Ubuntu 14.04 LTS con Open SSH instalado.

Primeros pasos: actualizar el sistema

Mantener el sistema actualizado es necesario después de instalar cualquier sistema operativo. Esto reducirá las vulnerabilidades conocidas que se encuentran en su sistema.

Para Ubuntu 14.04 ejecute lo siguiente:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean

Habilitar actualizaciones de seguridad automáticas

Habilitar las actualizaciones automáticas puede ser muy importante para proteger su servidor. Para instalar las «actualizaciones desatendidas», ejecute

sudo apt-get install unattended-upgrades

Para habilitarlo, ejecute el siguiente comando:

sudo dpkg-reconfigure -plow unattended-upgrades

Esto creará el archivo «/etc/apt/apt.conf.d/20auto-upgrades» que se muestra a continuación.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Crear «usuario en la sombra» con poderes sudo

El uso de un «usuario en la sombra» en lugar de la cuenta raíz es necesario por razones de seguridad. Puede crear un usuario que no será fácil de adivinar para otros usuarios. En este tutorial usaremos «maketech111» como nombre de usuario.

Para crear un usuario, ejecute el siguiente comando:

sudo useradd -d /home/maketech111 -s /bin/bash -m maketech111

Para dar acceso a sudo al usuario, ejecute el siguiente comando:

sudo usermod -a -G sudo maketech111

Para establecer una contraseña, ejecute el siguiente comando:

Nota: asegúrese de que su contraseña tenga al menos ocho caracteres y contenga una combinación compleja de números, letras y signos de puntuación.

Para eliminar la solicitud de contraseña para sudo, edite el archivo sudoers.

Agregue/edite como se describe a continuación.

maketech111 ALL=(ALL) NOPASSWD: ALL

Guarda el archivo y cierra.

Deshabilitar cuenta raíz

Es necesario deshabilitar la cuenta raíz por razones de seguridad.

Para deshabilitar la cuenta raíz, use el siguiente comando:

Si necesita volver a habilitar la cuenta, ejecute el siguiente comando:

Añadir una partición SWAP

Algunos servidores Ubuntu no están configurados con SWAP. SWAP se utiliza cuando la cantidad de memoria física total (RAM) está llena.

Para verificar el espacio SWAP, ejecute el siguiente comando:

Si no hay un archivo SWAP, debería obtener el siguiente resultado.

Filename                                Type            Size    Used    Priority

Para crear el archivo SWAP de 4 GB, deberá usar el comando «dd».

sudo dd if=/dev/zero of=/swapfile bs=4M count=1000

Para configurar el archivo SWAP, ejecute el siguiente comando:

Para activar el archivo de intercambio, ejecute

sudo swapon /swapfile
sudo swapon -s

Esto dará como resultado lo siguiente:

Filename                                Type            Size    Used    Priority
/swapfile                               file            4096000 0       -1

Para habilitarlo permanentemente, edite el archivo “/etc/fstab”.

Agregue la siguiente línea:

/swapfile swap swap defaults 0 0

Mejore el rendimiento de SWAP

Establezca el valor de intercambio adecuado para mejorar el rendimiento general del sistema.

Puedes hacer esto con el siguiente comando:

sudo echo 0 >> /proc/sys/vm/swappiness
sudo echo vm.swappiness = 0 >> /etc/sysctl.conf

Reinicie el sistema para comprobar si SWAP se activa correctamente.

Deshabilitar IPv6

Se recomienda deshabilitar IPv6 porque causa problemas con la lentitud de la conexión a Internet.

Para deshabilitar IPv6, edite el archivo “/etc/sysctl.conf”.

sudo nano /etc/sysctl.conf

Edite como se describe a continuación:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Para recargar la configuración, ejecute

Deshabilitar EQUILIBRIO IRQ

IRQBALANCE se utiliza para distribuir interrupciones de hardware en varias CPU para aumentar el rendimiento del sistema. Se recomienda deshabilitar IRQBALANCE para evitar interrupciones de hardware en sus hilos.

Para deshabilitar IRQBALANCE, edite “/etc/default/irqbalance”

sudo nano /etc/default/irqbalance

y cambie el valor HABILITADO a 0:

Arreglar el error Heartbleed de OpenSSL

Heartbleed es una vulnerabilidad grave en OpenSSL. Permite a un usuario remoto filtrar la memoria en fragmentos de hasta 64k. Luego, los piratas informáticos pueden recuperar las claves privadas para descifrar cualquier dato, como el nombre de usuario y las contraseñas del usuario.

El error heartbleed se encontró en OpenSSL 1.0.1 y está presente en las siguientes versiones:

  • 1.0.1
  • 1.0.1a
  • 1.0.1b
  • 1.0.1c
  • 1.0.1d
  • 1.0.1e
  • 1.0.1f

Para verificar la versión de OpenSSL en su sistema, ejecute los siguientes comandos:

sudo openssl version -v
sudo openssl version -b

Esto generará algo como lo siguiente:

OpenSSL 1.0.1 10 Mar 2012
built on: Wed Jan  2 18:45:51 UTC 2015

Si la fecha es anterior al «lunes 7 de abril a las 20:33:29 UTC de 2014» y la versión es «1.0.1», su sistema es vulnerable al error Heartbleed.

Para corregir este error, actualice OpenSSL a la última versión y ejecute

sudo apt-get update
sudo apt-get upgrade openssl libssl-dev
sudo apt-cache policy openssl libssl-dev

Ahora comprueba la versión y ejecuta

Esto generará algo como lo siguiente:

built on: Mon Apr  7 20:31:55 UTC 2014

Asegure la consola, la memoria compartida, /tmp y /var/tmp

Asegure la consola

De forma predeterminada, muchos terminales están habilitados en su sistema. Puede permitir solo un terminal y deshabilitar los otros terminales.

Para permitir solo “tty1” y deshabilitar otros terminales, edite el archivo “/etc/securetty”.

Agregue/Edite las siguientes líneas:

tty1
#tty2
#tty3
#tty4
# etc ...

Para asegurar el archivo “/etc/securetty”, cambie el permiso del archivo y ejecute los siguientes comandos:

sudo chown root:root /etc/securetty
sudo chmod 0600 /etc/securetty

Memoria compartida segura

Cualquier usuario puede usar la memoria compartida para atacar un servicio en ejecución, como apache o httpd. De forma predeterminada, la memoria compartida se monta en lectura/escritura con permiso de ejecución.

Para hacerlo más seguro, edite el archivo “/etc/fstab”.

Agregue la siguiente línea:

tmpfs     /run/shm    tmpfs     ro,noexec,nosuid        0       0

Para realizar los cambios sin reiniciar, puede ejecutar

Asegure /tmp y /var/tmp

Los directorios temporales como /tmp, /var/tmp y /dev/shm abren la puerta para que los atacantes proporcionen espacio para ejecutar scripts y ejecutables maliciosos.

Carpeta segura /tmp

Cree un archivo de sistema de archivos de 1 GB para la partición /tmp.

sudo dd if=/dev/zero of=/usr/tmpDSK bs=1024 count=1024000
sudo mkfs.ext4 /usr/tmpDSK

Cree una copia de seguridad de la carpeta /tmp actual:

sudo cp -avr /tmp /tmpbackup

Monte la nueva partición /tmp y configure los permisos correctos.

sudo mount -t tmpfs -o loop,noexec,nosuid,rw /usr/tmpDSK /tmp
sudo chmod 1777 /tmp

Copie los datos de la carpeta de copia de seguridad y elimine la carpeta de copia de seguridad.

sudo cp -avr /tmpbackup/* /tmp/
sudo rm -rf /tmpbackup

Configure /tmp en fbtab.

Agregue la siguiente línea:

/usr/tmpDSK /tmp tmpfs loop,nosuid,noexec,rw 0 0

Pruebe su entrada fstab.

Seguro /var/tmp:

Algunos programas usan esta carpeta como una carpeta temporal, por lo que también debemos proteger esta.

Para proteger /var/tmp, cree un enlace simbólico que haga que /var/tmp apunte a /tmp.

sudo mv /var/tmp /var/tmpold
sudo ln -s /tmp /var/tmp
sudo cp -avr /var/tmpold/* /tmp/

Establezca límites de seguridad y deshabilite los servicios no deseados

Establecer límites de seguridad

Para proteger su sistema de ataques con bombas de bifurcación, debe configurar un límite de proceso para sus usuarios.

Para configurar esto, edite el archivo «/etc/security/limits.conf»,

sudo nano /etc/security/limits.conf

y edite la siguiente línea:

user1 hard nproc 100
@group1 hard nproc 20

Esto evitará que los usuarios de un grupo específico tengan un máximo de veinte procesos y maximizará la cantidad de procesos a cien por usuario1.

Deshabilitar servicios innecesarios

Muchos servicios en Ubuntu ocupan memoria y espacio en disco que podría necesitar usar. Deshabilitar o eliminar servicios innecesarios puede mejorar el rendimiento general del sistema.

Para averiguar qué servicios se están ejecutando actualmente, ejecute el siguiente comando:

sudo initctl list | grep running

Puede desactivarlo ejecutando este comando.

sudo update-rc.d -f service_name remove
sudo apt-get purge service_name

Solucionar la vulnerabilidad de Shellshock Bash:

La vulnerabilidad de Shellshock permite a los piratas informáticos asignar variables de entorno de Bash y obtener acceso no autorizado al sistema. Esta vulnerabilidad es muy fácil de explotar.

Para verificar la vulnerabilidad del sistema, ejecute el siguiente comando:

sudo env i='() { :;}; echo Your system is Bash vulnerable' bash -c "echo Bash vulnerability test"

Si ve el siguiente resultado, significa que su sistema es vulnerable.

Your system is Bash vulnerable
Bash vulnerability test

Para corregir esta vulnerabilidad, ejecute el siguiente comando:

sudo apt-get update ; sudo apt-get install --only-upgrade bash

Si ejecuta el comando nuevamente, verá:

bash: warning: VAR: ignoring function definition attempt
bash: error importing function definition for `VAR'
Bash vulnerability test

Conclusión:

Aquí hemos explicado cosas básicas que podría hacer para fortalecer Ubuntu. Ahora debería comprender lo suficiente las prácticas básicas de seguridad que puede implementar en su servidor Ubuntu. Espero que esta publicación te sea útil.

Referencia: Guía de refuerzo de Ubuntu

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas