mod_autoindex de apache

mod_autoindex es un módulo de apache que nos permite mostrar un listado de archivos y directorios de un directorio cuando no hay un fichero index predeterminado (o si bien queremos mostrar este listado y obviamos este index).

La documentación de este módulo, puede encontrarse en: http://httpd.apache.org/docs/1.3/mod/mod_autoindex.html

A continuación pongo un ejemplo de un archivo .htaccess que añade una cabecera y un pie al listado, además, añade descripción a los distintos archivos:

Opciones (convertir iconos en parte del link, que coja anchos de las descripciones de forma automática y muestre primero las carpetas y luego ordene por fecha de modo que los archivos más recientes se encuentren al final):

IndexOptions +IconsAreLinks
IndexOptions NameWidth=* DescriptionWidth=*
IndexOptions +FoldersFirst
IndexOrderDefault Ascending Date

Añadir descripciones a los ficheros:

AddDescription "Instrucciones de instalación del programa" LEEME.txt
AddDescription "Aplicación" aplicacion.tar.gz

Añade una cabecera (en lugar de: Index of diretory/)

HeaderName cabecera.html

Añade el pie de página

ReadmeName LEEME.txt

Lo bueno de este sistema es que podemos integrar el diseño de nuestro sitio (y más si usamos CSS) con el listado de archivos predeterminado de apache.

Manejando OpenSSL

Cosillas útiles que dejo aquí para referencias posteriores:

Crear una llave privada RSA de 1024 bits sin cifrar por contraseña (para que sea más fácil trabajar con ella, si se quiere cifrar añadir -des3 y -out llaveprivada.key sin el > llaveprivada.key)

openssl genrsa 1024 > llaveprivada.key

Generar un certificado X509 de 999 días de validez usando la llave privada generada anteriormente

openssl req -new -x509 -days 999 -key llaveprivada.key -out certificado.crt

ó

openssl x509 -req -days 999 -in server.csr -signkey server.key -out server.crt

Crear un .pem a partir de llave y certificado (yo los concateno a mano estos ficheros, aunque se puede hacer con openssl pasando varios parámetros).

cat llaveprivada.key > certificado.pem
cat certificado.crt >> certificado.pem

Pasar de PEM (.PEM) a PKCS12 (.P12)

openssl pkcs12 -export -in certificado.pem -out certificado.p12

Al revés (por si hace falta convertir un p12 a .pem)

openssl pkcs12 -in certificado.p12 -out certificado.pem

Links externos:

Conflicto: No usar svn + mod_evasive

Cuidado, me he dado cuenta mirando el log de errores de mi apache2, tan contento como estaba con mod_evasive (lo había configurado con muy pocas páginas para que si una araña de spam accedía muy rápido a esta web o bien una araña de M$ que también gasta mucho ancho de banda se les prohibiese el acceso).

Problema: Si usas SVN (mod_dav, mod_svn…) te prohíbe el acceso, el motivo es evidente: Demasiadas peticiones cuando el repositorio es minimamente grande.

Podía leer una línea en el log que decía:

[Tue Oct AA XX:YY:ZZ BBCC] [error] [client X.Y.Z.T] client denied by server configuration: /AAA/BBB/CCC

He probado a quitar el mod_evasive y bingo! ya no hay un 403 PROPFIND (porque no estoy detrás de ningún proxy ni nada).

Si tengo que prescindir de algo, creo que de mod_evasive y ya intentaré configurar en QoS o con iptables lo que necesite o incluso mirando que más opciones tiene el propio mod_evasive.

Es debido a que mod_svn recibe muchas peticiones de un cliente (para sincronizar el repositorio), con lo que si está configurado para permitir pocas paginas por minuto, te bloqueará el acceso.

Desconozco si se puede filtrar por directorio o hacer alguna configuración distinta para donde tengas montado el svn.

Como parar ataques DOS al servidor web

El título más bien debería decir: Como pararlos parcialmente, ya que como sea un dDOS en condiciones desde varias IPs, es complicado de parar sin muchos recursos.

Este caso me ha pasado recientemente, una persona se puso en contacto conmigo porque estaba recibiendo ataques de una sóla IP que conectaba demasiadas veces contra su servidor apache (en el puerto 80 pero usando tantas conexiones que le chupaba todo el ancho de banda).

La solución sencilla, cuando os pase algo del estilo, pasa por poner una pequeña regla en el firewall que impida a esa IP ver vuestro servidor, de forma que piense que ha conseguido su objetivo: tirarnos el servidor, pero que otros puedan seguir viendo el servidor.

Leer más

BanFromLog

BanFromLog es un script para filtrar las ips del /var/log/auth.log de tu debian (u otra distro si lo personalizas para el auth.log de tu distro) y banearlas. Esto es útil debido a que vienen muchos ataques de fuerza bruta por SSH y es útil ahorrar ancho de banda y CPU.

Sentencia LIMIT existe en oracle, MySQL y postgresql

La Sentencia LIMIT existe en oracle, MySQL y postgresql.

Todos sabemos que MySQL tiene una sentencia limit:

SELECT * FROM emp LIMIT 0, 30;

En postgresql es al revés:

SELECT * FROM emp LIMIT 30, 0;

Pues bien, oracle, como no iba a ser menos, también la tiene:

SELECT FROM emp WHERE rownum < 100;
SELECT FROM emp WHERE rownum > 100 AND rownum < 200;
SELECT * FROM emp WHERE rownum BETWEEN 100 AND 200

Pongo a continuación los comentarios que no se verñian de otro modo al migrar el blog.


OracleUSer 27 marzo, 2008, 04:29 no funciona asi, si utilizas order by:(


Jose Sanchez 27 marzo, 2008, 21:46 Mirando la página de oracle lo tienes aquí con order by:

select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;

http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html (enlace no funciona)


Broda Noel 10 mayo, 2012, 14:32 Gente,
Esto no funciona, porque ROWNUM tendría que «no cambiar de orden» en caso que se ordene.
Si se hace un ORDERBY, los valores ROWNUM de cada registro sigue siendo el mismo, ya que es algo así como el numero de registro en la tabla, el cual nunca cambia.
De esa forma es totalmente imposible ordenar.

O sea, prueben esto:
Hagan un Query buscando PERSONAS, ordenenlo por APELLIDO ASC. Anoten que registros les trae. Luego ordenenlo por APELLIDO DESC y verán que trae lo mismo, siendo que debería traer otra cosa muy diferente a lo que debería traer. Se pierde el orden.
No prueben con 100 y 200, prueben con valores muy pequeños


Jose 10 mayo, 2012, 14:53 Estimado Broda, en el artículo no hablo del order by, sólo en un comentario posterior sacado de la web de oracle, un ejemplo que no he probado por cierto.

Si quieres solucionar tu problema vas a tener que seguir probado y buscando 🙂


Cifrado en archivos y particiones

Artículo inservible, mejor visita los enlaces del final.

Iba a hacer un mini howto de como hacer una partición o archivo cifrado, pero resulta que ya hay muchos hechos, os pongo los 3 enlaces más interesantes que he encontrado.

http://www.gra2.com/article.php/20030906212453952 (enlace no funcional) => Explica como hacer un fichero o partición cifrado con uno de los algoritmos soportados por el kernel (AES, Blowfish, Twofish, RC5, RC6, Serpent, DES, XOR), además te da la línea que poner al /etc/fstab para que el usuario pueda montar la particion. [[ Copia local del articulo ]]

http://www.esdebian.org/staticpages/ind … 8111531180 (enlace no funcional) => Explica como hacer y montar un archivo cifrado y sin cifrar.

http://bulma.net/body.phtml?nIdNoticia=1970 (enlace no funcional) => Como no, en bulma siempre hay algo interesante sobre el tema.

Otros artículos relacionados