Archivo de la etiqueta: apache

Denegar el acceso en Apache

Por norma general, al realizar una instalación de Apache, no aplica las pertinentes medidas de seguridad para controlar el acceso a los ficheros que se encuentran en la carpeta especificada para albergar el contenido web. Esta carpeta viene definida por la directiva DocumentRoot. Sigue leyendo

Facebooktwittergoogle_plus

Solucionar “an AJAX HTTP error” en Drupal

Al realizar la instalación de Drupal en español, es posible que nos aparezca un mensaje como el siguiente:

Solucionar "an AJAX HTTP error" en Drupal

An AJAX HTTP error occurred. HTTP Result Code: 200 Debugging information follows. Path: […..] StatusText: OK ResponseText: Fatal error: Maximum execution time of 60 seconds exceeded in [….]

Lo que viene a indicar este mensaje es que la importación de todas las cadenas de texto del nuevo idioma, necesita mas tiempo del que por defecto viene asignado, que en nuestro ejemplo es de 60 segundos.

Como solución y si tenemos permisos de administrador, deberemos acceder al fichero php.ini y buscar la línea “max_execution_time” ampliando el valor de 60 a 240 por ejemplo. Guardaremos los cambios y reiniciaremos el servidor para que los cambios tengan efecto. Finalmente, comprobaremos que se pueda efectuar la instalación.

En el caso de no poder acceder a nuestro php.ini, deberemos contactar con nuestra empresa de Hosting para que sean ellos quienes modifiquen este valor.

Facebooktwittergoogle_plus

Un servidor web con VirtualBox – Instalando Apache

Después de haber instalado VirtualBox y de haber configurado la red para poder acceder al servidor sin necesidad de escribir su IP, ahora le toca el turno a las aplicaciones “de servidor” propiamente dichas.

Vamos a instalar Apache, PHP y MySql desde tasksel y realizar las pruebas para ver que todo funciona correctamente. En posteriores entregas veremos como instalar algunos módulos directamente desde la consola.

Instalando el servidor desde tasksel

Deberemos arrancar nuestra máquina virtual Linux, y teclear en la línea de comandos

sudo tasksel

accederemos a la pantalla de instalación de paquetes, marcaremos la opción Lamp Server y aceptaremos.

servidor-local-ubuntu-paquete-lamp

Marcando esta casilla instalaremos de una sola vez Apache, PHP y MySQL ya que el sistema se encargará de descargar los paquetes necesarios y de instalar el software.

En un punto de la instalación, el sistema nos solicitará que indiquemos una contraseña para el acceso a la base de datos MySQL. La indicaremos y proseguiremos con la instalación.

servidor-local-ubuntu-password-mysql

Una vez finalizada la instalación, es aconsejable que reiniciemos el equipo para que los servicios se activen correctamente.

Probando el servidor

Antes de continuar instalando mas aplicaciones, vamos a verificar que el servidor esta funcionando correctamente, y de paso, comprobaremos la configuración de la red que hicimos en la entrega anterior.

Desde nuestro equipo anfitrión, abriremos el navegador y teclearemos el nombre del servidor que indicamos en el fichero hosts, que en nuestro caso miservidor y comprobaremos como Apache está funcionando correctamente.

servidor-local-ubuntu-probando-apache

Para comprobar el funcionamiento de php, vamos a crear el típico phpinfo. Lo primero será situarnos en la carpeta donde se almacena el contenido web. Para ello teclearemos:

cd / var/www

Una vez allí, crearemos el fichero con el editor “nano” que viene instalado por defecto:

sudo nano info.php

Se nos abrirá el editor y teclearemos lo siguiente:

<?php
phpinfo();
?>

Despues pulsaremos F2 para guardar, s para sobreescribir y Intro para aceptar el nombre que le hemos asignado. A continuación accederemos al navegador en nuestro equipo anfitrión e indicaremos la url:

http://miservidor/info.php

Si obtenemos esta ventana de información del servidor es que nuestro PHP está funcionando correctamente.

servidor-local-ubuntu-probando-php

Finalmente vamos a acceder por la línea de comandos para ver si MySQL esta bien instalado. Teclearemos:

mysql -u root -p

e indicaremos la contraseña que indicamos en la instalación. Si se nos conecta al servidor MySQL es porque funciona correctamente. Una última prueba será ver las bases de datos actuales. Podemos visualizarlas si tecleamos:

show databases;servidor-local-ubuntu-probando-mysql
Facebooktwittergoogle_plus

Denegar acceso a directorios en Apache

En el caso de realizar una instalación manual del servidor Apache, deberemos tener en cuenta una serie de parámetros para securizar al máximo nuestro servidor. Una de estas opciones será el denegar el acceso a todos los directorios exceptuando el “DocumentRoot”, que será donde alojemos nuestro sitio web.

Utilizando las directivas Allow y Deny, podremos permitir o denegar el acceso a un directorio en concreto o a todos en general.

Deberemos indicar en nuestro fichero httpd.conf lo siguiente:

<Directory />
   Order Deny,Allow
   Deny from all
   Options None
   AllowOverride None
</Directory>
<Directory /var/www/htdocs>
   Order Allow,Deny
   Allow from all
</Directory>

Con esto lo que indicamos al servidor es que no permita el acceso a ninguna carpeta, y posteriormente habilitamos el acceso var/www/htdocs (o la ruta donde se encuentre nuestra web).

Aunque estas dos órdenes son contradictorias, predomina la segunda sobre la primera al ser una ruta más especifica.

Facebooktwittergoogle_plus

Limitar el tamaño de subida desde Apache

Si queremos limitar el tamaño de subida de un fichero en Apache, deberemos utilizar la directiva LimitRequestBody. Para ello deberás acceder al archivo de configuración httpd.conf e indicar lo siguiente:

<Directory "/usr/local/apache2/uploads">
  LimitRequestBody 20000
</Directory>

Donde en Directory indicaremos la ruta del directorio que queremos limitar y en LimitRequestBody indicaremos el tamaño máximo en bytes. En el caso de querer un valor ilimitado deberemos escribir 0.

Facebooktwittergoogle_plus

Error 501 Not Implemented en WordPress

Trabajando con WordPress, el otro día nos sorprendió el error que nos mostraba en pantalla cuando pulsábamos el botón Publicar, Vista previa o Guardar Borrador. Se trataba del error 501 y nos mostraba en pantalla:

Not Implemented

The page you are looking for cannot be displayed because a header value in the request does not match certain configuration settings on the Web server.

Investigando, descubrimos que éste error se produce porque el servidor Apache bloquea ciertos caracteres mediante el módulo mod_security para impedir ataques por inyección de código.

Para solucionar ésto y poder publicar el artículo, podemos:

  • Desabilitar la seguridad del servidor, si tenemos acceso, o bien pedir a soporte de nuestro Hosting que se encargue de ello, aunque no recomendamos ésta opción.
  • Escribir el texto problemático en un editor de texto y realizar una captura de pantalla, para poder insertarlo posteriormente como imagen.
  • Comprobar que caracter es el que está causando el fallo y tratar de eliminarlo (prestar atención especial a las barras invertidas “/”)

Nosotros, por temas de seguridad, recomendamos las dos últimas opciones.

Facebooktwittergoogle_plus

Error 500 en el proceso de actualización de WordPress

En muchos Hostings, existe un número limitado de recursos que le son asignados a los usuasios. El proceso de actualización de WordPress o cualquier otro sistema, requiere de numerosas operaciones, accesos a la base de datos, etc. Todo ésto conlleva un consumo elevado de memoria tanto la asignada a PHP como de la RAM.

Es posible que durante el proceso de actualización, la aplicación nos genera un Error 500, Internal Server Error. Ésto es producido porque el consumo de recursos de la aplicación supera a los disponibles. Por tanto no es posible realizar la actualización.

Para proceder a actualizar WordPress, deberemos utilizar un cliente de FTP y subir la nueva versión, procediendo tal como se indique en los ficheros de ayuda del paquete a instalar.

Facebooktwittergoogle_plus

Bloquear la ejecución de código php con Apache

Suele ocurrir que después de instalar un CMS o tienda online, alguna de sus carpetas necesiten acceso total, como generalmente ocurre en las carpetas de las imágenes.

Ésta situación puede ser aprovechada por los atacantes para subir scripts o malware. Nosotros, como administradores del sitio, debemos tener la precaución de bloquear todos estos accesos no autorizados.

Podemos hacerlo por medio de un fichero .htaccess o vhosts.conf, pero una manera muy sencilla añadiendo un fichero .conf al directorio de conf.d de Apache.

Lo primero será acceder al directorio conf.d. Sus ubicaciones pueden ser:

/etc/apache2/conf.d
 /etc/httpd/conf.d

Escribiremos lo siguiente y lo guardaremos con el nombre que queramos, pero con extensión .conf dentro de la carpeta conf.d de Apache

< LocationMatch “/imagenes/.*.(php3?|phtml)$”>
 Order Deny,Allow
 Deny from All
 < /LocationMatch>

Sustituiremos imagenes por la ruta a la carpeta que queramos securizar.

Facebooktwittergoogle_plus

Evitar el acceso a imagenes desde fuera de nuestro sitio

En éste post os mostrábamos la opción de bloquear el acceso a imágenes, desde otras webs que no fueran la nuestra.

Hoy vamos a ir mas allá y os vamos a mostrar la la manera para cargar una imagen distinta a la solicitada. El código es el siguiente:

SetEnvIfNoCase Referer "^http://[^/]*.)?nombre-del-dominio.com/" 
  local_referer=1
RewriteCond "%{ENV:local_referer}" "!=1"
RewriteRule ".*" "/Nombre-imagen.jpg" [L]

Con la solución propuesta en el anterior post el usuario recibía un error 403 Forbiden en lugar de la imagen esperada.

En cambio, en la solución propuesta hoy, lo que hacemos es cambiar la imagen solicitada por una que queramos nosotros. Podemos, por ejemplo, incluir algún mensaje disuasorio o informativo, indicando la propiedad de dicha imagen. Esta forma es mucho mas efectiva que un simple error 403.

 

Facebooktwittergoogle_plus

Restringir el uso de imagenes de nuestro sitio

Nuestro sitio web contiene ciertas imágenes y sabemos que sitios de otros usuarios contienen vínculos hacia nuestras imágenes, con lo que, aparte de estar utilizando nuestro material, están consumiendo nuestro ancho de banda.

Para evitar esta situación y restringir el uso de las imágenes solamente a los documentos de nuestro servidor deberemos añadir las siguientes líneas a nuestro archivo .htaccess

<FilesMatch ".(jpg|jepg|gif|png)$">
  SetEnvIfNoCase Referer "^http://([^/]*.)?nombre-del-dominio.com/" 
    local_referrer=1
  Order Allow,Deny
  Allow from env=local_referrer
</FilesMatch>

Deberemos sustituir nombre-del-dominio.com por nuestro dominio, y colocar el fichero .htaccess en el directorio donde se encuentren las imágenes.

Facebooktwittergoogle_plus