jueves, 29 de mayo de 2008

How-to OpenSSL

HOW-TO OpenSSL

Comenzaremos instalando una entidad certificadora:


Se instala openssl

#apt-get install openssl

  1. Crear los siguientes directorios dentro de el directorio /etc/ssl/

    certificadora/

    certificadora/certs

    certificadora/private

    certificadora/newcerts

    certificadora/crl

    *”certificadora/” es un nombre de directorio que puede variar según el criterio de quien configure la entidad en contraste los subdirectorios de la misma deben tener los nombres señalados en este how-to.


    #mkdir -p /etc/ssl/certificadora/certs

    #cd etc/ssl/certificadora/

    #mkdir private newcerts crl

  1. luego de esto ingresamos al archivo de configuracion del openssl /etc/ssl/openssl.cnf

    #pico /etc/ssl/openssl.cnf

  2. en el archivo (/etc/ssl/openssl.cnf) encontraremos las siguientes lineas (los numeros en negrilla son el numero de cada linea en el archivo):

    37 dir = /etc/ssl/certificadora

    38 certs = /etc/ssl/certificadora/certs

    39 crl_dir = /etc/ssl/certificadora/crl

    40 database = /etc/ssl/certificadora/index.txt

    43 new_certs_dir = /etc/ssl/certificadora/newcerts

    45 certificate = /etc/ssl/certificadora/pub.crt

    46 serial = /etc/ssl/certificadora/serial

    50 private_key = /etc/ssl/certificadora/private/priv.key

    68 default_days = 365 # dias en que caduca el certificado

  3. Por ultimo generamos un certificado para nuestro CA (entidad certificadora).

#openssl req -nodes -new -keyout midominio.key -out midominio.csr

Luego lo firmamos

    #openssl ca -out midominio.crt -in midominio.csr

    Con esto tenemos lista la entidad certificadora y estamos listos para comenzar a firmar certificados.



Generar Certificados De Cliente:

    El certificado se crea desde el equipo cliente de la siguiente manera

$openssl req -x509 -newkey rsa:2048 -keyout cakey.pem -days 365 -out cacert.pem


* Con este comando ademas de generar el certificado tambien generamos las llaves publica y privada del servidor, si ya tienes tus llaves omite la parte -newkey rsa:2048 de esta manera solamente generara el certificado.


solo falta enviarlo a la entidad certificadora nosotros para hacer esto utilizamos ssh:


$scp cacert.pem root@[aqui la ip de el CA]:/tmp


para hacer esto se necesita tener pasword de root, en caso de que no seas el adminisrtador de la entidad certificadora y no tengas contraseña de root por obvias razones puedes pasar tu certificado con otro usuario para esto le dises al administrador de el CA te cree un usuario y lo copias de la siguiente manera


ejemplo


$scp cacert.pem miuser@[aqui la ip de el CA]:/home/miuser


ya solo falta que la CA (entidad certificadora) firme el certificado (valga la redundancia) y nos devuelva el certificado ya firmado.



Firma De Certificados Por La Entidad Certificadora


Despues de generar los certificados como cliente es necesario que una entidad certificadora los firme.

El certificado que vamos a firmar es el mismo que generamos en el ejemplo anterior cacert.pem.


El comando para firmar es facil:


#openssl ca -out certfirmado.crt -in cacert.pem


La interpretacion tambien es sencilla, simplemente le dijimos a la entidad certificadora que tome el certificado cacert.pem, lo firme y lo exporte a un certificado nuevo en este caso llamado certfirmado.pem el cual seria el certificado ya firmado y el que habria que instalar en nuestro sitio web.




Integrar OpenSSL Con Un Servidor Web


Ahora solo queda integrar openSSL con nuestro servidor web, para la prueba utilizaremos apache 2.6 (obviaremos la instalacion y configuracion del apache asi que daremos por hecho que ya tienes configurado tu servidor web).


Teniendo en cuenta que ya tu servidor web esta corriendo y puedes acceder a el normalmente procederemos a agregarle la seguridad SSL, para esto agregamos las siguientes lineas en el archivo /etc/apache2/sites-available/default:


NameVirtualHost *:443

ServerAdmin sgarcia@misena.edu.co

DocumentRoot /var/www/

SSLEngine on

SSLCertificateFile /etc/ssl/certfirmado.crt [ruta del certificado firmado]

SSLCertificateKeyFile /etc/ssl/cakey.pem [ruta de la llave privada creada] anteriormente

ServerName mypage.mydomain.com

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all


Ahora debemos cargar los modulos de SSL en Apache


#a2enmod


Lo que sigue ahora es iniciar el Apache con SSL


#/etc/init.d/apache2 force-reload (Con este comando forzamos a Apache a cargar los modulos de SSL)


Ahora podemos proceder a probar si aun tenemos acceso normalmente a nuestro sitio web y notaran que se puede acceder tanto con HTTP como con HTTPS, pero al ingresar con este nos saca un aviso que nos dice que la pagina web solicitada tiene un certificado firmado por una entidad desconocida y pide autorizacion del usuario para ingresar.

Para que esto no suceda mas debemos instalar el certificado de la entidad certificadora en nuestro navegador.

En Mozilla Firefox se hace de la siguiente manera:

  • Editar

  • Preferencias

  • Avanzado

  • Cifrado

  • Ver certificados

  • Autoridades

  • Importar

Despues de esto podremos ingresar normalmente a la pagina con HTTPS.

© 2008, Stiven Garcia, Andres Uran, Andres Ruiz, Ferney Martinez

Este how-to Esta licenciado bajo los terminos de creative commons



Descarga este How-to en formato pdf aqui

miércoles, 28 de mayo de 2008

Configurar DHCP En Router Cisco

Encontre un muy buen manual para configurar un DHCP (Dynamic Host Configuration Protocol) en un router Cisco. La verdad no se exactamente para que modelos de router aplica ni para que version del IOS pero esta muy bien elaborado y puede ser muy util para el aprendizaje.

"Pues como bien indica el título del post vamos a configurar el servicio DHCP en un router Cisco (los comandos son del IOS de Cisco pero desconozco si seran iguales en otros routers).

Antes de nada recordar los modos principales en los que podemos introducir comandos en el router:

Modo usuario:
Router>

Modo privilegiado:
Router#

Modo de configuracion global:
Router(config)#

Modo de interface:
Router(config-if)#

De momento con estos bastará que son los principales.
Ahora ya vamos a poner el ejercicio en la siguiente red:

Comandos Obligatorios

Router(config)#service dhcp
(ejecutamos el servicio)
Router(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.10
(Le damos un rango de ips a excluir del direccionamiento, ambos inclusivos)
Router(config)#ip dhcp pool LAN_AWO
(le damos un nombre al ámbito de direccionamiento)
Router(DHCP-config)#network 192.168.1.0 255.255.255.0
(le decimos el ámbito de LAN_AWO en este caso)
Router(DHCP-config)#default-router 192.168.1.1
(señalamos la ip que vamos a indicarle a los host como puerta de enlace)
Router(DHCP-config)#lease 10
(el tiempo de "alquiler" que damos de ip a los hosts, de 1 a 365 dias.Nose si es obligatorio este comando la verdad)

Comandos Opcionales

Router(DHCP-config)#dns-server 192.168.1.2
(indicamos la ip del servidor DNS que utilizaran los hosts)
Router(DHCP-config)#netbios-name-server 192.168.1.3
(y el servidor netbios, estas ips suelen ponerse del rango de ips excluidas que dimos anteriormente para que no haya conflictos)
Router(DHCP-config)#domain-name awoisoak.org
(Les damos un nombre de dominio)
Router(DHCP-config)#option 150 ip 192.168.15.3
(para indicar el servidor (puede ser externo) de un tipo de servicio,en este caso el 150, para dispositivos especiales como los teléfonos ip)

Los hosts tienen que estar configurados para el servicio DHCP y la interfaz del router que funciona como puerta de enlace tenemos que configurarla nosotros a mano:

Router(config)#interface fasethernet0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown

Para ver si el servicio está bien configurado disponemos de los siguientes comandos:

Router#show ip dhcp conflict
Router#show ip dhcp binding
Router#show ip dhcp server statistics

Si quisieramos agregar otra interfaz al router y configurar esta tambien mediante DHCP tendríamos que crearnos otro pool distinto del LAN_AWO en este caso.

Por último dada esta otra topología:


El router que no dispone del servicio DHCP quisiera que su red LAN se configurase por este servicio brindado por el primer router deberíamos de configurar una nueva Pool en el primer router (definiendo la red 192.168.3.0) y en la interfaz .1 del segundo router ejecutar el siguiente comando:

Router(config-if)#ip helper-address ip next-hop

Donde dicha ip sería en este caso la interfaz serial del router con DHCP.
Este último comando lo podemos usar para las siguientes peticiones de servicios UDP :
  • DHCP
  • Time
  • TACACS
  • DNS
  • TFTP
  • Netbios
Para los demas servicios UDP ejecutariamos de la misma manera el siguiente comando:
Router(config-if)#ip forward-protocol udp nºpuerto"

Tomado de:
http://awoisoak.blogspot.com/2005/04/configurar-dhcp-en-router-cisco.html

martes, 27 de mayo de 2008

Consiguiendo Acceso De Administrador En Windows Vista

Me entere de un simpático exploit para Windows Vista que deja sorprendido por su simpleza. Se trata de conseguir acceso de administrador a un sistema Windows sin necesidad de conocer el nombre o la clave de ningún usuario. Para conseguirlo, parece ser que simplemente hay que renombrar la aplicación 'cmd.exe', la consola de Windows de toda la vida, a 'Utilman.exe', el Utility Manager (previo guardado de seguridad del 'Utilman.exe', claro :P). Todo ello puede hacerse de manera totalmente trivial desde la consola de cualquier distribución live de Linux o ¿por qué no? de FreeBSD. :) Aquí está el vídeo con la demostración.

Tomado de:
www.barrapunto.com

lunes, 12 de mayo de 2008

SSL

SSL proporciona autenticación y privacidad de la información entre extremos sobre Internet mediante el uso de criptografía. Habitualmente, sólo el servidor es autenticado (es decir, se garantiza su identidad) mientras que el cliente se mantiene sin autenticar; la autenticación mutua requiere un despliegue de infraestructura de claves públicas (o PKI) para los clientes. Los protocolos permiten a las aplicaciones cliente-servidor comunicarse de una forma diseñada para prevenir escuchas (eavesdropping), la falsificación de la identidad del remitente(phishing) y mantener la integridad del mensaje.

SSL implica una serie de fases básicas:

Durante la primera fase, el cliente y el servidor negocian qué algoritmos criptográficos se van a usar. Las implementaciones actuales proporcionan las siguientes opciones:

Definicion tomada de www.wikipedia.org