Blog en espanol destinado a diferentes temas tecnicos principalmente en IT y Networking. Se desea cubrir Linux, DNS, DNSSEC, RPKI, BGP, Cisco, Programacion (Bash, Python, etc), Protocolos de Enrutamiento, Seguridad en Redes, VoIP.
Mostrando entradas con la etiqueta apache. Mostrar todas las entradas
Mostrando entradas con la etiqueta apache. Mostrar todas las entradas
jueves, 28 de julio de 2016
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
Apache solo funciona sobre IPv6
Troubleshoooting:
a) Para que escuche en IPv4:
- Editar el archivo /etc/apache2/ports.conf
- En la directiva Listen colocar
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!!.
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!.
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
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
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,
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,
Suscribirse a:
Entradas (Atom)
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...
-
Debido al crecimiento moderado que ha tenido el presente blog se me ocurrió añadir/integrar las estadisticas de google analytics a mi blog. ...
-
Introduccion: En algunas ocasiones es necesario "bajar" o deshabilitar iptables en nuestro Linux, el procedimiento depende de...
-
Saludos, Lo primero que debemos de hacer para quitar el stacking entre los switches es desconectar los cables Stack que los unen.... Es buen...