Configura wordpress con SSL

La seguridad en las comunicaciones es necesaria, y más vale tarde que nunca. Ahora podemos usar SSL de forma gratuíta gracias a Let’s Encrypt.

Let’s Encrypt es un proyecto de la Linux Foundation con el que colaboran grandes empresas como Cisco y organizaciones como Electronic Frontier Foundation que tiene como objetivo proveer de manera gratuíta certificados de seguridad para todos. Hasta ahora y aún sigue siendo así los certificados cuestan entre 60 y 300 euros dependiendo del tipo de certificado, seguro, etc… con Let’s Encrypt podremos usar un certificado sin tener que gastarnos dinero, el único incoveniente es que caduca a los 90 días y hay que renovarlo. Aunque esto no quiere decir que lo tengas que hacer manualmente, ¡ que trabaje el CRON !

He instalado este certificado para mi dominio, de manera muy sencilla por que uso Plesk y existe un plugin[2] y he cambiado la configuración de wordpress en Ajustes / Generales / Dirección de WordPress (URL) y Dirección del sitio (URL) a https://www.senin.org

Te animo a que tambien uses SSL y muevas tu blog a ssl

[1]https://letsencrypt.org/getting-started/
[2]https://devblog.plesk.com/2015/12/lets-encrypt-plesk/

Fallo grave de seguridad en Plesk mod_php

Nos llega información acerda de una fallo de seguridad en Plesk:

“SECURITY ADVISORY:
Parallels Plesk Panel 9.x, 10.x, 11.x – Privilege Escalation Vulnerability

Parallels Customer,

Please read this message in its entirety and take the recommended actions.

Situation

Parallels Plesk Panel privilege escalation vulnerabilities have been
discovered and are described in VU#310500 and CVE-2013-0132,
CVE-2013-0133 (CVSS score 4.4 –
http://www.kb.cert.org/vuls/id/310500).

Impact

This impacts Parallels Plesk Panel for Linux versions 9.x, 10.x, 11.x.

You are at risk if you have Apache web server running mod_php,
mod_perl, mod_python, etc.

You are NOT at risk if you have Apache web server running Fast CGI
(PHP, perl, python, etc.) or CGI (PHP, perl, python, etc.).

Solution

Parallels has issued security updates for Parallels Plesk Panel
versions 9.x-11.x. The security updates for Parallels Plesk Panel 11.x
and Parallels Plesk Panel 10.4.4 will automatically appear inside your
Parallels Plesk Panel control panel – please apply them as soon as
possible.

The security hotfix for Parallels Plesk 9.x is available for download
here: http://kb.parallels.com/115942.

Workaround

Parallels understands that it’s not always practical for immediate
upgrades, so we have provided a solution to fix this vulnerability.
For the immediate solution, customers should read this knowledge base
article for instructions: http://kb.parallels.com/115942.”

Recordamos que para instalar los microupdates de plesk se pueden ejecutar estos comandos :

/usr/local/psa/admin/sbin/autoinstaller --select-release-current --install-component base
/usr/local/psa/admin/sbin/autoinstaller --select-release-current --upgrade-installed-components

Plesk Fallo crítico de seguridad: SQL Injection

Se ha notificado desde Parallels a todos los clientes de que existe un fallo grave de seguridad que permitie la inyección de código SQL que afecta a algunas versiones antiguas de Plesk . Las versiones afectadas son :

  • Linux – Plesk 10.3.1
  • Linux – Plesk 9.5.4
  • Linux – Plesk 8.6.0
  • Windows 10.3.1
  • Windows Plesk 9
  • Windows Plesk 8

Se han publicado parches para solucionar estos problemas. Instalando los microupdates se corrije el problema, excepto en las versiones para Windows Plesk 9 y Windows Plesk 8 que se han publicado parches específicos en este enlace :

How to fix vulnerability in Plesk 8.6, 9.3, and 9.5 for Windows

Para las versiones linux se puede ejecutar este comando para actuailzar la distribución:

/usr/local/psa/admin/sbin/autoinstaller --select-product-id plesk --select-release-current --reinstall-patch --install-component base

Y por último si queremos verificar la versión de nuestra instalación lo podemos comprobar así:

cat /usr/local/psa/version

No hace falta decir que es crítico actualizar el sistema.

Agrengando lenguaje Vasco al webmail de Plesk: Horde

Un requisito relativamente fácil como puede ser agregar un idioma a Horde ( gestor de mail vía web y software libre ) puede complicarse al tener que realizarlo en un entorno paquetizado y cerrdado como es Plesk. El problema de modificar este componente ( u otros de Plesk ) es que futuras versiones o parches de Plesk puedes modificar o machacar nuestros cambios. Además de no conocer el impacto real de nuestras modificaciones.

Desde el soporte de Parallels nos han indicado que no existe problema en agregar un nuevo lenguaje a Plesk y nos indican la guia de instalacion de idiomas en Horde http://www.horde.org/horde/docs/?f=po_README.html

Primero verificamos que version tenemos de Horde instalada. Vamos a intentar siempre usar las mismas versiones para quitarnos de problemas

# rpm -qa | grep horde
psa-horde-3.1.7-cos5.build92090714.19

Creamos el directorio para preparar la compilacion de los idiomas ( hay que generar los .mo a partir de ficheros .po )

mkdir -p /usr/src/horde
cd /usr/src/horde

Nos bajamos nuestra versión de horde:

wget http://ftp.horde.org/pub/horde/horde-3.1.7.tar.gz
tar zxvf horde-3.1.7.tar.gz

Ahora nos bajamos por separado los ficheros .po del cvs y que no están en la distribucion 3.1.7.
Es muy importante no mezclar ficheros de distribuciones para evitar problemas. La estructura de directorios se almacenará en el directorio ‘horde’

export CVSROOT=:pserver:cvsread@anoncvs.horde.org:/repository
cvs login
# password: horde
# cvs co horde/po/ horde/locale horde/lib/core.php
cvs co horde/po/ horde/locale 

Como solo queremos los ficheros de cadenas, mezclar phps de distinas versiones nos dará errores de clases no encontradas

cp -r horde/po/*_* horde-3.1.7/po/
cp -r horde/locale/*_* horde-3.1.7/locale/

Tenemos algunos requistios que se pueden leer en el fichero REAME.

cd /usr/src/horde-po
wget http://download.pear.php.net/package/File_Find-1.3.0.tgz
wget http://download.pear.php.net/package/Console_Table-1.1.3.tgz

mkdir -p pear/Console
mkdir -p pear/File

tar zxvf File_Find-1.3.0.tgz -C pear/File/ *Find.php
mv pear/File/File_Find-1.3.0/Find.php pear/File/

tar zxvf Console_Table-1.1.3.tgz -C pear/Console/ *Table.php
mv pear/Console/Console_Table-1.1.3/* pear/Console/

También necesitamos la herramienta gettext al menos la version 0.12

yum install gettext

Dado que ejecutamos php con la configuracion de Plesk estamos limitados a la ejecución de comandos bajo safe_mode. En la cabecera de translator.php, agregamos las rutas necesarias ( include_path ) y con php -n hacemos que no cargue el /etc/php.ini para saltarnos el safe_mode

#!/usr/bin/php -qn

Ahora generamos los ficheros:

./translator.php make 

Copiamos los ficheros de cadenas a nuestra ubicación de la instalación de Plesk. Cuidado, no copiar ningún php de la rama del cvs a nuestra rama estable.

cp /usr/src/horde/horde-3.1.7/locale/* /usr/share/psa-horde/locale/

Por último editar la configuracón de horde de plesk para que aparezca el nuevo idioma disponible:

/etc/psa/webmail/horde/horde/nls.php
$nls['languages']['eu_ES'] = 'Euskera';

Aún no he tenido la oportunidad de problarlo pero casi seguro que con alguna alguna actualización, machaca este fichero y hay que volver a editarlo para agregar el idioma.

safe_mode y wordpress

Una forma elegante de resolver el problema de permisos con wordpress teniendo safe_mode activo es la siguiente.

Podremos permisos 7777 ( sticky + guid ) a la carpeta de uploads

chmod 7777 /var/www/vhosts/midominio.com/httpdocs/wp-content/uploads

y agregamos esta linea al fichero /var/www/vhosts/midominio.com/conf/vhost.conf :

php_admin_flag safe_mode_gid  "On"

Con esta directiva le indicamos al motor php que sólo compruebe el grupo en las directivas de safe_mode. Como tiene permisos de stick y guid, los ficheros subidos heredaran el grupo al que pertenece la carpeta ‘uploads’

Para que este cambio quede correctamente funcionando hay que lanzar el reconfigurador ( en caso de plesk ) y recargar el apache:

/usr/local/psa/admin/bin/websrvmng --reconfigure-vhost --vhost-name=midominio.com

apachectl graceful ó apache2ctl graceful para debian

Spamassassin + Plesk + Windows … y cómo lo personalizo ?

Después de un rato intentando parametrizar a mi gusto el spamassasin de plesk en una instalación windows he encontrado que la ruta correcta es

esta ruta contiene reglas pero no es la ruta válida:

"C:Program FilesParallelsPleskAdditionalSpamAssassinrules"

Esta otra SÍ ES LA CORRECTA

"C:Program FilesParallelsPleskAdditionalPerlsitesharespamassassin"

PHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0

eAccelertor es una solución de cache para php. Con este software conseguimos guardar una copia de scripts ya interpretados, de esta forma cada vez que el servidor web tenga que lanzar este script ahorrará una parte de tiempo y carga de cpu.

Con este software puede ocurrir que nos econtremos con el siguiente error:

PHP Warning:  [eAccelerator] Can not create shared memory area in Unknown on line 0
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0

    
Por defecto el tamaño de memoria compartida ( shared memory ) en un kernel 2.6 es de 32mb. Este parámetro se encuentra en el fichero /proc/sys/kernel/shmmax de forma que puedes comprobar si está en el límite. Para modificarlo existen dos formas :

* Cambio on-fly, con esto duplicaremos el tamaño actual

echo $(( `cat /proc/sys/kernel/shmmax` * 2 ))  > /proc/sys/kernel/shmmax

* Cambio permamente, modificando /etc/sysctl.conf

kernel.shmmax=VALOR_DESEADO

# aplicar los cambios reiniciando o con este comando:
sysctl -p

En el caso de los vps habŕa que comprobar si la memoria asignada es suficiente ( share memory and socket buffers ). Para ello podemos verificar el fichero /proc/user_beancounter donde muestra todos los parámetros que tenemos y la última columna referente a failcnt, es la cantidad de veces que se han superado estos límites. Seguramente aparecerá la fila  PRIVVMPAGES con el contador distinto de 0. Habrá que ampliar este valor en ese caso.

Recuperar contraseña de admin Plesk Windows

La forma más cómoda de recuperar el password de admin en un servidor Windows con una instalación de Plesk, es acceder mediante una shell o terminal server y ejecutar este comando

"%plesk_bin%"plesksrvclient.exe -get

Nos abrirá una ventana con la password de admin de Plesk.

También podemos asignar una nueva credencial con

"%plesk_bin%"plesksrvclient.exe -set 

Si agregamos al final true cambiará tambien la contraseña de la base de datos de Plesk. Finalmente si usamos -nogui en vez de sacar el resultado por pantalla lo mostrará en consola y enviará al portapapeles el password.