miércoles, 17 de junio de 2009

Cambiar licencia de Windows utilizando una licencia por volumen

El plantemiento es el siguientes: Se requiere asistencia para realizar un cambio de clave de producto Windows en un equipo utilizando una licencia por volumen.
Aquí les presentaré dos soluciones para realizar dicha asistencia. Lo presentaré por medio de la CMD y de forma manual (Editando el registro de Windows).

Por medio de la CMD.

1. Ingresar al sitio FTP de Microsoft. Y descarga el archivo ChangeVLKey2600.vbs
2. Se copia el archivo ChangeVLKey2600.vbs en el directorio raíz C:\>
3. Ingresar a una ventana de Símbolo de Sistema. Clic Inicio > Ejecutar > cmd.
4. Posicionarse en la raíz del sistema (C:\>)
5. Ejecutar el siguiente comando: C:\>ChangeVLKey2600.vbs AAAAA-BBBBB-CCCCC-DDDDD-EEEEE (Donde corresponde a los 25 caracteres de su clave de producto).
6. Se reinicia el equipo con el fin aplicar los cambios efectuados.
7. Se ingresa al sitio FTP de Microsoft y se descarga el archivo MGADiag.exe.
8. Se ejecuta el archivo MGADiag.exe y se verifica el estado de la licencia en el sistema. Debe arrojarnos un resultado como el siguiente.
Estado de Validación: Genuino.
Clave de Producto: coincide con la clave de producto que se ha ingresado.

Por medio del registro.

1. Clic en Inicio > Ejecutar > regedit > Aceptar.
2. En el panel izquierdo, buscar la siguiente clave del Registro y haga clic en ella:
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\Current Version\WPAEvents.
4. En el panel derecho, haga clic con el botón secundario del mouse en OOBETimer. Clic en Modificar.
5. Cambie al menos un dígito de este valor para desactivar Windows.
6. Clic en Inicio > Ejecutar.
7. En el cuadro Abrir, escriba el siguiente comando y haga clic en Aceptar.
Oobe/msoobe /a
8. Clic en Sí, Deseo llamar por teléfono a un representante de servicios al cliente para activar Windows. Clic en Siguiente.
9. Clic en Cambiar la clave del producto.
10. Escriba la nueva clave del producto en los nueve cuadros de seis dígitos. Luego clic en Actualizar.

Si vuelve a la ventana anterior, haga clic en Recordármelo más tarde y reinicie el equipo.

Espero que les haya servido ésta información.

lunes, 2 de marzo de 2009

OpenSSL sobre GNU/Linux Debian

En éste post no explicaré en qué consiste el protocolo SSL, simplemente daré a conocer una forma muy eficiente de instalar OpenSSL en el sistema operativo GNU/Linux Debian.

Se debe tener algo en cuenta; si buscamos en Google por "Instalación y Configuración de OpenSSL en Debian" aparecerán muchos tutoriales de cómo hacer ésto, sin embargo muchos de éstos presentan comandos que no es necesario que se realicen.

Pongo el siguiente ejemplo: Nos daremos cuenta que muchas veces digitamos el comando x509 para firmar certificado, sin conocer que éste comando es para firmar certificados localmente, lo cual no tendría gracia. En terminos generales, debemos pensar en entornos reales, con varios equipos en red, si digitamos ese comando, simplemente estaremos firmando los certificado digitales a nivel local mas no a nivel de una LAN, etc, así que no nos serviriá de ésta forma.

Por ésto les explicaré la instalación de una forma que se emplea en entornos reales de red.

Debemos, como les decía para trabajar en entornos reales, instalar un DNS para que resuelva el nombre de la AC y los sitios Web a los que se le firmarán las respectivas peticiones de certificado.

Lo primero es instalar el paquete OPENSSL.

#apt-get install openssl

En la ruta /usr/lib/ssl/misc/CA.pl se encuentra el script para realizar la instalación de la Auntoridad Certificadora.

DEL LADO DE LA AC.

Primero ejecutamos el scrip para instalar la AC. Debemos tener en cuenta dónde nos encontramos parado en la consola, por lo que si nos paramos en /etc/ los directorios de la AC se instalarán en /etc/ Por ésto, en mi caso, me pararé en el directorio /opt/

/opt#/usr/lib/ssl/misc/CA.pl -newca

Aparecerá el siguiente enunciado.

CA certificate filename (or enter to create)

Presionamos enter para crear la autoridad la AC.

Enter PEM pass phrase: sena2009 (Establecemos la contraseña de la clave privada de la AC, luego la verificamos).
Country Name: CO (Digitamos las iniciales del pais).
State or Province Name: Antioquia (Digitar el Departamento o estado).
Locality Name: Medellin (Digitamos la localidad).
Organization Name: sena (Digitamos el nombre de la organización).
Orgainational Unit Name: teleinformatica (Digitamos el nombre de la unidiad organizativa).
Common Name: ca.rafa.com (Digitar el nombre común de la AC, el cual debe existir en los registro del DNS para que ésta pueda ser resuelta).
Email Address: admin@rafa.com (Digitar el correo del administrador de la red).
A challenge password: "Enter" (Ésto es para dar atributos extra a la AC).
An optional company name: "Enter".

Enter pass phrase for ./demoCA/private/cakey.pem: sena2009 (Digitar la contraseña que le establecimos al principio a la AC para poner a ésta en funcionamiento).

De inmediato podemos observar el sertificado que fué generado por la AC y firmado por ella misma.

Al instalar el directorio /opt/ creará el directorio "demoCA".

Para firmar peticiones de certificados debemos pararnos detras del directorio "demoCA". Para evitarnos ésta molestia, editamos el archivo de configuración de openssl para establecer la ruta obsoluta del directorio "demoCA".

#vim /etc/ssl/openssl.cnf

Buscamo el bloque [ CA_default ] justo debajo, cambiamos la linea.

dir = ./demoCA

Por.

dir = /opt/demoCA #(Ruta absoluta del directorio demoCA).

DEL LADO DEL SERVIDOR WEB.

En el servidor Web (Trabajaremos con Apache2) dentro del directorio apache2 crearemos el directorio "ssl" donde se almacenarán las llaves y certificados digitales de los sitios Web.

#mkdir /etc/apache2/ssl

Debemos crear un sitio Web, cuyo sitio Web debe estár escuchando por el puerto 443 (SSL), obviamente debemos poner también a apache por el puerto 443 en el archivo ports.conf (Se supone que ya debemos resolver éste problema de configuración). Les sugiero que comenten por completo el archivo /etc/apache2/sites-available/default para que no presente el problema que todo se esté redireccionando a "IT WORKS".

Ahora para hacer una petición de certificado a la AC.

Generamos la petición. Nos paramos dentro del directorio /etc/apache2/ssl/

#cd /etc/apache2/ssl/
#openssl req -newkey rsa:1024 -out req.sitioweb.pem

Digitamos la clave privada para éste sitio Web "12345", la verificamos y llenamos los datos correspondientes teniendo encuenta el Common Name será "sitioweb.dominio.com", el cual debe existir en los registro del DNS.

Ahora, en el directorio /etc/apache2/ssl/ aparecerá la llave privada del sitio Web "privkey.pem" y la petición de certificado "req.sitio.pem".

El "req.sitio.pem" o petición de certificado, se lo debemos enviar a la AC, ya sea por SCP, o por cualquier medio seguro.

DEL LADO DE LA AC.

Para firmar ésta solicitud de certificado, llevamos ésta solicitud al directorio /opt/demoCA/certs/ y nos posicionamos sobre el mismo.

#cd /opt/demoCA/certs/
#openssl ca -in req.sitio.pem -out cert.sitio.pem

Pedirá que digitemos la clave privada de la CA para que pueda firmas ésta petición "sena2009".

Si listamos el contenido del directorio "certs" podremos ver el certificado para éste sitio Web.

Ahora debemos enviarle éste certificado al servidor de Apache.

DEL LADO DEL SERVIDOR WEB.

Mover el certificado "cert.sitio.pem" al directorio /etc/apache2/ssl/

En el sitio Web que creamos debemos agregar los módulos SSL (En el sitio que pusimos a escuchar por el puerto 443 debemos).

#vim /etc/apache2/sites-available/sitioWeb

Agregar las siguientes líneas.

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cert.sitio.pem
SSLCertificateKeyFile /etc/apache2/ssl/privkey.pem

Ahora debemos habilitar el sitioWeb y los módulos SSL de Apache2

#a2ensite sitioWeb
#a2enmod rewrite
#a2enmod ssl

Reiniciamos el servicio de Apache2

#/etc/init.d/apache2 restart

Ahora debemos importar el certificado de la AC al navegador para que no presente ilegalidades al ingresar al sitioWeb.dominio.com. El certificado de la AC.

#/opt/demoCA/cacert.pem

Al momento de digitar en nuestro navegado https://sitioweb.dominio.com debe mostrarnos el contenido del sitio Web que creamos y de forma segura.

HACER QUE QUE EL SERVIDOR WEB REQUIERA CERTIFICADO POR PARTE DEL CLIENTE. DEL LADO DEL CLIENTE LINUX.

Para que el cliente Linux genere la petición de certificado, simplemente se genera de la misma forma como se genera una petición para un servicio Web. La sintanxis no cambia.

~#/openssl req -newkey rsa:1024 -out req.sitiocliente.pem

Igualmente se le enviá la petición de certificado "req.sitiocliente.pem" a la AC.

DEL LADO DE LA AC.

Movemos la petición de certificado de tal forma que lo ubiquemos en el directorio /opt/demoCA/certs/; y nos paramos en éste mismo.

Para firma la petición de certificado de un cliente, se debe firmar con una exetención diferente. Por lo tanto debemos habilitar ésta función en el archivo de configuración del servico OpenSSL.

#vim /etc/ssl/openssl.cnf

Buscar el bloque [ v3_req ] Cambiarlo de ésta forma.

[ v3_req ]

# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

A ésta.

[ v3_cliente ] # Extensions to add to a certificate request
basicConstraints = CA:FALSE

#keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = ClienteAuth

Ahora ya la AC está habilitada para firmar peticiones de certificados por parte del cliente. Para firmar el certificado.

#openssl ca -in req.sitiocliente.pem -extensions v3_cliente -out cert.sitiocliente.pem

La AC le pasa el certificado al cliente Linux.

DEL LADO DEL CLIENTE LINUX.

Ahora el cliente debe exportar el certifica al formato .p12 para ya que el formato .pem no es soportado por los navegadores (Convertir de .pem a .p12).

Ahora, se debe tener el certifcado del cliente "cert.sitiocliente.pem", el certificado de la AC "cacert.pem" y la llave privada "privkey.pem" que el cliente generó al momento de general la petición de certificado.

~#openssl pkcs12 -export -in cert.sitiocliente.pem -inkey privkey.pem -certfile cacert.pem -out cert.sitiocliente.p12

El certificado cert.sitiocliente.p12 es el que se importará al navegador.

Pero aún falta algo.

DEL LADO DEL SERVIDOR WEB.

Para que el sitio Web requiera certificado se procede con la siguiene configuración.

#mkdir /etc/apache2/sslcacerts

Debemos obtener el certificado de la AC y ponerlo en la ruta /etc/apache2/sslcacerts/

Editar el sitio Web que está seguro.

#vim /etc/apache2/sites-available/sitioWeb

Agregar las siguientes líneas.

SSLCACertificatePath /etc/apache2/sslcacerts/
SSLVerifyClient require

Reiniciamos el servicio Web, y ya deberían funcionar todos éstos requerimientos.
Se dieron cuenta que no fué necesario de darle el comando x509?

Listo. Ya hemos configurado OpenSSL de una forma adecuada.

martes, 3 de febrero de 2009

Script mensajes de los usuarios conectados por SSH

Par darnos cuenta, cuándo un usuario se conecta a nuestra máquina por SSH, debemos generar el siguiente scrip en el archivo /etc/profiles.

###################
if [ "$REMOTEHOST" = "localhost" ]; then
echo "log local: no se notifica"
else
USUARIO=`id |awk '{print $1}'|sed -e 's/.*(//'|sed -e 's/)//'`
FECHA=`date`
echo "Usuario $USUARIO desde $REMOTEHOST en $FECHA" | mail -s 'Log de usuario' root@localhost
fi
###################


Para visualizar los mensajes, se debe digitar.

#tail -f /var/mail/usuario

Listo. Listo.

lunes, 2 de febrero de 2009

SSH

Según la Wikipedia Secure SHell ó Intérprete de Comandos Seguro. Es el nombre de un protocolo y de la aplicación que lo implementa. Sirve para acceder a otras máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un servidor X (en sistemas Unix) corriendo.
Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.

DIFERENCIA ENTRE SSH1 Y SSH2

SSH1 y SSH2 son incompatibles entre si. Son dos protocolos completamente diferentes.
  • Encriptan diferentes partes de los paquetes.
  • SSH1 usa las claves del cliente y del servidor para autenticar, mientras que SSH2 solo usa las claves de la parte cliente.
  • SSH2 es una reescritura completa del protocolo usado por SSH1, cambiando incluso la implementación a nivel de red, haciéndolo más portable y seguro.
  • SSH2 es mas seguro que SSH1.


Se puede observar que SSH2 no incorpora DES ya que es posible romperlo por fuerza bruta. Tampoco hace uso de IDEA ya que es un algoritmo patentado en varios países. Blowfish, Twofish son sistemas de cifrado rápido de bloque. Arcfour es un algoritmo compatible con RC4 de RSA.

Listo. Ya hemos visto las diferencias entre SSH1 y SSH2

viernes, 30 de enero de 2009

GNUPG

Según la Wikipedia GPG o GNU Privacy Guard es una herramienta para cifrado y firmas digitales, que viene a ser un reemplazo del PGP (Pretty Good Privacy) pero con la principal diferencia que es software licenciado bajo la GPL. GPG utiliza el estándar del IETF denominado OpenPGP.
GNUPG EN LINUX.

Por defecto, Linux trae el paquete GnuPG instalado.

GNUPG EN WINDOWS.


Al contrario que Linux, Windows no trae ésta utilidad por defecto. Sin embargo aquí podemos descargar ésta aplicación.

COMANDOS GNUPG.

Los camandos de GPG tanto en Linux como en Windows son los mismos; con la condición que en Windows nos debemos establecer con la consola cmd en la ruta C:\Archivos de Programas\GPG\GnuPG\ para que el comando gpg se pueda ejecutar.

La dirección de nuestro servidor de llaves públicas.
www.rediris.es/keyserver/

Generar el par de llaves.
#gpg --gen-key

Exportar la llave a un archivo .asc local (Archivo que queda en la máquina local).
#gpg -a -o mi_llave.asc --export correo@dominio.com

Enviar la llave a un servidor de llaves públicas.
#gpg -keyserver pgp.rediris.es --send-key ID

Exportar llave privada a un archivo local.
#gpg -a -o mi_llave_privada.asc --export-secret-key Correo.

Importar la llave pública de otro usuario teniendo el archivo .asc de la llave pública de ese otro usuario.
#gpg --import ruta_de_la_llave_pública

Importar la llave pública de otro usuario desde el servidor de llaves públicas.
#gpg --keyserver pgp.rediris.es --recv-key ID

Firmar la llave pública de otros usuarios.
#gpg --sing-key correo@dominio.com

Cifrar un archivo a formato .asc (ASCII).
#gpg -e -a ruta_del_archivo

Desencriptar un archivo (Aplica para archivos de texto plano).
#gpg -d ruta del archivo

Para desencriptar archivos con extenciones de procesamiento (.jpg, .doc, .ppt, etc).
#gpg -d ruta_del_archivo > archivo.extención.

Crear una frirma digital en un texto claro.
#gpg --clearsign -a prueba.txt

Crear una firma digital en un archivo aparte con el fin de no dañar el archivo original.
#gpg -b -a archivo_a_cifrar.

Verificar la firma digital.
#gpg --verify firma.asc

Crear y enviar certificado de revoke.
#gpg -l certificado.asc --gen-revoke Correo.
#gpg --import certificado.asc
#gpg --keyserver pgp.rediris.es --send-keys ID


Descargar los cambios de nuestra llave pública.
#gpg --keyserver pgp.rediris.es --refresh-keys

Visualizar llaves firmadas.
#gpg --check-sigs

Eliminar llave privada.
#gpg --delete-secret-keys ID

Eliminar llave pública.
#gpg --delete-keys ID

Visualizar nuestra llave privada.
#gpg -K

Visualizar nuestra llave pública.
#gpg -k

Cifra los datos de forma simétrica.
#gpg --symmetric archivo_a_cifrar.

Listo. Ya hemos creado nuestras llaves asimétricas.
HASH

Según la WikiPedia Hash se refiere a una función o método para generar claves o llaves que representen de manera casi unívoca a un documentos, registro, archivo, etc., resumir o identificar un dato a través de la probabilidad, utilizando una función hash o algoritmo hash. Un hash es el resultado de dicha función o algoritmo.

MD5SUM.

Es un programa originario de los sistemas Unix que tiene versiones para otras plataformas, realiza un Hash MD5 de un archivo.

En los Sistema Operativos Unix ya víene éste paquete instalado. Sin embargo, en los Sistemas Operativos Windows no lo traen instalado, por lo tanto se debe descargar un ejecutable de MD5SUM para Windows. Aquí podras descargar dicho ejecutable.

MD5SUM EN LINUX.

Para entender un poco mas el funcionamiento, relizarémos una prueba sobre Linux.

Crear un archivo .txt el cual será llamado prueba.txt El contenido de éste archivo será el siguiente: "Realizando pruebas de Hash con MD5SUM".

#pico prueba.txt

Se le aplicará el Hash a éste archivo.

#md5sum prueba.txt

Aparecerá el ID Hash (Longitud de 128 bits) de éste archivo.

162819d9d418858c84d9a311fc562d61 prueba.txt

Si se modifica éste archivo, de inmediato cambiará el ID de Hash.

Por seguridad, en nuestro servidor se deben tener en cuenta algunos binarios de importacia (su, passwd, who, last, finger, cat, rm, etc), ya que otra persona podría modificarlos y no nos daríamos cuenta que dicho binario fué modificado.

Para ésto, ser realizará una prueba, aplicando el Hash del binario "su".

Para localizar la ruta del binario "su".

#whereis -b su

Aparecerá la ruta del binario "su".

su: /bin/su

Se aplica el Hash para éste binario.

#md5sum /bin/su > hash2.md5

Si se rebisa el archivo hash2.md5 aparecerá el ID del Hash para el binario "su".

Para comprobar si el binario "su" fué modificado.

#md5sum -c hash2.md5

Si el binario "su" no fué modificado, arrojará el siguiente resultado.

/bin/su: La suma coincide

Si el binario "su" fué modificado, arrojará el siguiente resultado.

md5sum: ADVERTENCIA: 1 de 1 suma de comprobación NO coincide

MD5SUM EN WINDOWS.

Se le aplicará el Hash al binario "explorer.exe", para ésto debemos alojar el ejecutable md5sum.exe en el directorio WINDOWS, ya que en éste se encuentran los binarios de Windows.

Abrir una consola cmd y establecerce en la siguiente ruta.

C:\WINDOWS>

Aplicar el Hash al binario "explorer.exe" y redireccionar el resultado al archivo prueba2.txt.

>md5sum.exe explorer.exe > prueba2.txt

Se debe realizar la comprobación de éste binario.

>md5sum.exe -c prueba2.txt

Si el binario "explorer.exe" no fué modificado, arrojará el siguiente resultado.

explorer.exe: OK

Si el binario "explorer.exe" fué modificado, arrojará el siguiente resultado.

md5sum.exe: ADVERTENCIA: 1 de 1 suma de comprobación NO coincide

TRABAJO EN CLASES.

Para éste trabajo, se debieron aplicar el Hast a los binarios su, passwd, who, last, finger, cat, rm para luego ser comprobado en los siguientes días.

Los resultados que se obtuvieron de ésta actividad fueron.

c80fc747e24fa8bfa099cbef0bfb926f /bin/su
c8ac6697d277834b595999c7e07accfa /usr/bin/passwd
0d8407e9d81be4e9584d33fa199c34c3 /usr/bin/who
1c05a01c68de5254a9a1d0c96395b503 /usr/bin/last
3e00cf1db98ce4556f384a40337d7fd8 /usr/bin/finger
02243884855697c23aa0489cad07b631 /bin/cat
866de31e7c3668a67e490f9538547def /bin/rm

Listo. Ya se ha entendido del funcionamiento del Hash utilizando la herramienta MD5SUM.