Solución al error Premature end of script headers al ejecutar CGI en Plesk 9

Este error me ha comido mucho la cabeza¡¡¡¡¡¡¡¡¡¡¡¡¡  la solucíon que yo le he dado al error Premature end of script headers al ejecutar un script CGI en Plesk 9es la siguiente.

Primeramente he restaurado los permisos de usuario del grupo en la carpeta donde se va a ejecutar el cgi, normalmente /var/www/vhosts/midominio.com/cgi-bin/ en Plesk.

chown usuariodeldominio:psaserv cgi-bin/
chown usuariodeldominio:psaserv cgi-bin/*
chown usuariodeldominio:psaserv cgi-bin/test/
chown usuariodeldominio:psaserv cgi-bin/test/test.cgi

nota:  a la carpeta test y al test.cgi le he dado permisos para corroborar que efectivamente rulaba el cgi correctamente y que no era del script que yo intentaba hacer andar.

Por segundo paso le he dado permisos 755 a los scripts y a la carpeta cgi-bin debido que el script cgi que queria hacer andar necesitaba escribir archivos de log dentro de la carpeta.

chmod 755 cgi-bin/*
chmod 755 cgi-bin/test
chmod 755 cgi-bin/test/test.cgi

Y por último he comprobado que la configuración de apache del virtualhost, en plesk normalmente esta en /var/www/vhosts/dominio.com/conf/httpd.include, fijandome que en  la parte ( SuexecUserGroup         usuariodeldominio psaserv )este usuario y grupo sea el correcto y permita la ejecución de scripts cgi en el virtualhost de Plesk, y por su puesto tenga activado el cgi en el virtualhost con la opcion Options -Includes +ExecCGI.

Espero que os haya servidor de ayuda.

Nota el servidor en el que ha salido este error esta sobre Plesk 9.0.1 y Centos 5.2 64bits

URLs estáticas y agradables para cualquier aplicación web

La idea de este artículo es mostrar un sencillo ejemplo de cómo hacer que los links de nuestras aplicaciones web sean “bonitos”, algo así como los que podemos utilizar con WordPress. De tal manera no tendríamos links como estos:

http://www.sitio.com/index.php?accion=consultar&objetivo=personas

Sino algo estéticamente más agradable como:

http://www.sitio.com/personas/

¿Qué necesito?

Es necesario tener en cuenta los prerrequisitos para poder hacer esto. Para este ejemplo voy a suponer que la aplicación la estás haciendo sobre el servidor Apache, y que estás programando en PHP+MySQL. Necesitas:

  • Manejar la mayor parte del trabajo con el archivo index.php. Esto más que un requisito es un consejo. Cuando estés desarrollando aplicaciones en PHP es recomendable que la mayor parte del sistema tenga que ser procesado inicialmente por este archivo, el cual se encargará de manejar todas las peticiones y utilizar los módulos que se necesiten. Esto, por supuesto, NO quiere decir que TODO el código vaya dentro del archivo index.php; una buena práctica es separar el código en módulos y llamarlos con funciones como include o require.
  • Es necesario tener instalado el mod_rewrite, el cual se utilizará desde un archivo .htaccess. El ModRewrite es un módulo para Apache que por lo general se configura (definir reglas) en el archivo httpd.conf, pero es posible poner una configuración ModRewrite en cualquier directorio de nuestro servidor web dentro del archivo .htaccess.
  • Puesto que de acuerdo al string que pasemos en la URL se debe determinar qué hacer, es necesario hacer algo de esto:
    • Hacer que dentro de la base de datos la llave primaria de la tabla a consultar sea una cadena de texto, ó
    • Hacer otro campo en la tabla de MySQL aparte de la llave primaria

Ejemplo

Para nuestro ejemplo necesitamos un servidor Apache con ModRewrite, PHP y MySQL. Lo primero es crear la base de datos, así:

Continuar leyendo «URLs estáticas y agradables para cualquier aplicación web»

Evitar el SPAM en Plesk 9

Plesk 9, al igual que sus antecesores tiene un pequeño problema de spam. Si no esta bien configurado, el servidor puede ser usado facilmente para mandar spam, el problema viene en la configuración de qmail, si echamos un vistazo a la “whitelist” vemos que tiene configurado el host 127.0.0.0/32, lo cual, hablando claramente, significa que autoriza a cualquier IP a mandar correo a traves de su servidor SMTP… un verdadero problema.

Lo primero que debemos hacer es borrar esta entrada e incluir 127.0.0.1/8, con lo cual limitamos en envio a la ip local.

El problema de hacer esto es que automaticamente hemos desautorizado a que cualquier script dentro de nuestro server envie correo, incluyendo la funcion sendmail() o los correos de wordpress para autorizar usuarios, etc,etc

La solucion es sencilla, añadir una nueva entrada en la whitelist para cada ip configurada en nuestro servidor, del tipo x.x.x.x/8. Ya tenemos el problema casi solucionado

Ahora configuramos la proteccion de spam en blacklisk DNS, es decir, la proteccion DNSBL, añadiendo estas dos zonas, separadas por punto y coma, ta como estan aqui

  • sbl.spamhaus.org;cbl.abuseat.org

Entramos por SSH en nuestro servidor y reiniciamos qmail con

  • /etc/init.d/qmail restart

Y listo…

Manual de seguridad, optimización de Apache, PHP y MySQL

Curso de seguridad php y mysql
optimización de Apache, PHP y MySQL

Completisimo Curso de aprendizaje de Mantenimiento, seguridad & Optimización de un Portal Web basado en Lenguaje PHP. Excelente contenido , material ideal para todos aquellos Webmaster que programan sus webs en este magnifico lenguaje!!
Consta de dos partes bien diferenciadas. La primera -teórica- describe el estado del arte de la seguridad en aplicaciones web así como conceptos generales de seguridad informática. Se incluyen  también algunas referencias y breves descripciones de herramientas útiles para la auditoría de aplicaciones web, además de una guía de administración para la creación de un entorno seguro bajo Apache, PHP y MySQL. La segunda parte -práctica- consiste en auditar el código de dos portales  web de características similares, depurarlo, proponer mejoras funcionales, y posteriormente  implementarlas. Como parte del desarrollo, se han escrito y experimentado con rutinas de protección  genérica contra “injecting”, para PHP. Continuar leyendo «Manual de seguridad, optimización de Apache, PHP y MySQL»

Hacer backup en plesk de todo el servidor con pleskbackup

Aqui os dejo el como hacer backup a todo un servidor web corriendo con el famoso panel de control Plesk:

Ejecutando la siguiente linea de comandos se hace un backup de todos los dominios, clientes, emails, en un servidor Plesk,  pero se omiten los archivos logs de los diferentes servicios:

pleskbackup –server -c –skip-logs

Podeis mirar las distintas opciones que nos da el comando pleskbackup en la guia oficial de la linea de comandos de Plesk.