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.
1. 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.
2. Instala el software imprescindible para comenzar a gestionar tu servidor
Por ejemplo, vim:
1 |
apt-get install vim |
3. Instala algunas aplicaciones para asegurar el servicio sshd
Por ejemplo:
1 2 |
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:
- How To Install and Use Fail2ban on Ubuntu 14.04
- Cómo instalar y poner en marcha Fail2ban en Ubuntu Server 12.04 LTS
4. Crea un usuario no root para conectarte a ssh
Primero crea el usuario no root:
1 2 |
useradd -d /home/ssh_YZs32Rs21 -m ssh_YZs32Rs21 passwd ssh_YZs32Rs21 |
Y luego crea un grupo de usuarios SSH:
1 2 3 |
addgroup sshusers adduser ssh_YZs32Rs21 sshusers adduser root sshusers |
No está de más comprobar que el nuevo grupo está ok:
1 |
getent group sshusers |
5. Hardening del servicio SSH
Algunas de las keywords más importantes de /etc/ssh/sshd_config
que tienes que revisar son:
1 2 3 4 5 6 |
Port 981 LoginGraceTime 30 PermitRootLogin no X11Forwarding no AllowGroups sshusers MaxAuthTries 4 |
Los pares clave-valor más importantes son:
1 2 |
PermitRootLogin no AllowGroups sshusers |
Con esto ya puedes reiniciar ssh:
1 |
service ssh restart |
Y comprobar que tu nueva configuración ssh funciona.
6. Comprueba las actualizaciones
Comprueba qué distribución tiene instalada tu servidor:
1 |
cat /etc/lsb-release |
Si lo consideras conveniente puedes actualizar a la distribución Ubuntu LTS más reciente:
1 |
do-release-upgrade |
7. Borra el software que no necesites
Comprueba qué paquetes tienes instalados:
1 |
dpkg --get-selections |
Y quita lo que no vayas a utilizar, por ejemplo:
1 2 |
apt-get remove --purge ftp apt-get remove --purge telnet |
8. Instala Apache 2 con PHP
1 |
apt-get install apache2 php5 libapache2-mod-php5 |
Con Apache ya instalado, puedes cargar el módulo rewrite
:
1 |
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.
9. 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:
1 |
apt-get install php5-mysql php5-gd php5-curl |
10. Instala mod_evasive y mod_security
1 2 |
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í:
1 2 |
find / -name "test.pl" perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl |
11. 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.
12. Instala MySQL y haz hardening de MySQL
Para instalar MySQL:
1 |
apt-get install mysql-server mysql-client |
Luego puedes consultar algunas resultados de la primera Google SERP sobre hardening MySQL, por ejemplo:
Hardening MySQL Security Server- MySQL Security Best Practices
13. 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.
¿Me dejas un comentario? ¡Gracias!