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:
sudo passwd maketech111
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.
sudo nano /etc/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:
sudo passwd -l root
Si necesita volver a habilitar la cuenta, ejecute el siguiente comando:
sudo passwd -u root
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:
sudo swapon -s
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:
sudo mkswap /swapfile
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”.
sudo nano /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
sudo sysctl -p
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:
ENABLED=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
sudo openssl version -b
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”.
sudo nano /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”.
sudo nano /etc/fstab
Agregue la siguiente línea:
tmpfs /run/shm tmpfs ro,noexec,nosuid 0 0
Para realizar los cambios sin reiniciar, puede ejecutar
sudo mount -a
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.
sudo nano /etc/fstab
Agregue la siguiente línea:
/usr/tmpDSK /tmp tmpfs loop,nosuid,noexec,rw 0 0
Pruebe su entrada fstab.
sudo mount -a
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
Danos tu opinión