Mostrando entradas con la etiqueta apache. Mostrar todas las entradas
Mostrando entradas con la etiqueta apache. Mostrar todas las entradas

viernes, 7 de diciembre de 2012

Solucion: Apache solo escucha sobre IPv6

Situación:
  Apache solo funciona sobre IPv6

Troubleshoooting:
a)  Para que escuche en IPv4:
  - Editar el archivo  /etc/apache2/ports.conf
  - En la directiva Listen colocar por ejemplo:
     Listen 192.168.1.10:80  

  Se pueden colocar varias directivas Listen. Tales como:
     Listen 192.168.1.10:80  
     Listen 127.0.0.1:80 

  Para escuchar en todo IPv4 (cualquier IPv4 configurado en el server):
     Listen 0.0.0.0:80 
 
b) Para escuchar en IPv6:
  - Editar el archivo  /etc/apache2/ports.conf
  - En la directiva Listen colocar <[direccionIPv6]:puerto>. Por ejemplo:

Listen [2001:db8::4]:80

  Reiniciar apache..., por ejemplo: /etc/init.d/apache2 restart

Diagnóstico:
  Para saber que servicios, a que direcciones IP escucha y que proceso esta asociado recomiendo utilizar el comando: netstat -pan

#netstat -pan | more
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      965/mysqld     
tcp        0      0 127.0.0.1:587           0.0.0.0:*               LISTEN      1020/sendmail: MTA:
tcp        0      0 0.0.0.0:10000           0.0.0.0:*               LISTEN      1162/perl      
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      8478/vsftpd    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      816/sshd       
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1020/sendmail: MTA:
tcp        0      0 192.168.1.10:22          192.168.1.2:57997       ESTABLISHED 19601/sshd: aacosta
tcp6       0      0 ::1:587                 :::*                    LISTEN      1020/sendmail: MTA:
tcp6       0      0 :::80                   :::*                    LISTEN      1134/apache2   
tcp6       0      0 :::22                   :::*                    LISTEN      816/sshd      
 

  En el extracto anterior la ultima linea indica que se está escuchando en todas las direcciones IPv6 (se puede comprender gracias a la culumna de la izquiera que indica tcp6 y luego en la cuarta columa indica ::22). El puerto está en estado listen por el proceso sshd y el pid 816
  Para el primera linea se entiende que mysqld está escuchando en la dirección IPv4 127.0.0.1 en el puerto 3306 bajo el pid (process id) 965. Es decir, mysql no esta habilitado para escuchar conexiones de red (solo escucha localhost)


Mas información:
- http://serverfault.com/questions/332409/how-to-set-apache-virtualhost-to-work-with-ipv6- http://www.linuxweblog.com/blogs/sandip/20081027/forcing-apache-listen-ipv4
- http://www.linuxask.com/questions/limit-apache-only-listen-to-ipv4-address

martes, 22 de noviembre de 2011

Certificacion IPv6 de Hurricane Electric

  En esta oportunidad voy a dejarles mis impresiones sobre la certificacion IPv6 que tiene Hurricane Electric en http://ipv6.he.net/certification
na primera oportunidad la habia ignorado pero en esta oportunidad la curiosidad me llamo.
  Les comento que me parece muy interesante la misma; me gusta la manera como esta organizada. Les cuento un poco:

- La certificacion se puede hacer por pasos y en varios dias. Esto da bastante comodidad.
- Para cada nivel te mandan a hacer varias "tareas" tales como: Configurar un servidor Web, de Correo, DNS, prueban conectividad a equipos tuyos etc.
- Es didactica y divertida
- Logicamente para comenzar la certificacion debes estar desde una maquina IPv6
- Existen varios niveles de certificacion: Newbie, Entusiasta, Administrator, Professional, Guru, Sage. A pesar de que me agrada la idea de varios niveles, creo que los nombres le quedan grande al nivel, por ejemplo, obtener el grado de Administrator me parece sencillo y su nombre suena casi a experto.
- Te mandan una franela/remera gratis de IPv6!!!!

  Desde mi punto de vista las personas que manejen servidores y conectividad directamente tienen una enorme ventaja sobre los que no.

Consejos previos para prepararse para la certificacion:

  - Como recomendacion, antes de comentar el examen, tengan un dominio con el cual puedan trabajar, quiero decir, que puedas crear zonas, modificar registros, etc.
  - Maquina servidor (preferiblemente Linux) con conectividad a IPv6
  - Acceso y configuracion a servicios tales como Web Server y Mail Server

Mas informacion

  - La pagina para los que esten interesados es: http://ipv6.he.net/certification/
  - En este blog hay mucha informacion sobre IPv6 sobre Linux y algunos servicios como Apache y Sendmail http://acostanetwork.blogspot.com

  Saludos y suerte a los que deseen tomar la certificacion!!.    

miércoles, 19 de mayo de 2010

Almacenar el referer en los logs de Apache

Problema:
Tengo un servidor Apache y deseo almacenar el HTTP Referer

Solución:
Apache por defecto guarda lo que se conoce como "common logs". Estos logs no almacenan la variable Referer que viene en el paquete http al momento de conectarse a tu servidor. La solución es tan sencilla como cambiar la palabra common por combined en la configuración del servidor Web.

Procedimiento:
Dentro del httpd.conf (o donde se guarda la configuración de tu dominio) cambiar:
CustomLog logs/mysite.log common
por
CustomLog logs/mysite.log combined

Lo anterior puede ser hecho por VirtualHost o dentro de todo el servidor Web.

Reiniciar el servicio de Apache y listo!

Suerte!.

lunes, 10 de mayo de 2010

Script en Bash para conseguir errores 404 dentro de un servidor Web

Escenario:
Tengo mi servidor Web Apache sobre Linux y quiero revisar los errores 404 (página no encontrada) o broken link de los usuarios que acceden a mi servidor.

Solución:
Ejecutar un script mediante el crontab cerca de la media noche que revise el archivo access_log del Apache con el contenido 404 y envie un correo a un destinatario.

Script:
#El objectivo de este script es revisar errores 404 dentro de los logs del WebServer
#para de esta manera evitar "broken links". Alejandro Acosta
#Notese que se ejecuta casi a la media noche para conseguir TODOS los errores 404 del dia
FECHA=`date +"%d/%b/%Y"`
cat /usr/local/apache/logs/access_log | grep $FECHA | grep " 404 " > /tmp/404.txt
#Entra en el if unicamente en caso de conseguir errores 404
if [ $? = "0" ]; then
echo $?
mail -s "Errores 404 encontrados" micorreo@miproveedor.com < /tmp/404.txt
fi
\rm /tmp/404.txt

Crontab:
57 23 * * * /root/scripts/check_logs.sh

domingo, 19 de julio de 2009

Proteccion de hotlink con Apache

Problema: 
   Poseer un website con contenido de imágenes u otro tipo de media y que existan otros website que hagan referencia a tu contenido. El punto mas negativo de esta situación es que estas gastando TU ANCHO de banda, memoria y recursos de tu servidor. Al problema anterior se le conoce como Hotlinking. 

Solución: 
   En el caso de Apache (existen soluciones similares en IIS) la solución es utilizar el archivo .htaccess con un código que veremos más abajo. Existen dos soluciones: a) bloquear la solicitud HTTP si el HTTP_REFERER no contiene el contenido que deseamos b) Devolver una imagen pre-configurada. En el siguiente artículo nos enfocaremos en devolver un código de error que es mi opción preferida debido a que de esta manera gastamos menos CPU y ahorramos de verdad ancho de banda 

Requerimientos: 
 Servidor Apache con el modulo Rewrite (mod_rewrite). 

Procedimiento: 
  Colocar el siguiente código en el archivo .htaccess 

 RewriteEngine on 
 RewriteCond %{HTTP_REFERER} . RewriteCond %{HTTP_REFERER} !^http://(www\\.)?chistesdevenezuela\\.com [NC] RewriteRule \\.(gif|jpe?g)$ - [NC,F] 

Explicación código anterior: 
  RewriteEngine on Este comando comienza el modulo rewrite, necesario para poder trabajar con los comandos rewrite 
  RewriteCond %{HTTP_REFERER} . Con este comando permitimos HTTP_REFERERs en blanco. Esto es muy util porque alguien puede escribir directamente el URL en el navegador, su navegador puede estar configurado para no enviar el referrer y/o incluso existen Firewalls capa 7 que eliminan el HTTP_REFERER de la solicitud HTTP RewriteCond %{HTTP_REFERER} !^http://(www\\.)?chistesdevenezuela\\.com [NC] Esta línea hace match con aquellas solicitudes que vengan del dominio chistesdevenezuela.com, incluso, no es necesario que lleve el www en el referer. El doble back-slash luego del dominio es para crear un carácter de escape y que el punto en .com se comporte realmente como un punto. Importante: 
Para permitir dominios adicionales solo duplica esta línea cambiando el dominio. RewriteRule \\.(gif|jpe?g)$ - [NC,F] Esta linea indica que tipo de archivos serán permitidos desde el dominio especificado en la linea anterior. Para permitir nuevos tipos de archivos solo agrega nuevos pipes seguidos por el tipo de archivo (por ejemplo png, bmps, etc). 


Eso es todo, 

Suerte.

lunes, 4 de mayo de 2009

Listado de directorio en Apache

El día de hoy tuve la necesidad de que mi servidor Apache listara el contenido de los archivos y carpetas de un directorio. Es decir, por ejemplo, que al entrar a:
http://miservidor.com/mi/directorio/quedeseo/listar/ apareciera el listado del contenido.

Hay muchas maneras de lograr lo anterior. Te voy a dar el siguiente ejemplo y luego tu puedes colocarlo como quieras (en un .htaccess, virtualhost, global, etc).


Options indexes


Luego reinicias el apache como service httpd restart o /etc/init.d

En el ejemplo anterior, cuando entren a http://miservidor.com/mi/directorio/quedeseo/listar/ veran el contenido de la carpeta. OJO, en dicho directorio no puede haber ningún archivo index.html o index.php.

Suponiendo que en algún momento deseas revertir el comportamiento, puedes hacerlo de la siguiente manera:



Options -Indexes


Con el ejemplo anterior NO será listo el contenido de la carpeta.

Por último, recomiendo que tengas en httpd.conf el ServerSignature Off como pequeña medida de seguridad. El ServerSignature es información del Apache que será incluida en páginas auto-generadas por el Apache (como el listado, errores, etc), esta información puede ser de utilidad para un hacker.

Att.

Alejandro

jueves, 23 de abril de 2009

IPv6 y Apache

En esta oportunidad indicaré como se configura Apache con soporte para IPv6.
La buena noticia es que a partir de Apache 2.0 el soporte IPv6 viene intrinsico dentro de Apache y en realidad no hay que hacer nada.
Debajo de estas lineas encontraras una configuración que funciona perfectamente en un servidor dualstack ipv4/ipv6 y que adicionalmente posee los comandos ErrorLog y CustomLog para un virtualhosting en IPv6. La ventaja de esta configuración es que permite dentro del mismo servidor separar los logs ipv6 de los ipv6.

La configuración es la siguiente:





Posteriormente reinicias Apache (service httpd restart o /etc/init.d/apache restart) y listo!.

Ahora bien, para revisar que efectivamente tu servidor se encuentre escuchando en el puerto 80 tcp ejecuta los siguientes comandos:

#netstat -pan | grep 80
y
#telnet ::1 80

Con el primer comando puedes ver si tu servidor se encuentra escuchando en IPv6 en el puerto 80. Busca un string similar a:
tcp 0 0 :::80 :::* LISTEN 24972/httpd

y con el segundo comando puedes revisar que efectivamente el puerto 80 responda. El output sería similar al siguiente:

[root@www ~]# telnet ::1 80
Trying ::1...
Connected to ::1 (::1).
Escape character is '^]'.


Saludos,

Una mejora práctica en el Transporte DNS sobre UDP en IPv6

Por Hugo Salgado y Alejandro Acosta Introducción y planteamiento del problema En el presente documento queremos discutir sobre un draft (bor...