jueves, 29 de mayo de 2008

Uso avanzado de Google

La semana pasada expuse en la Escuela un trabajo sobre uso avanzado de Google y la gente se sorprendió de las cosas que se pueden hacer con las directivas de Google, modificando las consultas para mejorar nuestras búsquedas. Es por ello que quiero compartirlo con quien le interese (creo que esto le interesa a cualquier internauta). Desde que conozco estas cosas, no he parado de usarlas a diario, así que espero que a vosotros también os sean útiles.


¿Qué son las directivas de Google?

Las directivas de Google son palabras clave que modifican una búsqueda, generalmente acotándola, y que permiten, combinándolas unas con otras, hacer consultas mucho más eficientes que las que los usuarios habitualmente realizan. Para esta exposición las he dividido en tres bloques, directivas básicas, directivas medias y directivas avanzadas.

1.2.1.- Directivas básicas:

Los primeros pasos en las directivas se dan con los operadores booleanos, las búsquedas de frases completas y los caracteres especiales. Los explico a continuación:

- Búsqueda de frases completas: la búsqueda de frases completas en Google se realiza escribiendo entre comillas las palabras que queremos que aparezcan juntas.

Ej: carnet de conducir "por puntos"

Esta consulta devolverá todas las páginas que contengan las palabras carnet, conducir y por-puntos (todo junto)

- Operadores booleanos: estos operadores (and, or y not) se sustituyen por “+”, “|” y “–“ respectivamente en las consultas Google, y realizan las siguientes funciones.

And (“+”): fuerza la búsqueda para que contenga exactamente esa palabra.

Or (“|”): permite la elección entre dos o más opciones.

Not(“-“): fuerza a ignorar esa palabra en los resultados.

Ej: (casa|piso) +playa –campo – montaña +alquiler –(comprar|compra)

Esta consulta devolverá todas las páginas que contengan las palabras casa o piso, que contengan forzosamente las palabras playa y alquiler pero no tengan comprar, ni compra, ni campo, ni montaña.

- Caracteres especiales: “.” y “*” estos caracteres son los comodines de Google. El punto “.” representa a cualquier carácter en una consulta. El asterisco “*” representa cualquier palabra.

Ej: “El carácter * en Google”

Esta consulta devuelve páginas que contienen “El carácter crítico en Google” o “El carácter pendenciero en Google”

Ej: index.of

Esta consulta devuelve páginas que contienen cualquier cosa entre las palabras “index” y “of”, ya sean palabras, espacios o signos de puntuación.

1.2.2.- Directivas medias: hemos clasificado como directivas de dificultad media las siguientes:

- site: permite acotar una búsqueda a una sola dirección web.

Ej: pl2 site:lsi.us.es

Esta consulta devuelve páginas del sitio “lsi.us.es” que contienen la palabra “PL2”

- link: permite obtener las páginas que contienen algún enlace que apunte a la página especificada.

Ej: link:last.fm

Esta consulta devuelve páginas que contienen un enlace que apunta a la web last.fm

- define: permite obtener definiciones que haya en la web de la palabra especificada por el usuario

Ej: define:algoritmo

Esta consulta devuelve páginas que contengan la definición de “algoritmo”

- weather y map: permiten obtener la predicción climática y el mapa del lugar que el usuario le indique.

Ej: weather:Sevilla | map:Sevilla

Esta consulta devuelve páginas que contengan la predicción meteorológica de Sevilla o mapas de Sevilla.

1.2.3.- Directivas avanzadas.

Entre las principales directivas avanzadas hemos seleccionado las que nos parecen más interesantes (intitle, filetype, inurl) y que explicamos a continuación:

- intitle: permite realizar búsquedas de palabras en el título de la página HTML. Es una directiva muy utilizada para mostrar listado de directorios si se utiliza como muestro en el ejemplo.

Ej: intitle:”index.of” symphony.x mp3

Esta consulta devuelve listado de directorios que contengan las palabras Symphony X juntas y que contengan ficheros de extensión mp3.

- filetype: permite realizar búsquedas de documentos con una extensión determinada.

Ej: algoritmo genético filetype:pdf site:edu

Esta consulta devuelve todos los archivos de extensión pdf generados en sitio educativos (como escuelas y universidad) que contengan las palabras “algoritmo” y “genético”.

- inurl: permite realizar búsquedas de texto en los enlaces y las direcciones web.

Ej: inurl:”admin” Apache

Esta consulta devuelve las páginas que tengan en su url la palabra “admin” y en cuyo texto aparezca la palabra Apache.


Hay muchas más directivas, pero estas son una selección de las que yo he considerado más interesantes o más útiles.


Si te ha gustado este post, deja un comentario

Un saludo

Juan

martes, 20 de mayo de 2008

SiNrAzA en directo en La Alameda: "Leal"

Aquí dejo un video de una canción de nuestro último concierto, para que disfrutéis los que no pudisteis ir o para que la recordéis los que fuisteis. Si te ha gustado, deja un comentario.Un saludo!

jueves, 15 de mayo de 2008

Como configurar Joomla y virtuemart en modo SSL

Lo primero es crear la CA y su certificado e instalarlo en el servidor

Una vez tengamos el certificado instalado en el dominio, el siguiente paso es activarlo, aqui es donde tenemos estas tres posibilidades:

1.- Poner todo el sitio bajo SSL
2.- Poner solo el admin bajo SSL (esto es bastante útil)
3.- Poner una serie de links determinados bajo SSL (esto será lo que haremos en nuestra práctica)


1.- Poner el sitio entero bajo SSL: No es muy recomendable, porque normalmente ralentiza bastante toda la navegación en general.

2.- Poner el administrator en SSL: Para poder loguearse al administrador en modo seguro SSL, es necesario editar los ficheros index.php e index2.php de la carpeta administrator. En el index.php inmediatamente después de la linea define( '_VALID_MOS', 1); teneis que poner el siguiente código:

//Redirect to https if accessed over http (except when running locally)

if ($_SERVER['SERVER_NAME'] != "localhost")
{
$port = $_SERVER["SERVER_PORT"];
$ssl_port = "443"; //Change 443 to whatever port you use for https (443 is the default and will work in most cases)
if ($port != $ssl_port)
{
$host = $_SERVER["HTTP_HOST"];
$uri = $_SERVER["REQUEST_URI"];
header("Location: https://$host$uri");
}
}

Igualmente hay que añadirlo en el index2.php inmediatamente despues de las directivas require_once al principio del fichero.

Con esto veréis que el administrator carga directamente en modo SSL. Una única cosa que he visto, es que en el editor WYSIWYG, no funcionan determinados popups de insertar imagen, etc. algo un poco molesto.

3. Configurar Virtuemart para que funcione bajo SSL: Virtuemart trae una opción en la configuración general, para activar el modo SLL, simplemente ponemos la URL de nuestra web, con el https, por ejemplo: https://www.tutienda.com (bastante cutre!). El problema que te vas a encontrar, es que cuando entras a realizar el pedido a modo seguro, cuando termines la compra o cuando pinches en cualquier otro link, seguirás con toda la web en modo seguro, porque no vuelve a poner http, en vez de https. Para conseguir que tu web cambie automáticamente a modo no seguro al pinchar en cualquier link normal, hay que realizar los siguientes ajustes:

Abrir el index.php de la raiz de joomla. En la línea 261, cerca de // loads template file cambiar todo ese bloque por esto:

// loads template file
if ( !file_exists( 'templates/'. $cur_template .'/index.php' ) ) {
echo _TEMPLATE_WARN . $cur_template;
} else {
if( $_SERVER['SERVER_PORT'] == 443 || @$_SERVER['HTTPS'] == 'on' ) {
$option = mosgetparam($_REQUEST, "option");
$page = mosgetparam($_REQUEST, "page");

if(@strstr($page, "account.") || @strstr($page, "checkout.") || @strstr($page, "shop.registration")){
$from_url = $mosConfig_live_site;
$to_url = str_replace("http:","https:",
$mosConfig_live_site);
ob_start();
require_once( 'templates/'. $cur_template .'/index.php' );
echo "";
$my_content = str_replace( "src=\"".URL, "src=\"".SECUREURL, ob_get_contents());
$my_content = str_replace( "src=".URL, "src=".SECUREURL, $my_content);
$my_content = str_replace( "url('".URL, "url('".SECUREURL, $my_content);
$my_content = str_replace( "url(".URL, "url(".SECUREURL, $my_content);
ob_end_clean();
echo $my_content;
}
else {
$to_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
mosRedirect( $to_url );
}
}
else {
require_once( 'templates/'. $cur_template .'/index.php' );
echo "";
}
}

Bibliografía util:
http://www.netshinesoftware.com/security/using-an-ssl-certificate-with-your-joomla-website.html
http://www.joomlaspanish.org/foros/showthread.php?t=15108
http://www.adstudio.es/2008/02/20/poner-joomla-bajo-ssl/

jueves, 8 de mayo de 2008

Como configurar un servidor seguro con OpenSSL

Aqui os dejo un tutorial paso a paso que he hecho para configurar un servidor Apache con OpenSSL, crear una autoridad certificadora capaz de emitir certificados y generar certificados tanto para el servidor como para los clientes. Espero que os quede claro:


1.- Instalar OpenSSl en el servidor (si no esta ya)

apt-get install openssl

2.- Crear la estructura de directorios que necesitamos (yo lo he hecho en /home/ pero eso depende del servidor. Como es en local, donde queramos)

mkdir ca ca/private ca/certs ca/conf

3.- Para tener un numero de serie que controle el numero de certificados emitimos

cd /ca
echo '01' > serial
touch index.txt

(Posteriormente declararemos index.txt como nuestra base de datos de certificados)

4.- Crear la Autoridad certificadora

4.1.- Creamos el fichero de configuracion en ca/conf:
cd /ca/conf
gedit caconfig.cnf

4.2.- Copiamos esta estructura con nuestra informacion en caconfig.cnf:
(también podemos actualizar el que viene por defecto en el servidor como openssl.cnf para ahorrarnos escribir tanto) -> rellenarlo con nuestros datos


#…………………………….
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /home/ca
serial = $dir/serial
database = $dir/index.txt
new_certs_dir = $dir/certs
certificate = $dir/certs/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 365
default_md = md5
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 1024 # Size of keys
default_keyfile = key.pem # name of generated keys
default_md = md5 # message digest algorithm
string_mask = nombstr # permitted characters
distinguished_name = req_distinguished_name
req_extensions = v3_req
[ req_distinguished_name ]
# Variable name Prompt string
#————————- ———————————-
0.organizationName = Organization Name (company)
organizationalUnitName = Organizational Unit Name (department, division)
emailAddress = Email Address
emailAddress_max = 40
localityName = Locality Name (city, district)
stateOrProvinceName = State or Province Name (full name)
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
commonName = Common Name (hostname, IP, or your name)
commonName_max = 64
# Default values for the above, for consistency and less typing.
# Variable name Value
#———————— ——————————
0.organizationName_default = My Organization
localityName_default = NEW YORK
stateOrProvinceName_default = NEW YORK
countryName_default = US
emailAddress_default = email@mydomain.net
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash

5.- Generar la clave de la AC y su certificado raiz.
OJO este paso es importante: aqui se nos pedira informacion del nombre de la CA y tiene que ser siempre igual para todos los certificados, asi que hay que ponerse de acuerdo a la hora de escribirlo y ademas hay que pensar una frase generadora de la clave que sea larga y dificililla.

openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out certs/cacert.pem -days 365 -config conf/caconfig.cnf

Esto genera un certificado valido por 365 dias que se llama cacert.pem en la carpeta "certs" y una clave privada RSA cakey.pem que se guarda en el directorio "private"

6.- Crear el certificado del servidor cliente

Aqui creamos una clave privada como cliente y una petición de firma para la CA. Aquí tenemos que poner el nombre del servidor, que sera www.miTiendaChunga.com o el que sea.

6.1.- Nos vamos a nuestro directorio

cd /home/ca

6.2.- Lanzamos el comando de petición de certificado a la CA

openssl req -new -nodes -out certs/localhost.req.pem -keyout private/localhost.key.pem -config conf/caconfig.cnf

Y esto genera la clave en "private" y la peticion del certificado en "certs"

6.3.- Ahora, como CA, firmamos el certificado (motivos de seguridad) y generamos el certificado definitivo, actualizando la base de datos de certificados

openssl ca -in localhost.req.pem -notext -out certs/localhost.cert -config conf/caconfig.cnf

[A partir de aquí ya no es realmente necesario]
8.- Los certificados generados tienen la extension .pem. Para que sean mas manejables y compatibles con los navegadores deberian tener la extension .crt, asi que los cambiamos:

cd /home/ca

rename 's/\.pem/\.crt/' *

9.- A la hora de la implementacion real en el servidor, habria que llevar los certificados y claves a las carpetas correctas, ssl.key y ssl.crt y actualizar el fichero de configuracion del servidor, que debe acabar con algo asi como "ssl.conf". En caso de estar usando Lampp, está en /opt/lampp/etc/extra/httpd-ssl.conf. Esto es necesarios -> la creacion de un servidor virtual.
Habria que escribir algo asi: (esto es solo un ejemplo) [la ip del localhost es 127.0.0.1 pero una real seria de la forma 192.168.1.1]
NameVirtualHost *:443 #para que se active cuando se acceda por el puerto seguro

DocumentRoot /var/www/html
ServerName 127.0.0.1
ServerAdmin someone@your.domain

ErrorLog /etc/httpd/logs/ssl_error_log
TransferLog /etc/httpd/logs/ssl_access_log
SSLEngine On
SSLCertificateFile /opt/lampp/etc/ssl.crt/miCertificadoDelServidor.crt
SSLCertificateKeyFile /opt/lampp/etc/ssl.key/miClaveDelServidor.key

Ojo: Hay que reiniciar el servidor (/opt/lampp/lampp restart ) despues modificar los ficheros de configuracion

Nota: es MUY!!! importante comprobar que en un documento de configuracion existe una linea que ponga "Listen 443". Si no, debemos añadirla

Aqui hay un truco bastante importante que puede servirnos para redireccionar una url accedida como http a un https. Yo lo he probado y funciona:

Escribimos en la pagina, en vez de todo el html que contuviera, las siguientes lineas en la cabecera:

[Entre las etiquetas de apertura y cierre html]

MENOR_QUE
meta http-equiv="refresh" content="0;url=https://localhost/web_prueba/contacto_seguro.html"
MAYOR_QUE

(lo escribo así porque blogger no me deja escribir html:
MENOR_QUE es "<" y MAYOR_QUE es ">"
)


Y esto nos redirecciona a la web segura, que contiene todo el codigo html que tenia el anterior, pero emitiendo nuestro certificado.


Otra cosa interesante es (cito literalmente de http://www.linuxtotal.com.mx/ssl_apache.html):

"Si quieres evitar que a tus clientes cada vez que ingresen a tu sitio salga el molesto diálogo que pide aceptar el certificado, la única solución es que distribuyas el archivo cacert.pem, recuerda que este archivo es el que te identifica como una autoridad certificadora. Lo puedes poner a descarga desde tu propio sitio, o mandarlo por correo, como sea. Cuando el cliente lo tenga en su equipo deberá importarlo dentro del browser o navegador. Todos los navegadores en sus preferencias o herramientas tienen una opción de certificados y desde ahí existe un botón importar para realizar esto."


[Informacion extraida y traducida de
http://codeghar.wordpress.com/2008/03/17/create-a-certificate-authority-and-certificates-with-openssl/
http://www.flatmtn.com/article/setting-openssl-create-certificates#SSLCert-8
http://www.eclectica.ca//howto/ssl-cert-howto.php
https://help.ubuntu.com/7.10/server/C/httpd.html#https-configuration
http://www.linuxtotal.com.mx/ssl_apache.html
]


Espero que te haya sido util. Si te ha gustado, deja un comentario
Un saludo

Como cambiar la extension de varios ficheros al mismo tiempo

Buenas:
varias veces he tenido que cambiar la extensión de un montón de ficheros y algunas veces ha sido mortalmente PESADO. Se me ha vuelto a cruzar la necesidad en mi camino y me he negado a hacerlo a mano, así que investigando un poco he descubierto el comando rename. Os explico como funciona:

rename 's/antigua-cadena-de-texto/nueva-cadena-de-texto/' archivos-a-modificar

En mi caso tengo que pasar 150 archivos .pem a .crt en mi carpeta actual, así que escribiría este comando:

rename 's/\.pem/\.crt' *

Notas: tengo que protejer el . con una barra. Con el asterisco indico que se aplique a todo el directorio actual.

Si te ha sido util deja un comentario

Un saludo
Juan