...las cosas que me gustan, descubro o aprendo.


sábado, 12 de septiembre de 2009

Usando mi iPod como telefono

Los que tenemos triple-play en une, contamos con una linea ToIP. Esa linea puede ser usada desde un computador instalando un soft-phone.

Lo que hice yo fue instalar un soft-phone en mi ipod touch 2G y configurarlo para utilizarlo como un telefono, con la linea ToIP de mi triple-play y usando un manos libres.

El soft-phone que instale es un cliente SIP que se llama Siphon. El siphon se puede encontrar en el Cydia y luego de instalarlo se vera asi:

Ahora entrando a "Ajustes" aparecera una nueva entreda que crea el Siphon:


Entrando alli se debe configurar lo siguiente:

- Nombre de usuario: "Donde se pone el numero de su linea ToIP"
- Contraseña: "Si no la saben llamen a une y ahi se las dan"
- Nombre de servidor: une.net.co



Luego en "Avanzado" se configura lo siguiente:

- Servidor proxy: epmvoip1.une.net.co
- Auth. user: toip"seguido de su linea ToIP"

Quedando asi:

Y listo eso es lo unico que hay que configurar para poder usar el ipod para hacer llamadas.

La interfaz del siphon es parecida a la interfaz para hacer llamadas del iphone, y simplemente basta estar conectado a una red WiFi:



NOTAS:

- El ipod touch 2G no tiene microfono, pero la entrada de los audifonos soporta entrada de audio, por lo que con un manos libres de iphone se puede usar.

- El ipod touch 1G que tampoco tiene microfono, no tiene entrada de audio en la entrada de los audifonos, por eso para estos ipod no funciona. (Se necesitaria ponerle un microfono que se conecte en la entrada dock del ipod...)

- En el iphone tambien se puede usar conectado a una red WiFi. Yo lo intente usar conectado a la red EDGE de Movistar pero no me funciono. Probablemente en Comcel y TIGO tampoco funcione pues los operadores bloquean ese tipo de trafico.

- Las llamadas por la linea ToIP de une ya no son gratuitas (Lo eran cuando era VoIP), pero igual los minutos son baratos pues cobran como si fuera una linea de telefonia fija. La ultima vez que averigue estos eran los precio:

Valor de llamadas:(incluido iva)

Local......................................................$12
Larga distancia a ciudad capital........$110
Larga distancia a municipio...............$168

jueves, 18 de junio de 2009

Instalar Windows XP desde una memoria USB

En el anterior post "Instalar Windows vista o Windows 7 desde una memoria USB" el procedimiento no servía para instalar Windows XP.

Encontré en internet este excelente tutorial que esta en español y pues lo pongo acá, incluyendo las aplicaciones necesarias para poder realizarlo:

- Receta:

Instalando windows xp desde un dispositivo usb.pdf


- Ingredientes:

PeToUSB 3.0.0.7.zip

USBprep 8.zip

bootsect.zip

- Observaciones.

- El procedimiento no funciona con el "windows UE" de Bj... (lastima). Yo lo he probado con un windows XP original y preparando la memoria USB desde un XP. Me funciono perfecto.


fuente: http://www.octaviovasquez.info/2007/12/instalar-windows-xp-desde-un.html

miércoles, 17 de junio de 2009

Instalar Windows Vista o Windows 7 desde una memoria USB

Ya que mi nuevo netbook no cuenta con unidad de dvd y las unidades de dvd externas están muy caras, pues me vi en la necesidad de instalar windows 7 desde mi memoria USB. Naturalmente mi acer-one tiene la opción de bootearse (iniciarse) desde la USB, entonces lo único que debo hacer es preparar mi memoria para que sea booteable y luego copiar en ella el contenido del dvd de instalación windows.


- Preparar la memoria USB
.

Este procedimiento para hacer que la memoria USB sea booteable solo funciona en windows vista o windows 7 (pero no en windows xp). Cuando yo lo hice no tenia ninguna maquina con windows vista/7 instalado, por lo que lo hice en un momentico en un computador de un compañero de la U.



- Abrimos una consola (ejecutar: cmd) y digitamos:

diskpart

- Se abrira un nueva ventanita en la que listamos las unidades de almacenamiento digitando:

list disk

aparecerá la lista de las unidades de almacenamiento como se ve a continuación:

Se debe identificar cual corresponde a la memoria USB. En mi caso es " Disk 1" que es mi memoria USB de 4 Gb (bueno realmente de 3875 Mb como se ve en la imagen)

- Una vez identificada a cual "disk" corresponde la memoria USB (esto es importante, no vaya a ser que formateen el disco duro o una de sus particiones) se deben ingresan las siguientes lineas:

select disk 1

clean

create partition primary

select partition 1

active

con cada comando aparecerá algo como esto:

- Luego se ingresa la siguiente linea para formatear la memoria (esto se demora un ratico):

format fs=fat32

- Cuando termie el formateo finalmente digitamos:

assign


Y eso es todo para la preparación de la memoria. Ya se puede cerrar la ventana.



- Copiar los archivos en la memoria.

Esta parte ya puede hacerse desde cualquier versión de windows (xp, vista, 7) y simplemente es copiar el contenido del DVD de instalación de windows vista/7 en la memoria USB. Se deben copiar los archivos que contenga dvd. No sirve copiando la imagen del dvd (osea un .iso por ejemplo), sino que se debe "volcar" el contenido como tal del dvd en la memoria USB. Puede ser seleccionando todo, click derecho copiar, click derecho pegar.

O si se prefiere desde la consola digitando:

xcopy d:\*.* /s/e/f e:\

Donde:

d:\....Es la unidad donde se encuentra mi dvd de instalación
e:\....Es la unidad de mi memoria USB

- Instalar windows

Finalmente queda seleccionar en el menu de configuracion de la bios, que el sistema inicie desde la memoria USB. De ahi en adelante se sigue como una instalacion normal de windows.

...Observaciones.

- La instalación desde la memoria USB me ha funcionado para instalar windows 7 y windows vista (Los he descargado gratis y originales de la MSDN Academic Alliance, el cual es un beneficio de ser IEEE member... ;) ....suscribase al IEEE: http://www.ieee.org/join). Para instalar windows XP no funciona este procedimiento.

Para hacerlo con XP ver:

http://santiagoaldanagomez.blogspot.com/search/label/memoria%20usb

- La memoria queda sirviendo para guardar archivos normales (y darle el uso normal de una memoria USB) y no se pierde su característica de ser booteable. Simplemente el dia que la queramos usarla para instalar un s.o. se le deben borrar los archivos que tenga (pero sin formatearla solo eliminándole sus archivos) y copiar el contenido del dvd de instalación del s.o. que se quiera instalar.



fuente: http://kurtsh.spaces.live.com/blog/cns%21DA410C7F7E038D%211665.entry

lunes, 25 de mayo de 2009

Pesquisa Bibliográfica

Pesquisa Bibliográfica


1)http://www.cyberciti.biz/tips/how-to-install-ssl-lighttpd-https-configuration.html




Titulo del artículo:
"
Howto: Linux Lighttpd SSL (Secure Server Layer) Https Configuration And Installation"

Autor:
(no aparece)


Fecha de consulta:
Mayo 4 de 2009

Resumen:
El articulo explica como configurar el un servidor web con certificado digital utilizando lighttpd. El articulo indica como generar el request de certificado digital pero no dice como se genera el certificado de la entidad certificadora, para firmar el certificado del servidor. Sin embargo esto no importa por que esa parte del proceso se vio muy claramente en clase. Lo valioso de este articulo es que indica como hacer para que el servidor no solicite el password de la llave, cada vez que se inicia el servidor.



2) http://www.tc.umn.edu/~brams006/selfsign_ubuntu.html






Titulo del artículo:
"Setting up SSL: Ubuntu and Apache 2
"

Autor:
Paul Bramscher

Fecha de consulta:
Mayo 4 de 2009

Resumen:
Este articulo explica como configurar el servidor con certificado pero usando apache2 en ubuntu, por lo que me parece mas indicado. No habla sobre como hacer para que el servidor no solicite el password de la llave, pero creo que el procedimiento indicado en el articulo anterior aquí también puede aplicar.



3)http://www.snort.org/docs/setup_guides/intl/spanish/Snort_in_Slackware_spanish.pdf





Titulo del artículo:
"
Construir un IDS con Snort + MySQL + BASE + PHP5 + Apache2"

Autor:
Daniel Medianero García

Fecha de consulta:
Mayo 11 de 2009

Resumen:
Este articulo lo que encontré en la pagina de snort. Tiene la ventaja de ser en español, y tiene snapshots del proceso de configuración, sin embargo me parece algo largo.


4) http://ubuntuforums.org/showthread.php?t=483488





Titulo del artículo:
"Snort Mysql & Base on Feisty
"

Autor:

djhedges


Fecha de consulta:
Mayo 11 de 2009

Resumen:
Este articulo es un post que encontré en un foro, me parece mejor que el anterior por que es mas conciso, y además usa un paquete llamado snort-mysql el cual es un snort que incluye un soporte especial para mysql, por lo que podría ser mas fácil de configurar.




5) http://gcubo.org/documentacion/recetas/iptables




Titulo del artículo:
"
Configurar un firewall con iptables sin romperse la cabeza"

Autor:
Jaime Anguiano Olarra

Fecha de consulta:
Mayo 11 de 2009

Resumen:
Este es un post tipo "receta" que indica lo justo para implementar un firewall usando iptables. Me parece perfecto dado que ya en un curso anterior había aprendido iptables y este articulo me sirve de recorderis.

Configuración de Sistema de Detección de Intrusos (Snort) con base de datos (mysql) e interfaz Web para la revisión de alertas (BASE).

Configuración de Sistema de Detección de Intrusos (Snort) con base de datos (mysql) e interfaz Web para la revisión de alertas (BASE).


Paso #1: Instalación de snort-mysql
y de mysql-server

Lo primero que se debe hacer es instalar el paquete snort-mysql el cual tiene incluido el soporte para mysql

- Se instala snort-mysql con:

aptitude install snort-mysql

Durante la instalación se nos preguntara la ip de la red a la cual queremos monitorear. Como se muestra a continuación allí debemos ingresar "any":



Luego nos aparece un cuadro de notificación al que le damos "ok"


Finalmente aparece una ultima notificación en la que se nos
pregunta que si queremos configurar la base de datos automaticamente, a lo que debemos seleccionar "no" ya que la configuración la haremos manualmente



- Luego debemos instalar el servidor mysql digitando:

aptitude install mysql-server

Durante la instalación del paquete se nos pedirá que ingresemos una contraseña para el usuario "root" de mysql


Paso #2: Configuración de snort y de mysql

- Ingresamos al archivo de conflagración de snort que se encuentra en la ruta
/etc/snort/snort.conf

- Primero comentamos con "#" la linea de código que configura a snort para guardar sus eventos en una bitacora. La linea se encuentra en el
reglón 790 y debe quedar como se ve a continuación:

# output log_tcpdump: tcpdump.log

- Después debemos incluir la linea que configura a snort para guardar sus eventos en la base de datos de mysql. La linea se encuentra en el renglón 797. Esta se debe descomentar y modificarla para que quede como se muestra a continuación:

output database: log, mysql, user=snort password=secreto dbname=snort host=localhost

Donde, los datos anteriores serán los mismos con lo que se configurara la base de datos de mysql.

- Ahora desde la consola vamos a ingresar la configuración para mysql ingresando las siguientes lineas.

root@orex2:~# mysql -u root -p

mysql> create database snort;

mysql> grant insert,select on root.* to snort@localhost;

mysql> set password for snort@localhost=password('secreto');

mysql> grant create,delete,insert,select,update on snort.* to snort@localhost;

mysql> grant create,delete,insert,select,update on snort.* to snort;

mysql> exit

Donde lo que se ha hecho es crear la base de datos "snort" y entre otras cosas le hemos asignado el password "secreto" siendo consecuentes con lo ingresado en snort.conf en el paso anterior.

- Finalmente en la consola se ingresan las siguiente dos lineas

root@orex2:~# gunzip /usr/share/doc/snort-mysql/create_mysql.gz
root@orex2:~# mysql -u root -p < /usr/share/doc/snort-mysql/create_mysql snort

Estas lo que hacen es descomprimir el archivo que contiene la estructura de la base de datos que ya viene lista con el paquete snort-mysql y con la segunda linea se importa la estructura a mysql para que la aplique a la base de datos "snort" que creamos en el paso anterior.

- Para terminar este paso se reinicia el snort con:

root@orex2:~#/etc/init.d/snort restart

Paso #3: Configuración de BASE apache y php

- Se instalan los siguientes paquetes si aun no se tienen instalados: apache2 , php5mysql , libphp-adob

root@orex2:~#aptitude install apache2 php5-mysql libphp-adodb

- Descargamos la ultima versión de BASE desde:
http://base.secureideas.net/

En mi caso descargue base-1.4.2.tar.gz.

- El archivo descargado
base-1.4.2.tar.gz se descomprime dentro del sitio del servidor, que en mi caso lo hago con las siguientes lineas:

root@orex2:~# tar -xvzf /root/base-1.4.2.tar.gz
root@orex2:~# mv base-1.4.2 /var/www/ssl/aldana
- Dentro de la carpeta donde guardamos a base-1.4.2 , se crea el archivo de configracion del php, para lo cual se copia y se pega con nombre diferente, el archivo de configuración por defecto como se muestra a continuación:

cd /var/www/ssl/aldana
cp base_conf.php.dist base_conf.php

- Ahora se debe abrir el archivo de configuración de BASE
base_conf.php que esta en la ruta /var/www/ssl/aldana/base_conf.php (el cual acabamos de crear). Dentro de este archivo se deben buscar las siguientes lineas y modificarlas como aparecen a continuación :

$BASE_urlpath = 'ssl/aldana';
$DBlib_path = '/usr/share/php/adodb';
$alert_dbname = 'snort';
$alert_password = 'secreto';

- Despues en la consola se digitan las siguientes lineas, que instalan componentes necesarios para la correcta visualizacion de la aplicacion web BASE.

aptitude install php5-gd php-pear
pear install Image_Color
pear install Image_Canvas-alpha
pear install Image_Graph-alpha
pear install Mail
pear install Mail_Mime
- Finalmente reiniciamos el servidor web

/etc/init.d/apache2 restart


Paso #4: Configuración la interfaz web BASE

- Abrimos el navegador web e ingresamos https://aldana.seguridad.net/aldana/



Damos click en "Setup page" para realizar las configuraciones finales.

- Luego nos aparece la siguiente pagina en la que debemos dar click en el boton "Create BASE AG"



- aparece la notificación de las configuraciones automáticas que se han hecho


Aquí damos click en "Main Page" y nos aparecerá la pagina principal de la aplicación





Probando el sistema detector de intrusos.

Para ensayar un poco activemos el snort monitoreando el localloop y luego con nmap generamos trafico que a su vez generen entradas en la base de datos.

- En una consola activamos snort

root@orex2:~#snort -i lo -c /etc/snort/snort.conf

- En otra consola escaneamos el local loop con nmap ingresando por ejemplo:

nmap -sU localhost -T5
nmap -PU localhost
nmap -sT localhost
nmap -PU localhost
nmap -sO localhost
nmap -sF localhost

- Con un escaneo corto como el hecho anteriormente vemos como se generan una gran cantidad de entradas en nuestra base de datos, por eventos coincidentes con las reglas que tiene por defecto snort, y con las que nosotros mismos le ingresemos en el archivo
local.rules



En los siguientes snap shoots se ve como se puede interarctuar facil e intuitivamente con la aplicacion BASE.





.
.
.
fin
.

Instalación de Servidor Web Apache con Certificado de Seguridad

Instalación de servidor Web apache con certificado seguridad


Para poder tener nuestro servidor web con certificado de seguridad lo primero es crear los certificados digitales, para lo cual vamos a utilizar openssl.

En el mundo real lo que haríamos con el openssl seria crear no un certificado, sino una petición o requerimiento de certificado es decir un request (archivo .crs) el cual se le envía a la entidad certificadora (CA). Luego la CA nos devolverá el certificado como tal (archivo .crt), que es el que se debería instalar en nuestro servidor web.
Pero para este trabajo lo que vamos a hacer es instalar un certificado digital, firmado por una CA que nosotros mismos creamos. Entonces a continuación, lo que se hará sera crear un certificado auto-firmado para nuestra CA y luego con éste, crearemos el certificado que vamos a instalar el servidor web.

NOTA: Si no se tiene el openssl, se puede instalar con:


aptitude install openssl


Paso #1: Creación del certificado auto-firmado para nuestra CA

- Creamos primero la llave privada para nuestra CA

root@orex2:~# cd Certificados/CA
root@orex2:~/Certificados/CA# openssl genrsa -des3 -out ca_santiago.key 1024

Donde:
-des3...algoritmo de cifrado
-out ca_santiago.key...nombre de la llave
1024...tamaño de la llave en bits

Luego nos pedirá un password para asegurar como tal el archivo de la llave


- Con la llave creada, se genera entonces el certificado digital

root@orex2:~/Certificados/CA# openssl req -new -x509 -days 365 -key ca_santiago.key -out ca_santiago.crt

Donde:
-x509...es el estándar del certificado
-days 365...es la vigencia del certificado -key ca_santiago.key...es la llave que creamos en el paso anterior -out ca_santiago.crt...para especificar el nombre del certificado

Primero se nos pedirá el password que le pusimos a la llave, y luego la información que llevara el certificado de nuestra CA. En mi caso ingrese la siguiente informacion:

Country Name (2 letter code) [AU]:CO
State or Province Name (full name) [Some-State]:Antioquia
Locality Name (eg, city) []:Medellin
Organization Name (eg, company) [Internet Widgits Pty Ltd]:OREX
Organizational Unit Name (eg, section) []:Unidad de Certificacion
Common Name (eg, YOUR name) []:www.orex.com.co
Email Address []:info@orex.com.co


Paso #2: Creación del certificado para el servidor web

- Creamos la llave privada para nuestro certificado, así como creamos la llave anterior

root@orex2:~# cd Certificados/servidorweb/
root@orex2:~/Certificados/servidorweb# openssl genrsa -des3 -out srv_santiago.key 1024

- Con la llave creada creamos el request del certificado digital

root@orex2:~/Certificados/servidorweb# openssl req -new -key srv_santiago.key -out srv_santiago.crs

Luego nos pide el password de la llave que acabamos de crear, y la información queremos que valla en el certificado. Uno de los campos a tener en cuenta es el Common Name pues es importante que allí se se ingrese el nombre de dominio de nuestro servidor web. Lo que ingrese en mi caso fue:

Country Name (2 letter code) [AU]:CO
State or Province Name (full name) [Some-State]:Antioquia
Locality Name (eg, city) []:Medellin
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Aldana s.a.
Organizational Unit Name (eg, section) []:Departamento de Seguridad
Common Name (eg, YOUR name) []:aldana.seguridad.net
Email Address []:santiago@aldana.seguridad.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

- Con el request anterior y con el certificado de nuestra CA, vamos a firmar el certificado del servidor, es decir finalmente vamos a crear el certificado para el servidor web

root@orex2:~/Certificados/servidorweb# openssl x509 -req -in srv_santiago.crs -out srv_santiago.crt -sha1 -CA ../CA/ca_santiago.crt -CAkey ../CA/ca_santiago.key -CAcreateserial -days 120

Donde:
-req -in srv_santiago.crs...es el request del certificado del servidor
-sha1...es el algoritmo para obtener el hash
-CA ../CA/ca_santiago.crt -CAkey ../CA/ca_santiago.key...son las rutas del certificado auto-firmado de nuestra CA y su llave privada respectivamente
-days 120...es la vigencia del certificado

Luego nos pedirá el password de la llave de la CA, y si todo sale bien saldrá algo como esto:

Signature ok
subject=/C=CO/ST=Antioquia/L=Medellin/O=Aldana s.a./OU=Departamento de Seguridad/CN=aldana.seguridad.net/emailAddress=santiago@aldana.seguridad.net
Getting CA Private Key
Enter pass phrase for ../CA/ca_santiago.key:

Con esto queda listo el certificado srv_santiago.crt y su llave srv_santiago.key , los cuales son necesarios para el siguiente paso.


Paso #3: Configuraciones preliminares para el servidor

El servidor web que vamos a usar es el apache2

- Instalamos el servidor apache2

root@orex2:~# aptitude install apache2

- Ahora creamos un directorio con el nombre "ssl" en la ruta /etc/apache2/ y dentro de este copiamos los archivos del certificado y la llave del sitio (srv_santiago.crt y srv_santiago.key) que creamos en el paso 2.

- Ubicados dentro de la carpeta que acabamos de crear generamos un archivo .pem (en mi caso aldana.seguridad.net.pem) el cual concatena la llave (srv_santiago.key ) y el certificado (srv_santiago.crt):

root@orex2:/etc/apache2/ssl# cat srv_santiago.key srv_santiago.crt >aldana.seguridad.net.pem
- ingresamos las siguientes 3 lineas que tienen como objetivo crear una llave sin password, para que asi el apache no nos solicite dicho password cada vez que inicie el servidor web.

root@orex2:/etc/apache2/ssl# cp srv_santiago.key srv_santiago.bak 
root@orex2:/etc/
apache2/ssl# cp aldana.seguridad.net.pem
aldana.seguridad.net.pem.bak
root@orex2:/etc/
apache2/ssl# openssl rsa -in srv_santiago.key -out no.pwd.srv_santiago.key


Donde no.pwd.srv_santiago.key sera la llave sin el password

- Finalmente creamos de nuevo el archivo .pem pero esta vez con la llave que no requiere password

root@orex2:/etc/apache2/ssl# cat no.pwd.srv_santiago.key srv_santiago.crt >aldana.seguridad.net.pem

Este ultimo archivo aldana.seguridad.net.pem sera el que finalmente utilizara el apache para sacar de alli el certificado y la llave, y usarlos en el servidor web seguro.

Paso #4: Configuración del sitio ssl
- Habilitamos el modulo ssl del apache digitando:

root@orex2:~# a2enmod ssl

Deberá aparecer algo como:

Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Run '/etc/init.d/apache2 restart' to activate new configuration!


- Luego entramos a la carpeta
etc/apache2/sites-available/ y buscamos el archivo "default-ssl", el cual nos va a servir como guia para crear el archivo de configuracion de nuestro sitio ssl. Creamos una copia de "default-ssl" y la pegamos en la misma carpeta pero cambiandole el nombre por el de nuestro sitio. Esto se puede hacer ingresando:

root@orex2:~# cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/aldana.seguridad.net

- Abrimos el archivo de configuracion que acabamos de crear y le modificamos las siguientes lineas como aparece a continuacion:


...mas abajo de este archivo (mas o menos en la linea 51) tambien se deben modificar las siguientes dos lineas:

SSLCertificateFile    /etc/apache2/ssl/aldana.seguridad.net.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key


Donde:
VirtualHost aldana.seguridad.net:443>...indica el dominio del sitio y el puerto 443 de https
var/www/ssl...es la raiz donde debera estar el index de nuestro sitio web

SSLCertificateFile /etc/apache2/ssl/aldana.seguridad.net.pem ...se le indica al apache la ruta
donde encontrara el archivo .pem

#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key...se comenta esta linea anteponiendo el "#",
ya que no es necesario indicar la ruta de la llave por que ya en el archivo .pem esta incluida



- Ejecutamos la siguiente linea la cual crea un enlace de nuestro archivo de configuracion dentro de la carpeta "etc/apache2/sites-enabled/" lo que finalmente habilitara nuestro nuevo sitio.

root@orex2:~# a2ensite aldana.seguridad.net


- Por último, reiniciamos apache2:


root@orex2:~# /etc/init.d/apache2 restart



Probando el servidor

Antes de probar el servidor debemos asociar el dominio "aldana.seguridad.net" con la direccion ip de loop.Para esto a ingresamos /etc/hosts y agregamos la linea:

127.0.0.1    aldana.seguridad.net

- y reiniciamos apache2:


root@orex2:~# /etc/init.d/apache2 restart


- Con el mozilla entramos a la pagina https://aldana.seguridad.net e inicialmente nos aparece esto:

Firefox dice que se a producido un error por que el certificado del sitio web esta firmado por una CA desconocida.

- Al dar click en agregar excepcion lo que realmente estamos haciendo instalando el certificado de nuestro servidor web en el firefox, para que asi pueda mostrar la pagina.

Confirmando la excepcion de seguridad, el certificado quedara instalado y nunca mas firefox me volvera a decir que es desconocido, permitiendome asi realzar la conexion segura.

- Si damos click en ver podemos ver el contenido del certificado digital




Aqui se puede ver la informacion que le ingresamos al certificado a la hora de crearlo


- Ahora apenas acepto la excepcion puedo ver la pagina en https, es decir http segura. Tambien se puede observar como abajo a mano derecha de la ventana del navegador web aparece un candadito que indica que se tiene una conexion segura mediante certificado digital.


- Es interezante observar con un sniffer como el es trafico durante la peticion de esa pagina web segura. Y efectivamente vemos como los paquetes tienen su payload encriptado como se aprecia en la siguiente captura:



Asi entonces el certificado me sirvio no solo para la verificacion del sitio web, sino que tambien me permite tener una transmision de la pagina web de manera cifrada.
.
.
.
fin.

viernes, 22 de mayo de 2009

Instalación de servidor Web con certificado seguridad

Instalación de servidor Web con certificado seguridad

Para porder tener nuestro servidor web con certificado de seguridad pues lo primero es crear los certificados digitales, para lo cual vamos a utilizar openssl.

En el mundo real lo que haríamos con el openssl seria crear no un certificado, sino una petición o requerimiento de certificado es decir un request (archivo .crs) el cual se le envía a la entidad certificadora (CA). Luego la CA nos devolverá el certificado como tal (archivo .crt), que es el que se debería instalar en nuestro servidor web.
Pero para este trabajo lo que vamos a hacer es instalar un certificado digital, firmado por una CA que nosotros mismos creamos. Entonces a continuación, lo que se hará sera crear un certificado auto-firmado para nuestra CA y luego con éste, crearemos el certificado que vamos a instalar el servidor web.

NOTA: Si no se tiene el openssl, se puede instalar con:

aptitude install openssl


Paso #1: Creación del certificado auto-firmado para nuestra CA

- Creamos primero la llave privada para nuestra CA

root@orex2:~# cd Certificados/CA root@orex2:~/Certificados/CA# openssl genrsa -des3 -out ca_santiago.key 1024


Luego nos pedirá un password para asegurar como tal el archivo de la llave

Donde:
-des3...algoritmo de cifrado
-out ca_santiago.key...nombre de la llave
1024...tamaño de la llave en bits

- Con la llave creada, se genera entonces el certificado digital

root@orex2:~/Certificados/CA# openssl req -new -x509 -days 365 -key ca_santiago.key -out ca_santiago.crt

Donde:
-x509...es el estándar del certificado
-days 365...es la vigencia del certificado -key ca_santiago.key...es la llave que creamos en el paso anterior -out ca_santiago.crt...para especificar el nombre del certificado

Primero se nos pedirá el password que le pusimos a la llave, y luego la información que llevara el certificado de nuestra CA

Paso #2: Creación del certificado para el servidor web

- Creamos la llave privada para nuestro certificado, así como creamos la llave anterior


root@orex2:~# cd Certificados/servidorweb/ root@orex2:~/Certificados/servidorweb# openssl genrsa -des3 -out srv_santiago.key 1024


- Con la llave creada creamos el request del certificado digital

root@orex2:~/Certificados/servidorweb# openssl req -new -key srv_santiago.key -out srv_santiago.crs


Luego nos pide el password de la llave que acabamos de crear, y la información queremos que valla en el certificado. Uno de los campos a tener en cuenta es el Common Name pues es importante que allí se se ingrese el nombre de dominio de nuestro servidor web. En mi caso es:

Common Name (eg, YOUR name) []:aldana.seguridad.net

- Con el request anterior y con el certificado de nuestra CA, vamos a firmar el certificado del servidor, es decir finalmente vamos a crear el certificado para el servidor web
root@orex2:~/Certificados/servidorweb# openssl x509 -req -in srv_santiago.crs -out srv_santiago.crt -sha1 -CA ../CA/ca_santiago.crt -CAkey ../CA/ca_santiago.key -CAcreateserial -days 120

Donde:
-req -in srv_santiago.crs...es el request del certificado del servidor
-sha1...es el algoritmo para obtener el hash
-CA ../CA/ca_santiago.crt -CAkey ../CA/ca_santiago.key...son las rutas del certificado autofirmado de nuestra CA y su llave privada respectivamente
-days 120...es la vigencia del certificado

Luego nos pedirá el password de la llave de la CA, y si todo sale bien saldrá algo como esto:

Signature ok subject=/C=CO/ST=Antioquia/L=Medellin/O=aldana s.a./OU=Unidad de Certificacion/CN=aldana.seguridad.net/emailAddress=santiago@aldana.seguridad.net Getting CA Private Key Enter pass phrase for ../CA/ca_santiago.key:

Con esto queda listo el certificado srv_santiago.crt y su llave srv_santiago.key , los cuales son necesarios para el siguiente paso.


Paso #3: Configuraciones iniciales para el servidor web

El servidor web que decidí usar es el lighttpd, el cual me parece bueno y además ya lo he usado antes.

- Instalamos el servidor lighttpd

root@orex2:~# aptitude install lighttpd

- Verificamos que la versión instala soporte ssl ingresando:

root@orex2:~# /usr/sbin/lighttpd -v


Deberá aparecer algo como:

lighttpd-1.4.19 (ssl) - a light and fast webserver Build-Date: Jul 29 2008 18:58:09

De lo contrario sera necesario descargar el código fuente del servidor y recompilarlo, pero generalmente la versión disponible en los repositorios es la que soporta ssl.

- Ahora creamos el directorio con el nombre "ssl" dentro de la carpeta de configuración de lighttpd, y dentro de éste el directorio con el nombre de nuestro dominio y el sufijo ".in" que en mi caso seria "aldana.seguridad.net.in".
En este ultimo directorio debemos copiar el certificado y la llave del servidor y el certificado de la CA, es decir srv_santiago.crt , srv_santiago.key , ca_santiago.crt

root@orex2:/# cd etc/lighttpd/ssl/aldana.seguridad.net.in/ root@orex2:/etc/lighttpd/ssl/aldana.seguridad.net.in# dir srv_santiago.crt srv_santiago.key ca_santiago.crt

- Luego copiamos las siguientes 3 lineas que tienen como objetivo, que el lighttpd no nos solicite el password de la llave cada vez que inicie el servidor

root@orex2:/etc/lighttpd/ssl/aldana.seguridad.net.in# cp srv_santiago.key srv_santiago.bak
root@orex2:/etc/lighttpd/ssl/aldana.seguridad.net.in# cp aldana.seguridad.net.in.pem srv_santiago.bak

root@orex2:/etc/lighttpd/ssl/aldana.seguridad.net.in# openssl rsa -in srv_santiago.key -out no.pwd.srv_santiago.key


Donde no.pwd.srv_santiago.key sera la llave sin el password


- Estando todavia sobre el directorio que acabamos de crear, generamos un archivo .pem (en mi caso aldana.seguridad.net.in.pem) el cual concatena la llave y el certificado:
root@orex2:/etc/lighttpd/ssl/aldana.seguridad.net.in# cat no.pwd.srv_santiago.key srv_santiago.crt >aldana.seguridad.net.in.pem

- Finalmente copiamos las siguientes 2 lineas para configurar los permisos del fichero creado

root@orex2:/etc/lighttpd/ssl/aldana.seguridad.net.in# chmod 0600 aldana.seguridad.net.in.pem
root@orex2:/etc/lighttpd/ssl/aldana.seguridad.net.in# chown root:root /etc/lighttpd/ssl/aldana.seguridad.net.in -R



Paso #4: Configuración de lighttpd.conf

Luego de tener creado el archivo aldana.seguridad.net.in.pem que es el que finalmente usara el servidor para extraer el certificado y la llave, no queda sino modificar el archivo de configuración del servidor web lighttps.conf

- Se abre /etc/lighttpd/lighttpd.conf y se le agregan las siguientes lineas:

$SERVER["socket"] == "aldana.seguridad.net:443" {
ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/ssl/aldana.seguridad.net.in/aldana.seguridad.net.in.pem" ssl.ca-file = "/etc/lighttpd/ssl/aldana.seguridad.net.in/ca_santiago.crt" server.name = "aldana.seguridad.net" server.document-root = "/var/www/sitiossl/" }

Donde:
$SERVER["socket"] == "aldana.seguridad.net:443"...indica el dominio y el puerto 443 de https
ssl.engine = "enable"...habilita ssl
ssl.pemfile = "/etc/lighttpd/ssl/aldana.seguridad.net.in/aldana.seguridad.net.in.pem"...la ruta del archivo .pem que creamos
server.name = "aldana.seguridad.net"...el dominio
server.document-root = "/var/www/sitiossl/"...la raiz del sitio que servirá el servidor web

- Luego ingresamos a /etc/hosts y agregamos la linea:

127.0.0.1 aldana.seguridad.net


Esto con el fin de tener asociado el dominio que sirve el servidor a la direccion ip de loop.

- Finalmente reiniciamos el servidor ingresando:

/etc/init.d/lighttpd restart

Si todo sale bien debe aparecer

root@orex2:~# /etc/init.d/lighttpd restart
* Stopping web server lighttpd [ OK ] * Starting web server lighttpd [ OK ]



Probando el servidor
- Con el mozilla entramos a la pagina https://aldana.seguridad.net e inicialmente nos aparece esto:

Firefox dice que se a producido un error por que el certificado del sitio web esta firmado por una CA desconocida.

- Al dar click en agregar excepcion lo que realmente estamos haciendo instalando el certificado de nuestro servidor web en el firefox, para que asi pueda mostrar la pagina.

Confirmando la excepcion de seguridad, el certificado quedara instalado y nunca mas firefox me volvera a decir que es desconocido, permitiendome asi realzar la conexion segura.

- Si damos click en ver podemos ver el contenido del certificado digital

Aqui se puede ver la informacion que le ingresamos al certificado a la hora de crearlo


- Ahora apenas acepto la excepcion puedo ver la pagina en https, es decir http segura. Tambien se puede observar como abajo a mano derecha de la ventana del navegador web aparece un candadito que indica que se tiene una conexion segura mediante certificado digital.


- Es interezante observar con un sniffer como el es trafico durante la peticion de esa pagina web segura. Y efectivamente vemos como los paquetes tienen su payload encriptado como se aprecia en la siguiente captura:



Asi entonces el certificado me sirvio no solo para la verificacion del sitio web, sino que tambien me permite tener una transmision de la pagina web de manera cifrada.
.
.
.
fin.

contador