Guía de puesta en marcha segura de una plataforma GLAMP en Ubuntu Server

Esta semana he tenido que migrar una app web de un servidor dedicado Ubuntu Server a otro servidor de características muy parecidas.

Comparto a continuación la hoja de ruta que he seguido para preparar el nuevo server y dejarlo listo para instalar la aplicación web.

Si alguna vez te ves en la misma situación y necesitas hacer una migración rápida y segura, puedes consultar esta guía para levantar tu nuevo server tan rápido como sea posible.

Logo Ubuntu

Entra como root en tu nuevo servidor y cambia la contraseña predeterminada

Es muy importante que la contraseña nueva sea segura. Por favor, lee el punto Utiliza contraseñas seguras del post Hardening de websites hechos con WordPress para saber cómo es una contraseña segura.

Instala el software imprescindible para comenzar a gestionar tu servidor

Por ejemplo, vim:

apt-get install vim

Instala algunas aplicaciones para asegurar el servicio sshd

Por ejemplo:

apt-get install sshguard
apt-get install fail2ban

Para más detalles consulta algunos resultados de las primeras Google SERP sobre hardening ssh, por ejemplo:

Crea un usuario no root para conectarte a ssh

Primero crea el usuario no root:

useradd -d /home/ssh_YZs32Rs21 -m ssh_YZs32Rs21
passwd ssh_YZs32Rs21

Y luego crea un grupo de usuarios SSH:

addgroup sshusers
adduser ssh_YZs32Rs21 sshusers
adduser root sshusers

No está de más comprobar que el nuevo grupo está ok:

getent group sshusers

Hardening del servicio SSH

Algunas de las keywords más importantes de /etc/ssh/sshd_config que tienes que revisar son:

Port 981
LoginGraceTime 30
PermitRootLogin no
X11Forwarding no
AllowGroups sshusers
MaxAuthTries 4

Los pares clave-valor más importantes son:

PermitRootLogin no
AllowGroups sshusers

Con esto ya puedes reiniciar ssh:

service ssh restart

Y comprobar que tu nueva configuración ssh funciona.

Comprueba las actualizaciones

Comprueba qué distribución tiene instalada tu servidor:

cat /etc/lsb-release	

Si lo consideras conveniente puedes actualizar a la distribución Ubuntu LTS más reciente:

do-release-upgrade

Borra el software que no necesites

Comprueba qué paquetes tienes instalados:

dpkg --get-selections

Y quita lo que no vayas a utilizar, por ejemplo:

apt-get remove --purge ftp
apt-get remove --purge telnet

Instala Apache 2 con PHP

apt-get install apache2 php5 libapache2-mod-php5

Con Apache ya instalado, puedes cargar el módulo rewrite:

a2enmod rewrite

La inmensa mayoría de apps web y CMS lo utilizan. Si no lo haces ahora es posible que en algún momento futuro, cuando ya estés desplegando tu web app, te salgan errores 404 porque rewrite no está cargado. Si lo haces ahora, así no perderás ese tiempo.

Instala las extensiones PHP que utilice tu proyecto

Si te sabes o te acuerdas de las extensiones que utiliza tu app, por qué no hacer esto ahora, por ejemplo:

apt-get install php5-mysql php5-gd php5-curl

Instala mod_evasive y mod_security

apt-get install libapache2-mod-evasive
apt-get install libapache2-modsecurity

Para más detalles acerca de este punto consulta algunas Google SERP sobre estas apps, por ejemplo:

Una vez instalado, recuerda que puedes probar mod_evasive así:

find / -name "test.pl"
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl

Haz hardening de Apache

El artículo Apache Web Server Security and Hardening Tips explica muy bien los pasos detallados que puedes seguir para securizar tu Apache.

Instala MySQL y haz hardening de MySQL

Para instalar MySQL:

apt-get install mysql-server mysql-client

Luego puedes consultar algunas resultados de la primera Google SERP sobre hardening MySQL, por ejemplo:

Ejecuta en tu servidor solo los servicios que necesitas

La idea de este paso es parecida a la del apartado 7. Borra el software que no necesites. Cuando ya tengas tu máquina funcionando debes asegurarte que solo corren los servicios imprescindibles.

Por ejemplo, si tu Ubuntu Server es un servidor de páginas web dinámicas entonces solo deberían correr los servicios http/https, mysql y ssh. Puedes ampliar esta información en el artículo ¿Y tú, ya ejecutas en tu Ubuntu Server sólo los servicios que necesitas?

Bueno amig@s, pues esto es todo por hoy. Hemos comentado varios puntos e ideas importantes acerca de la puesta en marcha de un servidor seguro.

Falta explicar cómo instalar y configurar algún cortafuegos como iptables o ufw; quizás también podríamos instalar alguna herramienta adicional de seguridad. Si quieres complementar o ampliar esta información por favor estás invitado a escribir tu comentario y continuamos desarrollando esta entrada.