ago 08 2011

Como regenerar el fichero httpd.conf

Category: Cpanel,apacheDavid González @ 19:23

Por un problema de espacio en disco, al realizar una tarea en el apache, el servidor se ha quedado sin espacio y no ha debido guardar correctamente el fichero de configuración (claro, todo esto lo sé a toro pasado).

El error que mostraba por pantalla al reiniciar apache era este:

no listening sockets available
shutting downUnable to open logs

Tras dar muchas vueltas, me he dado cuenta que el fichero de configuración de apache (httpd.conf) estaba vacío.

Por suerte, cpanel trae un script para regenerar este fichero. Guarda un fichero que es httpd.conf,v en el que guarda en texto plano, partes del fichero, fechas de modificaciones, el usuario que hizo los cambios, etc…

Para restaurar el fichero simplemente hay que ejecutar este script.

/scripts/rebuildhttpdconf

Entradas relacionadas

Etiquetas: , , ,


feb 05 2011

Evitar Hot-linking con .htaccess

Category: apacheDavid González @ 10:30

Ya vimos el otro día algunas de las directivas que podemos usar en el fichero .htaccess. Hoy vamos a ver como como podemos “jugar” con las reglas del mod_rewrite para evitar el hotlinking

¿Que es el Hot-linking?

Hot-linking es un término que se usa en Internet. Indica que alguien está usando un enlace a una imagen que está archivada en otro sitio web, en lugar de guardar una copia de la imagen en el sitio web en el que se mostrará la imagen. Por ejemplo, en lugar de guardar una imagen .gif y cargarla en su propio sitio web, la persona usa un enlace de tipo absoluto hacia la imagen, semejante a http://sitioweb.com/imgen.gif, en lugar de un enlace de tipo relativo.

El principal problema del hot-link es que al usar las imágenes externas (las nuestras) consumen nuestsro ancho de banda. Vamos a ver un ejemplo de como evitarlo.

# BEGIN Anti HotLink
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://subdominio.tureceta.es/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://subdominio.tureceta.es$      [NC]
RewriteCond %{HTTP_REFERER} !^http://tureceta.es/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://tureceta.es$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tureceta.es/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tureceta.es$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.es/reader/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/tureceta.es/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://maps.google.es.*$      [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.tureceta.es/nohotlink.gif [R,NC,L]
</IfModule>
# END Anti HotLink

Con este ejemplo, todos los referers diferentes a los indicados, cuando vayan a acceder a alguna imágen tipo “jpg|jpeg|gif|png|bmp” serán redirigidos a http://www.tureceta.es/nohotlink.gif  y por tanto no verán nuestras imágenes.

Ahora vamos a explicar brevemente las lineas que estamos usando:

En cada línea “RewriteCond %{HTTP_REFERER}”  ponemos el host desde el cual permitimos el acceso. Por eso usamos el signo de exclamación “!” porque es el signo de negación. Básicamente la linea dice “si vienes de un sitio diferente a ….”

Si os fijais a parte de poner nuestro dominio, también he puesto el google-reader y alguno más porque sino, desde allí, no cargarían las imágenes.

RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ Con esta línea indicamos para que extensiones será efectiva la regla y la dirección a la que vamos a redirigir.

RewriteCond %{HTTP_REFERER}

Entradas relacionadas

  • No hay temas relacionados


ene 31 2011

Directivas de .htaccess

Category: apacheDavid González @ 20:30

¿Que es eso del .htaccess?

Un fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor Web Apache que nos permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache.

Si disponemos de un servidor con apache, tenemos en nuestro poder una gran herramienta que es el fichero .htaccess. Si no lo vemos en nuestro alojamiento, puede ser que sea porque el fichero empieza por un “.” porque es oculto o también puede ser, que no este creado y lo tengamos que crear nosotros mismos. Hoy vamos a ver algunas de las directivas que podemos usar en este fichero:

  • Denegar accesos a nuestro sitio
order allow,deny
deny from 128.23.45.XX
allow from all

Es muy importante, el orden de allow y deny. Tiene que estar primero la opción más restrictiva. En el ejemplo, allow es para todos y deny es sólo para una IP y un dominio, así que el “order” será allow y deny
También hay que tener en cuenta que un simple espacio entre allow,deny nos dará un error 500.

Como os podéis imaginar se puede usar el ejemplo al revés y denegar el acceso a todos menos a nosotros (nuestra IP). Recordad el “order”, primero el más restrictivo.

order deny,allow
deny from all
allow from 80.58.XX.XX
  • Modificar nuestra página por defecto (Directory Index ).
 DirectoryIndex inicio.php
  • Redireccionar nuestro sitio web.
Redirect /1.html /2.html
  • Añadir MIME types.
 AddType video/x-flv .flv

A veces que en lugar de añadir un tipo mime lo que queremos es modificarlo para que en lugar de “verse” en el navegador, se lo descargue el usuario. Podemos forzarlo de esta forma.

AddType application/octet-stream .avi
AddType application/octet-stream .flv
AddType application/octet-stream .mp3
  • Prevenir acceso a uno o varios archivos.
Order Allow,Deny
Deny from all
  • Evitar listar el contenido de un directorio sin Index.
Options All -Indexes

Nos devolverá un error “Forbidden” con un 404 adicional

  • Permitir listar el contenido de un directorio sin Index.
Options All +Indexes
  • Evitar el listado de archivos.
IndexIgnore *

De esta forma no listará ningún fichero. Nos mostrará el típico mensaje “Index of” pero no llega a mostrar ningún fichero y carpeta.

Si no queremos ser tan restrictivos, podemos utilizarlo sólo para algunos ficheros.

IndexIgnore *.sh

De esta forma mostrará todos los ficheros menos los sh

  • Cambiar el modo de ejecución de los ficheros.

A veces nos interesa que una determinada extensión actué como otra, por ejemplo, que la extensión php6 se ejecute como un php. Para ello debemos añadir el tipo.

AddType application/x-httpd-php .php6

para usar bien este comando, hay que saber el “Type” correcto.

  • Personalizar nuestras páginas de error.
ErrorDocument 400 400.html
ErrorDocument 401 401.html
ErrorDocument 403 403.html
ErrorDocument 404 404.html
ErrorDocument 500 500.html
  • Hacer una redirección 301.
redirect 301 / http://www.dominio.com/
  • Hacer una redirección “permanent”.
Redirect permanent / http://www.dominio.es/
  • Crear reglas del mod_rewrite.

Vamos a ver un ejemplo de como eliminar las ‘www’

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.tureceta\.es$ [NC]
RewriteRule ^(.*)$ http://tureceta.es/$1 [R=301,L]

También podemos redirigir a nuestros visitantes a una página en construcción mientras hacemos un cambio y nosotros seguir accediendo con normalidad.

Redireccionar visitantes a una dirección alternativa, menos a ti (modifica el IP):

ErrorDocument 403 /2.html
Order deny,allow
Deny from all
Allow from 80.58.XXX.XXX

Estos son algunos de los ejemplos de las múltiples posibilidades que nos da este fichero. Hay que señalar que cualquier errata a la hora de usar un comando dará un error. Es decir cualquier palabra que no interprete como un comando, nos devolverá un error 500.

Por último tened en cuenta, que el .htacces afecta al directorio donde se encuentre y por debajo, nunca por encima. Si tenemos este árbel de directorios 1/2/3/4, un .htaccess en la carpeta 2 afectaría a la propia carpeta 2 y por debajo la 3 y 4.

Entradas relacionadas

  • No hay temas relacionados


ago 05 2010

Compilar con módulo memcache de apache y php

Category: apacheDavid González @ 12:02

En un servidor con apache 2.0 y cpanel, tenía que meter el módulo memcache tanto de php como de apache.

Para compilar apache con este módulo, utilice el propio script de cpanel para recompilar /scripts/easyapache. Es muy sencillo de usar y en la lista de posibles módulos de apache apacere memcache. En cambio no aparece como módulo de php

Lo primero que intente es utilizar una solución que dio hace poco mi compañero sysadmin, en uno de sus post, con estas líneas:

root@tureceta [~]# cat /var/cpanel/easy/apache/rawopts/PHP.5.2.13
--enable-memcache
--enable-pcntl
--enable-sysvsem
--enable-sysvshm
--enable-sysvmsg

Lamentablemente no me funcionó (he de decir que sí me funcionó con otros módulos) y tuve que meter el módulo a mano, con estos sencillos pasos:

cd /usr/src/
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure
make
make install

Una vez que ha acabado, tenemos que modificar nuestro php.ini para indicar a php donde esta el módulo y así pueda cargarlo correctamente. En mi caso:

vim /usr/local/lib/php.ini
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"
extension=memcache.so

Entradas relacionadas

Etiquetas: , ,


jul 12 2010

Deshabilitar regla del modsecurity para un sitio o dominio

Category: apacheDavid González @ 8:24

Ya vimos el otro día la receta para deshabilitar el modsecurity para un sólo dominio o sitio.

Si no queremos ser tan rudos y no es necesario, tenemos la posibilidad de deshabilitar una regla específica para un usuario o sitio.

Esto nos podría ser muy útil para alojamientos compartidos, en los que una regla “peligrosa” afecta a un usuario y este desea quitarla. Así el resto de cliente siguen protegidos.

Del mismo modo que vimos la otra vez, tendremos que modificar el virtual host con las siguientes líneas:

<ifmodule mod_security2.c>
  SecRuleRemoveById 1975856
</ifmodule>

Simplemente estamos indicando que si esta cargado el módulo del modsecurity, elimine la regla con Id 1975856.

Si nuestra regla no tuviera Identificador, podemos añadírselo sin ningún problema de esta forma

Antes:

#PHP Doc System Local File Inclusion Vulnerability
SecRule REQUEST_URI  "/index\.php" "chain"
SecRule ARGS:show "(\.\./\.\.|/)"

Después:

#PHP Doc System Local File Inclusion Vulnerability
SecRule REQUEST_URI  "/index\.php" "chain, id:1975856"
SecRule ARGS:show "(\.\./\.\.|/)"

Entradas relacionadas

Etiquetas: , ,


jul 06 2010

Deshabilitar módulo mod_security a un sólo usuario o por sitio

Category: apacheDavid González @ 8:30

A día de hoy, todas la medidas que se pueden adoptar para proteger un servidor son pocas. Una de las más conocidas y usadas bajo apache es modSecurity.

Mod_security es un firewall de aplicaciones Web que se ejecuta como un módulo del servidor web Apache, provee protección contra diversos ataques hacia aplicaciones Web y permite monitorizar el tráfico HTTP.

Existe la posibilidad de deshabilitar este módulo sólo a un usuario o a un sitio web modificando su virtualhost. No obstante quiero decir, que no aconsejo hacerlo, ya que dicho usuario será completamente vulnerable a ataques vía web.

Dependiendo de la configuración de apache, es posible realizar este modificación en el .htaccess de la propia home, pero por norma general las configuraciones “estandard” no lo permiten, así que sólo voy a explicar la opción de modificar el virtual host.

La solución pasa por añadir estas lineas en el virtual host del usuario o del sitio que queremos deshabilitar

<ifmodule mod_security2.c>
SecRuleEngine Off
</ifmodule>

Una vez hecho esto, habrá que reiniciar apache

/etc/init.d/httpd  restart

De esta forma, el dominio o dominios que accedan a este virtual host, no se verán afectados por las reglas configuradas en el modSecurity

Entradas relacionadas

Etiquetas: ,