Archivo de la Categoría PleskWindows

Al pasar a actualizar a la versión de Plesk 8.6 (la última que hay actualmente) desde Plesk 8.2 me he encontrado con problemas diversos por culpa de que la base de datos que utiliza Plesk (llamada psa) ha cambiado columnas en unas cuantas de sus tablas lo cual genera diversos problemas a la hora de trabajar con Plesk, hacer backups, etc…

Tomando como referencia la psa de un Plesk 8.6 y otro 8.2 se puede comparar las columnas de las diferentes tablas y crear un script que realice los ALTER TABLE correspondientes, pero sino te quieres complicar mucho la vida este programita puede arreglarte la bd y solucionarte la papeleta.

Por circunstancias de la vida me veo obligado a trabajar con Plesk a diario. Cuando se trata de dar hosting a miles de usuarios está claro que hace falta automatizar estas cosas. Muchas empresas grandes cuentan con su propio panel de control, pero no es el caso de todas y las pequeñas normalmente no se pueden permitir el desarrollo de su propio panel .

Paralells Plesk Control Panel 8.6 lista 7 de sus “Advantages”, en este caso voy a centrarme en esta:

Most Secure

Not only does Plesk control panel contain new security measures but also, existing security features have been improved. The control panel’s redesigned subsystem improves overall system security as well as support for 3rd party FTP servers that make secure uploads possible.

Fuente: http://www.parallels.com/products/plesk/advantages/

Al probar la  versión 9 que aún está en BETA supuse que sería aún más “segura” que la actual. Lamentablemente me he llevado una desilusión en este aspecto.

Todo esto viene a cuento de que este panel mantiene una base de datos que es el corazón del mismo. PSA es el nombre de la base de datos que conoceréis de sobra si alguna vez habéis administrado un servidor Plesk. Y aunque la idea puede ser buena las formas en las que se utiliza no lo son.

  • La bbdd NO guarda ninguna integridad referencial, y como es necesario meterla mano cada vez que falla una operación como crear o borrar alojamientos, bbdd, usuarios, buzones… sino se tiene cuidado es fácil perder el control.
  • Cuando se hacen actualizaciones del panel a veces cambian tablas, columnas, … y el panel empieza a dar problemas. Un ejemplo es al pasar de Plesk 8.2 a la versión que hay en estos momentos, Plesk 8.6.
  • Y el ultimo punto pero no por ello menos importante. Los datos de los usuarios se guardan en la bbdd en TEXTO PLANO.

Así que si eres usuario de este panel de control ten cuidado porque esas contraseñas que das SON visibles.

Algunos ejemplos:

Mostrar las contraseñas de administrador de mySQL, MSSQL, Postgresql o cualquier bbdd a la que este suscrito el panel de control:

SELECT type,admin_password FROM DatabaseServers

De la misma forma se almacenan los usuarios y contraseñas de buzones de correo, ftp, logins a Plesk, usuarios de bbdd, etc…

 

Todo esto hace que la seguridad de Linux, Windows, MySQL, MSSQL, Postgresql, Qmail, etc se vaya al traste teniendo en cuenta la regla de oro de que Un sistema es tan seguro como su eslabón más débil.

La verdad es que me pregunto si será tan difícil guardar las contraseñas encriptadas….

En este tip se indica como recuperar las excepciones que Plesk añade por defecto tras su instalación.

Desde %plesk_bin% ejecutar:

firewall.exe –s –i eth0

Donde “eth0” debe ser cambiado por el nombre de la interfaz de red.

Para subir archivos pesados a través de phpMyAdmin hay que tener en cuenta el tiempo de ejecución máximo configurado tanto para el propio phpMyAdmin como para PHP.

PhpMyAdmin tiene un parámetro propio para el tiempo máximo de ejecución, hay que localizar config.inc.php y editarlo con valor a 0 si quieres que sea tiempo ilimitado o establecer un valor concreto (en segundos).

$cfg['ExecTimeLimit']=0;

Nota, si usas Plesk/Win estará en:
C:\Archivos de programa\SWsoft\Plesk\admin\htdocs\domains\databases\phpMyAdmin\config.inc.php

 También se debe tener en cuenta el tiempo máximo de ejecución para php y los límites de memoria máximos, para ello se edita php.ini con los valores deseados, este sería un ejemplo como el que tengo copiado en mis notas desde hace tiempo:

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

;max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_execution_time = 3600 ;

;max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
max_input_time = 1800 ;

;memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
memory_limit = 200M ;

;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;

; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
register_globals = Off ;

; Maximum size of POST data that PHP will accept.
;post_max_size = 8M
post_max_size = 200M ;

Para limitar una aplicación evitando que consuma todos los recursos del sistema y garantizar la calidad del servicio a otros usuarios IIS nos ofrece varias formas, aquí sólo comentaré las 3 más sencillas de aplicar y bastante efectivas.

En el panel de control del dominio del propio Plesk tenemos la opción siguiente:

Nos ofrece estas 2 opciones, bastante útiles:

La primera sirve para limitar el ancho de banda (en kilobytes por segundo) disponible a un sitio.

La segunda el máximo de conexiones concurrentes permitidas a la aplicación.

Además contamos con la opción IIS Aplication Pool en el caso de que el alojamiento esté en un pool dedicado (no usando w3wp shared mode).

Desde aquí es posible limitar el máximo uso de CPU a la aplicación y no sólo eso, también hay que destacar la opción “Recycle” que libera la memoria que está usando el proceso de trabajo para los casos en los que se vuelve inestable tras estar en ejecución un largo período de tiempo.

Para no extenderme demasiado en este tip, en breve postearé como hacer todo esto de forma más “manual” sin usar Plesk, es decir, desde el propio Administrador de IIS (iis.msc).

Es posible que aparezca el siguiente error al chequear los permisos:

invalid column name ‘app_id’

Plesk Reconfigurator has found permissions problems on sergiosainz.com, but was unable to fix the permissions due to the errors shown above.

La solución es sustituir la librería “psaobsolete.dll” (en %plesk_bin%) por esta nueva:

http://download1.swsoft.com/Plesk/Autoupdate/Windows/8.3.0/129956/psaobsolete.dll

 

El bug está comentado en el artículo #3561 de la KB de Swsoft.

Normalmente uno de los usuarios que más visita una web es el mismo cliente, lo cual abulta las estadísticas generando resultados poco objetivos.

Para bloquear IPs, basta con modificar el archivo awstats.dominio.com.conf e introducir la IP en la opción SkipHosts

# Do not include access from clients that match following criteria.
# If your log file contains IP adresses in host field, you must put here
# matching IP adresses criteria.
# If DNS lookup is already done in your log file, you must put here hostname
# criteria.
# Note: Use space between each value.
# Example: “127.0.0.1 163.84. 201.101.51.1″
# Example: “localhost abcxyz”
# Default: ” ”
#
SkipHosts=” “

En cPanel el archivo se puede encontrar en /home/ususario/tmp/awstats/awstats.dominio.net.conf
En Plesk (Gnu/Linux) se puede encontrar en /usr/local/psa/etc/awstats/awstats.palasypadel.com-http.conf
En Plesk (Windows) se puede encontrar en C:\Inetpub\vhosts\dominio.com\statistics\webstat\AWStats\cgi-bin

Me he encontrado con esto en una de las webs,

Error in my_thread_global_end(): 1 threads didn’t exit

Revisando el problema veo que se trata de un bug conocido de PHP y afecta a las versiones PHP 5.2.2 y 5.2.3.

La solución pasa por ir a php.net y descargar los binarios para la 5.2.1 , de ahí lo que nos interesa es el archivo libmysql.dll

Hay que copiarlo en los directorios:

- %plesk_dir%\Additional\PleskPHP5
- C:\Windows\System32

Con eso el problema queda solucionado.

Dar permisos al usuario sergio en bdsainz desde la ip 1.1.1.1 y con contraseña qwerty

mysql> GRANT ALL ON bdsainz.* TO sergio@’1.1.1.1′ IDENTIFIED BY ‘qwerty’;

mysql> REVOKE GRANT OPTION ON bdsainz.* FROM sergio@’1.1.1.1′;

Ver permisos de un usuario:

SHOW GRANTS FOR "sergio"@"1.1.1.1" ;

Para ver todos los permisos hay que usar un procedimiento almacenado:

  1. USE mysql;
  2. DELIMITER //
  3. CREATE PROCEDURE showAllGrants() BEGIN
  4. DECLARE done INT DEFAULT 0;
  5. DECLARE theUser CHAR(16);
  6. DECLARE theHost CHAR(16);
  7. DECLARE cur1 CURSOR FOR SELECT user, host FROM mysql.user;
  8. DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000′ SET done = 1;
  9. OPEN cur1;
  10. REPEAT
  11. FETCH cur1 INTO theUser, theHost;
  12. IF NOT done THEN
  13. SET @sql := CONCAT(’SHOW GRANTS FOR \”, theUser, ‘\’@\”, theHost, ‘\”);
  14. PREPARE grantStatement FROM @sql;
  15. EXECUTE grantStatement;
  16. DROP PREPARE grantStatement;
  17. END IF;
  18. UNTIL done END REPEAT;
  19. CLOSE cur1;
  20. END//
  21. DELIMITER ;
  22. CALL showAllGrants();

Pegado de <http://forge.mysql.com/snippets/view.php?id=95>

No permitir accesos remotos:

Editar /etc/my.cnf e incluir/descomentar la línea skip-networking dentro de [mysqld] y reiniciar mysql.

Se produce el siguiente error al acceder a la opción de seguimiento (CORREO > FILTRO DE SPAM > SEGUIMIENTO)


Warning: DOMDocument::loadXML() [function.loadXML]: xmlParseCharRef: invalid xmlChar value 2 in Entity, line: 332 in C:\Archivos de programa\SWsoft\Plesk\admin\plib\class.SpamAssassinTrain.php on line 72

Este bug está recogido en el artículo 2273 de la Knowledgebase de SWSoft

Para Plesk 8.2.0

http://download1.swsoft.com/Plesk/Autoupdate/Windows/8.2.0/109261/spammng.exe


Para Plesk 8.2.0.1

http://download1.swsoft.com/Plesk/Autoupdate/Windows/8.2.0.1/109261/spammng.exe