Si queréis tener soporte HTTP2 con HSTS con CENTOS 6.8 + Plesk, la única opción es reinistalar el sistema operativo. OVH no da como opción instalar CENTOS 7 + Plesk, por lo que la única opción que queda es instalar Ubuntu 14.04 + Plesk.
OJO: Esto es para usuario avanzados. Asegúrate de tener copias de seguridad de todo antes de realizar estos pasos.
Lo primero a tener en cuenta:
- Al realizar estos pasos se elimina TODO el contenido del VPS y se vuelve a instalar desde 0. Por tanto hay que tener copia de todo lo que queramos conservar.
Nosotros lo que hacemos es:
- Crear copias de seguridad de las suscripciones de PLESK con el BACKUP MANAGER de Plesk y guardamos una copia de cada suscripción que luego volvemos a importar. Estas copias se pueden guardar en local o en un FTP, lo que resulte más cómodo. Nosotros siempre las guardamos sin contraseña porque nadie tiene acceso a estos datos; pero si los datos pueden ser accesibles es recomendable ponerles una contraseña.
Otros datos a guardar son:
- IPs adicionales configuradas en el servidor y qué dominio tiene asignada qué IP.
Todo el resto de datos los volvemos a recuperar luego al importar las suscripciones.
Una vez guardadas todas las suscripciones y todo contenido relevante del VPS, en el panel de OVH se puede solicitar la reinstalación del VPS, seleccionándolo y (con las opciones avanzadas activadas) hacer click en «REINSTALL MY VPS».
Cómo volver a instalar Plesk para dejarlo como estaba
Login a PLESK + Aceptar las condiciones de uso de plesk + Seleccionar «Corporate / Business Use y quitar» «Enable access to premium commercial apps» (Si sale un error de «Existe un problema con el certificado de seguridad de este sitio web» podéis tranquilamente seleccionar: «Vaya a este sitio web (no recomendado). «)
Crear algún usuario temporal.
Ir a Server / Updates and Upgrades + Install or upgrade product + Continue (actualizar a 12.5.30)
- Primer problema: Apache config file cannot be generated: «Wrong variable to subsitute»
Para solucionarlo en la consola:mv -f /usr/local/psa/admin/conf/templates/custom /root/custom_templates/ /usr/local/psa/admin/sbin/httpdmng --reconfigure-all
- Segundo problema: [How to] disable AppArmor? https://kb.plesk.com/en/112903
Para solucionarlo en la consola:/etc/init.d/apparmor stop /etc/init.d/apparmor teardown update-rc.d -f apparmor remove
Reiniciar el VPS con:
sudo shutdown -r now
Y después de reiniciar:
apt-get remove apparmor Y
Ahora hay que volver a loguearse en el PLESK del VPS sino da errores raros.
Volvemos a Server / Updates and Upgrades + Install or upgrade product + Cuando ha acabado: OK.
Luego añadimos componentes: Add/Remove Components
- Activar: Server Health Monitor, Fail2Ban, Mail Hosting: SpamAssassin, Web Hosting: ModSecurity, Web Hosting: Apache: mod_bw, Web Hosting: PHP interpreter versions: PHP 7.0, Plesk extensions: Plesk Firewall, Watchdog system monitoring, Skins and Color Schemes.
Continue + OK.
Ahora hay que volver a loguearse en el PLESK del VPS
Ahora actualizamos el Ubuntu desde la consola:
sudo apt-get update sudo apt-get upgrade -y
Instalamos el CLAMAV (para configurar el escaneo diario, tenemos instrucciones aquí: Instalar ClamAV en Ubuntu 14 en un VPS Comandos SSH para Ubuntu 14 con Plesk (OVH y Gigas):
sudo apt-get install clamav clamav-daemon -y sudo freshclam
Activamos el módulo mod_expires.c necesario para muchos plugins de caché:
sudo a2enmod expires service apache2 restart
Si lo quisiéramos desactivar en algún momento:
sudo a2dismod expires service apache2 restart
Además del módulo mod_expires.c tenemos que comprobar que esté habilitada la compresión GZIP en el VPS. Aquí hay una entrada extensa sobre el tema: Cómo habilitar compresión GZIP en Plesk sobre Ubuntu (OVH y GIGAS).
vi /etc/nginx/nginx.conf
Dentro de http buscar las siguientes líneas:
#gzip on; #gzip_disable "MSIE [1-6].(?!.*SV1)";
Quitar la almohadilla de comentario. Si no os la deja quitar pulsar la tecla insertar. Justo después hay que pegar lo siguiente:
gzip_comp_level 9; gzip_http_version 1.1; gzip_proxied any; gzip_min_length 10; gzip_buffers 16 8k; # Add a vary header for downstream proxies to avoid sending cached gzipped files to IE6 gzip_vary on; # GZIP Types - NEW gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/xhtml+xml application/javascript application/json application/vnd.ms-fontobject application/x-font-truetype font/eot font/opentype font/otf image/svg+xml image/vnd.microsoft.icon;
Guardar con ESC + :wq + Enter
Comprobar la sintaxis del archivo de configuración de NGINX con:
nginx -t
Si nos dice que la sintaxis es correcta volvemos a arrancar NGINX y APACHE con:
service nginx restart sudo /etc/init.d/apache2 restart
Volvemos a PLESK:
- Tools & Settings / Branding: Personalizamos el nombre y el logo del VPS para poder distinguirlos.
- Tools & Settings / IP Addresses: Añadimos las IPs adicionales.
- Custom Buttons: Eliminamos el botón de «Order a new domain» de OVH.
Para ir añadiendo los distintos dominios
- Websites&Domains: Add Domain
Hay que poner el nombre del dominio y seleccionar la IP correcta. Los datos del usuario y la contraseña da igual lo que se ponga porque al restaurar el backup se sobreescriben.
Una vez creado el dominio ir al «File Manager» y eliminar todos los archivos que crea PLESK por defecto. Estos archivos cuando se restaura un backup no se eliminan y pueden dar más de un quebradero de cabeza ya que tiene un archivo index.html que prevalece sobre el index.php de WordPress….
Ahora ir a «Backup Manager»
Upload
Seleccionar archivo de backup
Seleccionar: «Upload backup files without a valid signature»
Quitar selección de: «Use password protection». - Así por cada uno de los dominios.
- Si al entrar a PLESK se creó un dominio temporal para poder seguir, ahora se puede suprimir.
Seguimos:
- Activar ModSecurity (esto en Ubuntu de vez en cuando da un error interno, pero se activa de todas formas y funciona correctamente).
- Activar IP Address Banning con «Enable intrusion detection» y luego configuración de los jails (que por defecto están todos desactivados).
- Activar la limitación de envíos de email y la comprobación del SPF (en Tools & Settings / Mail Server Settings / Switch on limitations on outgoing email messages y Tools & Settings / Mail Server Settings / Switch on SPF spam protection).
Y para acabar activar HTTP2 y HSTS
Para activar el soporte accedemos por SSH al servidor y ejecutamos en la consola:
/usr/local/psa/bin/http2_pref enable
Cambios en SSL.conf (que ya no hacen falta)
Antes recomendábamos también ejecutar el siguiente comando (más que nada porque PLESK lo recomendaba en su ayuda), pero si lo hacemos, las webs con HTTP2 dejan de funcionar en Internet Explorer:
plesk sbin sslmng --services=nginx --custom --ciphers="EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20" --protocols="TLSv1 TLSv1.1 TLSv1.2"
Si por algunda de aquellas habéis ejecutado ese comando, para «deshacerlo», hay que irse editar el archivo:
/etc/nginx/conf.d/ssl.conf
El contenido original del archivo es este:
ssl_ciphers EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20:EECDH+SHA256+AES128:EECDH+SHA384+AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1+AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:CHACHA20:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on;
Plesk recomienda no tocar ese archivo, pero si no funciona, no nos queda otro remedio.
Para que coja estos cambios lo más sencillo y rápido es reiniciar el VPS. Así todos los servicios que lo leen cogen su nuevo contenido.
Optimizar NGINX para HTTP2
Para optimizar NGINX:
sudo nano /etc/nginx/nginx.conf
La conexión inicial entre el servidor y el usuario tarda bastante y se puede cachear añadiendo estas líneas al final del bloque http del archivo nginx.conf (ojo: añadirlo dentro del bloque de http, antes del paréntesis que lo cierra):
ssl_session_cache shared:SSL:5m; ssl_session_timeout 1h;
HSTS en WordPress
OJO si queremos que el soporte HSTS de las instalaciones de WordPress funcione correctamente (y pase las validaciones de hstspreload.appspot.com/) hay que añadir esto al archivo .htaccess de cada WordPress (ver también esta entrada):
- En WordPres debemos añadir al principio del archivo .htaccess y antes de las directivas de WordPress (que empiezan en la línea de “# BEGIN WordPress”) lo siguiente:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Y luego se puede comprobar en: tools.keycdn.com/http2-test y hstspreload.appspot.com/
Habilitar HSTS sin tener que añadirlo en el archivo .htaccess
Añadir la línea:
add_header Strict-Transport-Security "max-age=15768000" always;
Si queremos que también se aplique a subdominios, la sintaxis a añadir es esta:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
y así no tenemos que añadirlo en el archivo htaccess.
Ahora solo falta volver a arrancar NGINX (primero comprobamos que la sintáxis del archivo sea correcto con -t. Si no lo es, hay que corregir los errores):
sudo nginx -t service nginx restart service apache2 restart
Configuramos los backups
Configuración de copias de seguridad: «Backup Settings». OJO: Nosotros siempre usamos una contraseña de encriptación propia y no la de PLESK. Más que nada por si le pasa algo a la instalación de PLESK y ya no se pudiera recuperar la contraseña anterior.
Y ya lo tenemos todo listo y funcionando
Y con esto lo deberíamos de tener todo listo y funcionando. No obstante en el proceso pueden pasar mil cosas por lo que solo es para usuarios avanzados.
Créditos imágenes: Shutterstock