Administracion de Redes

Administracion de Redes
En este blog encontraran todo lo relacionado con el modulo de seguridad de administracion de redes, aunque tambien encontraran documentos relacionados con tecnologia e informatica.

jueves, 8 de mayo de 2008

CABLE LOOPBACK

Creacion de un cable loopback:

Un cable loopback es cable que simula a la interface de red que esta transmitiendo y por lo tanto cree que esta conectado a una red y muestra el led de conexion transmitiendo.

Este cable cumple esta funcion por que al crearlo se interconectan en un estremo, haciendo que por los mismos cables trasmita y reciba.


El cable esta hecho asi:

Por un lado del cable normal; rj45, directo:

blaco naranja.

Naranja.

blanco verde.

Azul.

blanco azul.

Verde.

blaco cafe.

Cafe.


Por el lado posterior sin rj45, pelar los cable y unirlos de la siguiente manera:

-verde, blanco naranja.

-naraja, blanco verde.

-blanco azul, azul.

-blanco cafe, cafe.

PROBLEMAS CON OPENSSL

Problema con la coincidencia de las organizaciones:


Cuando intentamos firmar alguna peticion de certificado no nos deja sacando un error de coincidencia.

Lo que debemos hacer es entrar al archivo de configuracion openssl.cnf, luego buscamos las lineas:


# For the CA policy

[ policy_match ]

countryName = match

stateOrProvinceName = match

organizationName = match

commonName = supplied



y comentarlas asi:

# For the CA policy

[ policy_match ]

#countryName = match

#stateOrProvinceName = match

#organizationName = match

#commonName = supplied


ya nos dejera certificar con cualquiera CA.


ENTIDAD CERTIFICADORA EN LINUX/DEBIAN

Creacion de una Entidad certificadora personal con OpenSSL


Gracias a OpenSSL podemos tener comunicacion encriptada entre diferentes maquinas utilizando criptologia asimetrica, es decir, claves publicas y privadas. Ademas, es posible montar entidades certificadoras que se encarguen de asegurar que una llave pertenece a quien dice pertenecer, de esta forma conseguimos encriptacion y autentificacion.


Las entidades certificadoras actuales cobran por el servicio de firma de llaves y no suele ser precisamente asequible. Por otro lado, montar una entidad certificadora oficial tambien resulta muy costoso ya que se demandan unas ciertas garantias que destras del negocio hay una cierta seguridad. Por tanto, es habitual que los administradores de pequeñas redes se creen su propios certificados para firmar sus claves. De esta forma podremos disponer de comunicaciones encriptadas sin necesidad de entidades certificadoras.


Estas entidades oficiales pagan para que aparezcan por defecto sus certificados en navegadores como Mozilla Firefox o Internet Explorer. De esta forma el propio navegador puede comprobar automaticamente que cuando se conecta a un sitio seguro, el certificado que recibe ha sido realmente firmado por una entidad oficial. Eso implica que nuestros certificados no seran reconocidos automaticamente por los navegadores a no ser que los añadamos manualmente, el unico inconveniente que aporta esto es que el navegador mostrara un aviso extra al usuario (dependiendo de la configuracion) advirtiendo que no reconoce la entidad certificadora.


Vamos a ver como configurar OpenSSL para montar nuestro servicio de certificacion personal. Lo primero es tener OpenSSL instalado en el sistema:

#apt-get install openssl


La configuracion la encontraremos en /etc/ssl y sera halla donde editemos el archivo openssl.cnf


Pongo un extracto del archivo con lo mas importante:

...


[ ca ]

default_ca = CA_default


[ CA_default ]

dir = /etc/ssl/certificadora # Where everything is kept

certs = $dir/certs # Where the issued certs are kept

crl_dir = $dir/crl # Where the issued crl are kept

database = $dir/index.txt # database index file.

new_certs_dir = $dir/newcerts # default place for new certs

certificate = $dir/pub.crt # The CA certificate

serial = $dir/serial # The current serial number

crl = $dir/crl.pem # The current CR

private_key = $dir/private/priv.key # The private key

default_days = 30

...


En esta seccion del fichero se define donde se va a almacenar toda la informacion, en mi caso lo guardare todo en /etc/ssl/certificadora. Dentro de ese directorio creare toda una serie de subdirectorios que guardaran la informacion necesaria e imprescindible como por ejemplo el certificado o clave de la entidad (tanto privada como publica). Tambien he puesto que por defecto que se generen claves con un periodo de caducidad de 30 dias.


Tendremos que crear la estructura de directorios y ficheros:

#mkdir /etc/ssl/certificadora/

#mkdir /etc/ssl/certificadora/certs

#mkdir /etc/ssl/certificadora/private

#mkdir /etc/ssl/certificadora/newcerts

#mkdir /etc/ssl/certificadora/crl

#echo "01" > /etc/ssl/certificadora/serial

#touch /etc/ssl/certificadora/index.txt


A continuacion crearemos la clave publica/privada de nuestra entidad certificadora:

#cd /etc/ssl/certificadora/

#openssl req -nodes -new -x509 -keyout private/priv.key -out pub.crt -days 30


Es importante especificar el mismo nombre para la clave privada (priv.key) y publica (pub.crt) que pusimos en nuestra configuracion de OpenSSL. En cuanto a las preguntas que nos haga para generar la clave:


Country Name (2 letter code) [ES]:

State or Province Name (full name) [Catalunya]:

Locality Name (eg, city) :Tarragona

Organization Name (eg, company) [Marble Station]:

Organizational Unit Name (eg, section) :Ejemplo

Common Name (eg, YOUR name) :midominio.com

Email Address :admin@midominio.com


Cabe destacar que en Common Name debemos poner el nombre de dominio correspondiente a la maquina donde estara la entidad certificadora.


Ahora ya tenemos nuestro servicio de certificaciones montado, las claves que hemos generado nos serviran para firmar terceras claves que seran utilizadas por ejemplo por los diferentes ordenadores de nuestra red.


Imaginemos que en el mismo servidor donde hemos montado nuestros certificados para firmar, tenemos un servidor web Apache seguro (SSL) y necesitamos un certificado firmado por nuestra entidad personal. Lo primero que tendremos que hacer sera crear una peticion de certificado junto a una clave privada:

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


Nos volvera a realizar las respectivas preguntas, debemos responder acorde para la maquina donde se va a utilizar la clave. En midominio.key tendremos la clave privada generada y en midominio.csr la peticion de certificado. La entidad certificadora solo necesita acceso al segundo, vamos a generar ahora el certificado firmado por nuestra entidad personal:

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


Esto generara el archivo midominio.crt con el certificado firmado listo para ser usado por el solicitante. Ademas se guardara informacion referente al certificado firmado en /etc/ssl/certificadora de forma que siempre tendremos un listado de todo lo que hemos firmado, tambien podremos revocar firmas (man openssl) en caso de que sea necesario.


Habitualmente suelo ubicar los certificados de servicios en /etc/ssl/certs y /etc/ssl/private de la maquina que los vaya a usar:

#mv midominio.crt /etc/ssl/certs

#mv midominio.key /etc/ssl/private


La peticion de certificado midominio.csr no lo vamos a necesitar mas puesto que ya hemos generado el certificado.


Ahora podriamos seguir generando nuevos certificados para despues firmarlos y repartirlos entre las maquinas de nuestra red que dispongan de servicios con conexion segura.


Copiamos el archivo que vamos a certificar, que bebio ser firmado por el servidor web que vamos a certificar, a la ruta /etc/ssl/certificadora:

#cp /tmp/peludo.crs /etc/ssl/certificadora


Luego lo certificamos:

#openssl ca -out andres.crt -in peludo.csr



En resumen, hemos llevado a cabo dos acciones:

1. Generacion de los certificados de nuestra entidad certificadora no oficial (clave publica pub.crt y clave privada priv.key), se guardara toda la informacion en /etc/ssl/certificadora/

2. Generacion de certificados firmados para los servicios o maquinas de nuestra red, se guardara automaticamente la informacion necesaria en /etc/ssl/certificadora/ y la clave publica/certificado firmado se guardaran en la maquina que los vaya a usar (/etc/ssl/certs, /etc/ssl/private respectivamente):

1. Generacion de una clave privada (midominio.key) con peticion de certificado (midominio.csr).

2. Firma de la peticion con nuestro certificado de entidad.

3. El solicitante recibira su certificado firmado (midominio.crt) que usara en conjunto con su clave privada para su servicio (podremos eliminar la peticion midominio.csr).




miércoles, 30 de abril de 2008

Terminos de seguridad Criptografica


Secure Sockets Layer (SSL) y Transport Layer Security (TLS)
Seguridad de la Capa de Transporte-, su sucesor, son protocolos criptográficos que proporcionan comunicaciones seguras en Internet.
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 garanti
za 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:

Funcion
El protocolo SSL intercambia registros; opcionalmente, cada registro puede ser comprimido, cifrado y empaquetado con un código de autentificación del mensaje (MAC). Cada registro tiene un campo de content_type que especifica el protocolo de nivel superior que se está usando.
Cuando se inicia la conexión, el nivel de registro encapsula otro protocolo, el protocolo handshake, que tiene el content_type 22.

El cliente envía y recibe varias estructuras handshake:

  • Envía un mensaje ClientHello especificando una lista de conjunto de cifrados, métodos de compresión y la versión del protocolo SSL más alta permitida. Éste también envía bytes aleatorios que serán usados más tarde (llamados Challenge de Cliente o Reto). Además puede incluir el identificador de la sesión.

  • Después, recibe un registro ServerHello, en el que el servidor elige los parámetros de conexión a partir de las opciones ofertadas con anterioridad por el cliente.

  • Cuando los parámetros de la conexión son conocidos, cliente y servidor intercambian certificados (dependiendo de las claves públicas de cifrado seleccionadas). Estos certificados son actualmente X.509, pero hay también un borrador especificando el uso de certificados basados en OpenPGP.

  • El servidor puede requerir un certificado al cliente, para que la conexión sea mutuamente autenticada.

  • Cliente y servidor negocian una clave secreta (simétrica) común llamada master secret, posiblemente usando el resultado de un intercambio Diffie-Hellman, o simplemente cifrando una clave secreta con una clave pública que es descifrada con la clave privada de cada uno. Todos los datos de claves restantes son derivados a partir de este master secret (y los valores aleatorios generados en el cliente y el servidor), que son pasados a través una función pseudoaleatoria cuidadosamente elegida.

TLS/SSL poseen una variedad de medidas de seguridad:

  • Numerando todos los registros y usando el número de secuencia en el MAC.

  • Usando un resumen de mensaje mejorado con una clave (de forma que solo con dicha clave se pueda comprobar el MAC). Esto se especifica en el RFC 2104).

  • Protección contra varios ataques conocidos (incluidos ataques man in the middle attack), como los que implican un degradado del protocolo a versiones previas (por tanto, menos seguras), o conjuntos de cifrados más débiles.

  • El mensaje que finaliza el protocolo handshake (Finished) envía un hash de todos los datos intercambiados y vistos por ambas partes.

  • La función pseudo aleatoria divide los datos de entrada en 2 mitades y las procesa con algoritmos hash diferentes (MD5 y SHA), después realiza sobre ellos una operación XOR. De esta forma se protege a sí mismo de la eventualidad de que alguno de estos algoritmos se revelen vulnerables en el futuro.

Aplicacion
SSL se ejecuta en una capa entre los protocolos de aplicación como HTTP, SMTP, NNTP y sobre el protocolo de transporte TCP, que forma parte de la familia de protocolos TCP/IP. Aunque pueda proporcionar seguridad a cualquier protocolo que use conexiones de confianza (tal como TCP), se usa en la mayoría de los casos junto a HTTP para formar HTTPS. HTTPS es usado para asegurar páginas World Wide Web para aplicaciones de comercio electrónico, utilizando certificados de clave pública para verificar la identidad de los extremos.
Aunque un número creciente de productos clientes y servidores pueden proporcionar SSL de forma nativa, muchos aún no lo permiten. En estos casos, un usuario podría querer usar una aplicación SSL independiente como Stunnel para proporcionar cifrado. No obstante, el recomendó en 1997 que los protocolos de aplicación ofrecieran un forma de actualizar a TLS a partir de una conexión sin cifrado (plaintext), en vez de usar un puerto diferente para cifrar las comunicaciones – esto evitaría el uso de envolturas (wrappers) como Stunnel.
SSL también puede ser usado para tunelar una red completa y crear una red privada virtual (VPN), como en el caso de OpenVPN.




Transmission Control Protocol (TCP)
TCP (Transmission Control Protocol, en español Protocolo de Control de Transmisión) es uno de los protocolos fundamentales en Internet. Fue creado entre los años 1973 - 1974 por Vint Cerf y Robert Kahn). Muchos programas dentro de una red de datos compuesta por ordenadores pueden usar TCP para crear conexiones entre ellos a través de las cuales enviarse un flujo de datos. El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo orden en que se transmitieron. También proporciona un mecanismo para distinguir distintas aplicaciones dentro de una misma máquina, a través del concepto de puerto. TCP da soporte a muchas de las aplicaciones más populares de Internet, incluidas HTTP, SMTP y SSH.

Funciones de TCP
En la pila de protocolos TCP/IP, TCP es la capa intermedia entre el protocolo de internet (IP) y la aplicación. Habitualmente, las aplicaciones necesitan que la comunicación sea fiable y, dado que la capa IP aporta un servicio de datagramas no fiable (sin confirmación), TCP añade las funciones necesarias para prestar un servicio que permita que la comunicación entre dos sistemas se efectúe: libre de errores, sin pérdidas y con seguridad.

Formato de los Segmentos TCP
En el nivel de transporte, los paquetes de bits que constituyen las unidades de datos de protocolo o PDU (protocol data unit) se llaman segmentos.
Las aplicaciones envían flujos de bytes a la capa TCP para ser enviados a la red. TCP divide el flujo de bytes llegado de la aplicación en segmentos de tamaño apropiado (normalmente esta limitación viene impuesta por la unidad máxima de transferencia (MTU) del nivel de enlace de datos de la red a la que la entidad está asociada) y le añade sus cabeceras. Entonces, TCP pasa el segmento resultante a la capa IP, donde a través de la red, llega a la capa TCP de la entidad destino. TCP comprueba que ningún segmento se ha perdido dando a cada uno un número de secuencia, que es también usado para asegurarse de que los paquetes han llegado a la entidad destino en el orden correcto. TCP devuelve un asentimiento por bytes que han sido recibidos correctamente; un temporizador en la entidad origen del envío causará un timeout si el asentimiento no es recibido en un tiempo razonable, y el (presuntamente desaparecido) paquete será entonces retransmitido. TCP revisa que no haya bytes dañados durante el envío usando un checksum; es calculado por el emisor en cada paquete antes de ser enviado, y comprobado por el receptor.

Funcionamiento del protocolo en detalle
Las conexiones TCP se componen de tres etapas: establecimiento de conexión, transferencia de datos y fin de la conexión. Para establecer la conexión se usa el procedimiento llamado negociación en tres pasos (3-way handshake). Una negociación en cuatro pasos (4-way handshake) es usada para la desconexión. Durante el establecimiento de la conexión, algunos parámetros como el número de secuencia son configurados para asegurar la entrega ordenada de los datos y la robustez de la comunicación.

Establecimiento de la conexión (negociación en tres pasos)
Aunque es posible que un par de entidades finales comiencen una conexión entre ellas simultáneamente, normalmente una de ellas abre un socket en un determinado puerto tcp y se queda a la escucha de nuevas conexiones. Es común referirse a esto como apertura pasiva, y determina el lado servidor de una conexión. El lado cliente de una conexión realiza una apertura activa de un puerto enviando un segmento SYN inicial al servidor como parte de la negociación en tres pasos. El lado servidor respondería a la petición SYN válida con un paquete SYN/ACK. Finalmente, el cliente debería responderle al servidor con un ACK, completando así la negociación en tres pasos (SYN, SYN/ACK y ACK) y la fase de establecimiento de conexión.
Es interesante notar que existe un número de secuencia generado por cada lado, ayudando de este modo a que no se puedan establecer conexiones falseadas (spoofing).

Puertos TCP
TCP usa el concepto de número de puerto para identificar a las aplicaciones emisoras y receptoras. Cada lado de la conexión TCP tiene asociado un número de puerto (de 16 bits sin signo, con lo que existen 65536 puertos posibles) asignado por la aplicación emisora o receptora. Los puertos son clasificados en tres categorías: bien conocidos, registrados y dinámicos/privados. Los puertos bien conocidos son asignados por la Internet Assigned Numbers Authority (IANA), van del 0 al 1023 y son usados normalmente por el sistema o por procesos con privilegios. Las aplicaciones que usan este tipo de puertos son ejecutadas como servidores y se quedan a la escucha de conexiones. Algunos ejemplos son: FTP (21), SSH (22), Telnet (23), SMTP (25) y HTTP (80). Los puertos registrados son normalmente empleados por las aplicaciones de usuario de forma temporal cuando conectan con los servidores, pero también pueden representar servicios que hayan sido registrados por un tercero (rango de puertos registrados: 1024 al 49151). Los puertos dinámicos/privados también pueden ser usados por las aplicaciones de usuario, pero este caso es menos común. Los puertos dinámicos/privados no tienen significado fuera de la conexión TCP en la que fueron usados (rango de puertos dinámicos/privados: 49152 al 65535, recordemos que el rango total de 2 elevado a la potencia 16, cubre 65536 números, del 0 al 65535).



Hypertext Transfer Protocol (HTTP)
El protocolo de transferencia de hipertexto (HTTP, HyperText Transfer Protocol) es el protocolo usado en cada transacción de la Web (WWW). HTTP fue desarrollado por el consorcio W3C y la IETF, colaboración que culminó en 1999 con la publicación de una serie de RFC, siendo el más importante de ellos el RFC 2616, que especifica la versión 1.1.
HTTP define la sintaxis y la semántica que utilizan los elementos software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. Al cliente que efectúa la petición (un navegador o un spider) se lo conoce como "user agent" (agente del usuario). A la información transmitida se la llama recurso y se la identifica mediante un URL. Los recursos pueden ser archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la traducción automática de un documento, etc.
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado.

Transacciones HTTP
Una transacción HTTP consiste de un encabezado seguido, opcionalmente, por una línea en blanco y algún dato. El encabezado especificará cosas como la acción requerida del servidor, o el tipo de dato retornado, o el código de estado.
El uso de campos de encabezados enviados en las transacciones HTTP le dan gran flexibilidad al protocolo. Estos campos permiten que se envíe información descriptiva en la transacción, permitiendo así la autenticación, cifrado e identificación de usuario.
Un encabezado es un bloque de datos que precede a la información propiamente dicha, por lo que muchas veces se hace referencia a él como metadato —porque tiene datos sobre los datos—.
Si se reciben líneas de encabezado del cliente, el servidor las coloca en las variables de ambiente de CGI con el prefijo HTTP_ seguido del nombre del encabezado. Cualquier carácter guión ( - ) del nombre del encabezado se convierte a caracteres "_".
El servidor puede excluir cualquier encabezado que ya esté procesado, como Authorization, Content-type y Content-length. El servidor puede elegir excluir alguno o todos los encabezados si incluirlos excede algún límite del ambiente de sistema. Ejemplos de esto son las variables HTTP_ACCEPT y HTTP_USER_AGENT.
HTTP_ACCEPT. Los tipos MIME que el cliente aceptará, dado los encabezados HTTP. Otros protocolos quizás necesiten obtener esta información de otro lugar. Los elementos de esta lista deben estar separados por una coma, como lo dice la especificación HTTP: tipo, tipo.
HTTP_USER_AGENT. El navegador que utiliza el cliente para realizar la petición. El formato general para esta variable es: software/versión librería/versión.
El servidor envía al cliente:
Un código de estado que indica si la petición fue correcta o no. Los códigos de error típicos indican que el archivo solicitado no se encontró, que la petición no se realizó de forma correcta o que se requiere autenticación para acceder al archivo.
La información propiamente dicha. Como HTTP permite enviar documentos de todo tipo y formato, es ideal para transmitir multimedia, como gráficos, audio y video. Esta libertad es una de las mayores ventajas de HTTP.
Información sobre el objeto que se retorna.
Ten en cuenta que la lista no es una lista completa de los campos de encabezado y que algunos de ellos sólo tienen sentido en una dirección.


P.A.M. (Pluggable Authentication Modules)
Es una librerıa que permite al administrador de un sistema elegir que metodos de autenticacion va a utilizar el sistema. Esto permite adaptar la seguridad de nuestro sistema segun nuestras necesidades.

Utilizando esta librerıa podemos personalizar los metodos que utilizaran las aplicaciones para autenticar a los usuarios, siempre y cuando dispongamos del codigo fuente de las aplicaciones.

Con esta librerıa no es necesario realizar muchos cambios en el codigo fuente

de las aplicaciones.



C.F.S. (Cryptographic File System)
Esta utilidad permite la creacion de ficheros y directorios encriptados dentro del sistema de ficheros que estamos utilizando. Para poder acceder a estos ficheros se necesitara una contraseña que habra sido establecida cuando se creo el directorio.

Este software esta basado en D.E.S. y esta sometido a las leyes de exportacion de los Estados Unidos.



T.C.F.S. (Transparent Cryptographic File System)
Desarrollado por la Universidad de Salerno especıficamente para Linux. Su proposito es proporcionar seguridad en sistemas de ficheros NFS. La desencriptacion se realiza en el cliente.

Este software funciona a nivel de nucleo, no a nivel de usuario, con lo cual se gana en seguridad.

Esta basado en D.E.S. y para funcionar las maquinas clientes necesitan una version compilada del nucleo para soporte de T.C.F.S.



Kerberos
Kerberos es un sistema de autenticaci´on. Este sistema trata de solucionar el problema de la autenticacion tradicional, la cual manda las passwords como texto en claro.

Para funcionar necesita haber un servidor kerberos, lo cual implica unos problemas:

  • Si el servidor no funcionara toda la red estarıa inactiva.

  • Si se ve comprometida la seguridad del servidor kerberos quedarıa comprometida la seguridad de toda la red.

Tambien tenemos otros problemas:

  • Necesitamos kerbetizar todas las aplicaciones y servicios que requieran autenticacion con kerberos.

  • Necesitamos disponer del codigo fuente de las aplicaciones y servicios. Con software propietario esto es imposible, a menos que exista la version kerbetizada y estemos dispuestos a pagar por ella.

  • La kerbetizacion no es siempre facil.

El proceso de autenticacion en kerberos es:

1. El cliente se autentica una vez en el centro de distribucion de claves (KDC).

2. El KDC da un Ticket Granting Ticket, TGT. Ticket especial para obtener otros

Tickets. Tiene un periodo de caducidad, normalmente de unas 8 horas.

3. Cuando necesitamos utilizar un recurso solicitamos un ticket utilizando el TGT para obtener un ticket Ticket Granting Server, TGS. El cual nos da acceso al recurso solicitado.



IPSec
Como es sabido el protocolo http es un protocolo que manda informacion como texto plano, sin encriptar.

Este protocolo se encarga de encriptar los “datos” de los paquetes a nivel IP, esto significa que no hace falta el modificar las aplicacionesque utilizan estos protocolos para utilizarlo. De esta forma podemos establecer

comunicaciones “seguras” con unos cambios mınimos en el sistema.

Este protocolo esta disponible para otros S.O. por lo cual podremos establecer comunicaciones “seguras” con otros S.O.

Para poder instalar esto necesitamos tener compilado el nucleo con soporte para IPSec.



SSH
Este protocolo fue diseñado para dar seguridad al acceso a computadores en forma remota.

Cumple la misma función que telnet o rlogin pero además, usando criptografía, logra seguridad con los datos.

A diferencia de telnet u otro servicio similar, SSH utiliza el puerto 22 para la comunicación y la forma de efectuar su trabajo es muy similar al efectuado por SSL.

Para su uso se requiere que por parte del servidor exista un demonio que mantenga continuamente en el puerto 22 el servicio de comunicación segura, el sshd.

El cliente debe ser un software tipo TeraTerm o Putty que permita la hacer pedidos a este puerto 22 de forma cifrada.

La forma en que se entabla una comunicación es en base la misma para todos los protocolos seguros:

  • El cliente envía una señal al servidor pidiéndole comunicación por el puerto 22.

  • El servidor acepta la comunicación en el caso de poder mantenerla bajo encriptación mediante un algoritmo definido y le envía la llave publica al cliente para que pueda descifrar los mensajes.

  • El cliente recibe la llave teniendo la posibilidad de guardar la llave para futuras comunicaciones o destruirla después de la sesión actual.



Anillos de confianza
Los anillos de confianza son el sustituto a las autoridades de certificacion en GnuPg y tiene como fin la autenticacion de las claves publicas de los usuarios.

La forma de hacer esto es firmar las claves de aquellos en los que confiemos plenamente y tengamos identificados. De esta forma todos aquellos que confien en nosotros confiaran tambien en aquellos a los que hayamos

firmado su clave publica.

A pesar de tener firmada una clave podemos asignarle un grado de confianza. Existen cuatro niveles de confianza:

  • Unknown, desconocido.

  • None, no nos fiamos. El usuario que firmo la clave se puede dedicar a firmar todas las claves sin comprobaciones.

  • Marginal, confiamos pero con reservas.

  • Full, confianza plena.




lunes, 28 de abril de 2008

GRAN EXPERIENCIA ...¡ FLISOL 2008 !...

Bueno ete sabado pasado 26 de abril de 2008, tuve la posibilidad de poder participar en la logistica del flisol 2008, para los que no saben flison es un evento de software libre.

En mi pequeña pero muy util ayuda en este participe en la instalacion de s.o libres como son ubuntu 8.4, 7.10 y debian etch R3.

La mayoria de equipos que instale fue portatiles, como ya lo saben estos equipos portatiles son algo complejos debido a que estas tienen mas software y no es tan facil intalarle todos sus comtroladores pero gracias a la gran eficiensa y al gran conocimiento de personajes que participaron en dicho evento pude desembolverme muy bien en el campo ya que contaba con el apoyo de estos personajes por si depronto algun inconveniente.

Ya he expresado mi vista buena del evento ahora dire los inconvenientes que aunque depronto no fueron tanto en mi parte por el publico pero se nos dieron.

Pienso que los organizadores del evento devio estar mas atentos con los de logistica, ya que muchos no pudimos salir en todo el dia a comer. Ya discutiendo lo del evento con mis compañeros y el profe camilo me doy de cuenta que tambien huvo percances en la entrada ya que devido al mucho publico que habia los administradores del parque explorar ordenaron cerrar las puertas esto por el lado del publico.

En total la realizacion del evento en mi penzar estuvo excelente y la cerrare con la frase del evento...

...¡ CREES QUE ERES LIBRE, SI TU SOFTWARE NO LO ES!...

GNUPG

GnuPG

GnuPg tambien conocido com Gpg es la version libre del conocido PGP de Phil Zimmermann.
Es li
bre para uso no comercial y para uso comercial. Ademas se dispone del codigo fuente con lo cual es posible auditar el codigo y comprobar si tiene fallos de seguridad y funcionalidades no documentadas.
Permite encriptar y desencriptar ficheros y realizar firmas digitales. No utiliza algoritmos patentados.


Generacion de claves.

Para generar nuestras claves tendremos que hacer:
gpg --gen-key

A continuacion tendremos que elegir el tipo de clave: (1)

  • DSA y ElGamal.
    Creamos un par de claves. El primer par, DSA, para firmar y el segundo para encriptar/desencriptar.

  • DSA. Solo firma.
    Creamos una clave, solo para firmar.

  • ElGamal. Firma y cifrado.

Creamos una clave que utilizaremos para firmar y encriptar/desencriptar.
A continuacion tendremos que elegir el tamaño de la clave: (2048)

  • 768 bits. Insegura.

  • 1024 bits. Seguridad buena aunque esta en la zona de riesgo.

  • 2048 bits. “Segura”.

Elegiremos la fecha de caducidad e introduciremos varios datos:

  • Nombre y apellidos.

  • Direccion de correo electronico.

  • Comentario.

A continuacion necesitamos introducir una contraseña para proteger nuestras claves.


Caracteristicas de GnuPg

1. Ver nuestras claves publicas.
gpg --list-public-keys

2. Ver nuestras claves secretas.
gpg –list-secret-keys gpg -K

3. Generar certificados de revocacion.
gpg --gen-revoke

4. Firmar las llaves.
gpg –sign-key (ID de llave)

5. Crear firmas digitales en formato ASCII y en texto claro.
gpg --clearsign

6. Verificar firmas digitales.
gpg --verify

7. Encriptar datos.
gpg --encrypt

8. Desencriptar datos.
gpg --decrypt

9. Generar una salida con armadura ASCII.
gpg --armor

10. Ver las huellas digitales.
gpg –fingerprint

11. Exportar la llave publica en cogigo ASCII .
gpg –export -o pub-julian.txt -a

12. Exportar la llave secreta (privada).
gpg -o priv-julian.txt –export-secret-key -a

13. Importar llaves.
gpg --import

14. Cifrar con llave publica y encriptar un archivo.
gpg -r (ID llave) -e prueva.txt

CONCEPTOS DE CRIPTOGRAFIA

Firma digital

El concepto de firma digital nació como una oferta tecnológica para acercar la operatoria social usual de la firma ológrafa (manuscrita) al marco de lo que se ha dado en llamar el ciberespacio o el trabajo en redes.
Consiste en la transformación de un mensaje utilizando un sistema de cifrado asimétrico de manera qu
e la persona que posee el mensaje original y la clave pública del firmante, pueda establecer de forma segura, que dicha transformación se efectuó utilizando la clave privada correspondiente a la pública del firmante, y si el mensaje es el original o fue alterado desde su concepción.
El fin, de la fi
rma digital, es el mismo de la firma ológrafa: dar asentimiento y compromiso con el documento firmado; y es por eso que a través de la legislación, se intenta acercarla, exigiéndose ciertos requisitos de validez.


Funcion de una firma digital
Primero se produce un resumen del mensaje, luego se encripta este resumen. Si estamos utilizando criptografía asimétrica lo encriptamos con nuestra clave privada.
De esta forma la única persona que conozca la clave privada será capaz de firmar digitalmente en nuestro nombre.


Como comprobar una firma digital
Desencriptamos la firma digital, usando la clave publica si han utilizado un método asimétrico. Obtenemos el resumen del mensaje original.
Hacemos un hash sobre el mensaje original.
Comprobamos nuestro resumen con el obtenido al desencriptar y si coinciden la firma digital es valida.


Ventajas Ofrecidas por la Firma Digital
Gracias a la firma digital, los ciudadanos podrán realizar transacciones de comercio electrónico seguras y relacionarse con la Administración con la máxima eficacia jurídica, abriéndose por fin las puertas a la posibilidad de obtener documentos como la cédula de identidad, carnet de conducir, pasaporte, certificados de nacimiento, o votar en los próximos comicios cómodamente desde su casa.
Ahora bien, en un contexto electrónico, en el que no existe contacto directo entre las partes, ¿resulta posible que los usuarios de un servicio puedan presentar un documento digital que ofrezca las mismas funcionalidades que los documentos físicos, pero sin perder la seguridad y confianza de que estos últimos están dotados? La respuesta, por fortuna, es afirmativa, ya que el uso de la firma digital va a satisfacer los siguientes aspectos de seguridad:

Integridad de la información: la integridad del documento es una protección contra la modificación de los datos en forma intencional o accidental. El emisor protege el documento, incorporándole a ese un valor de control de integridad, que corresponde a un valor único, calculado a partir del contenido del mensaje al momento de su creación. El receptor deberá efectuar el mismo cálculo sobre el documento recibido y comparar el valor calculado con el enviado por el emisor. De coincidir, se concluye que el documento no ha sido modificado durante la transferencia.

Autenticidad del origen del mensaje: este aspecto de seguridad protege al receptor del documento, garantizándole que dicho mensaje ha sido generado por la parte identificada en el documento como emisor del mismo, no pudiendo alguna otra entidad suplantar a un usuario del sistema. Esto se logra mediante la inclusión en el documento transmitido de un valor de autenticación (MAC, Message autentication code). El valor depende tanto del contenido del documento como de la clave secreta en poder del emisor.

No repudio del origen: el no repudio de origen protege al receptor del documento de la negación del emisor de haberlo enviado. Este aspecto de seguridad es más fuerte que los anteriores ya que el emisor no puede negar bajo ninguna circunstancia que ha generado dicho mensaje, transformándose en un medio de prueba inequívoco respecto de la responsabilidad del usuario del sistema.

Imposibilidad de suplantación: el hecho de que la firma haya sido creada por el signatario mediante medios que mantiene bajo su propio control (su clave privada protegida, por ejemplo, por una contraseña, una tarjeta inteligente, etc.) asegura, además, la imposibilidad de su suplantación por otro individuo.

Auditabilidad: permite identificar y rastrear las operaciones llevadas a cabo por el usuario dentro de un sistema informático cuyo acceso se realiza mediante la presentación de certificados,

El acuerdo de claves secretas: garantiza la confidencialidad de la información intercambiada ente las partes, esté firmada o no, como por ejemplo en las transacciones seguras realizadas a través de SSL.

Certificado digital

Un Certificado Digital es un documento digital mediante el cual un tercero confiable garantiza la vinculación entre la identidad de un sujeto o entidad y su clave pública.
Esta entidad certificadora debe firmar la llave publica.
Si bien existen variados formatos para
certificados digitales, los más comúnmente empleados se rigen por el estándar UIT-T X.509. El certificado contiene usualmente el nombre de la entidad certificada, un número serial, fecha de expiración, una copia de la clave pública del titular del certificado (utilizada para la verificación de su firma digital), y la firma digital de la autoridad emisora del certificado de forma que el receptor pueda verificar que esta última ha establecido realmente la asociación.


Quien da certificados
Tiene que haber una tercera parte, de confianza para emisor y receptor, que certifique a ambos.
Estas terceras partes reciben el nombre de “Trusted Third Parties (TTP)”, terceras partes de confianza. Su labor, básicamente, consiste en identificar a usuarios, empresas o servicios con una determinada clave pública.
Las entidades que emiten certificados reciben el nombre de “Certification Authority (CA)”, las cuales han de ser de confianza y pueden estar certificadas por ellas mismas o por otra
CA superior.


En que consiste un certificado

Básicamente un certificado esta compuesto por varios campos:

Identidad del propietario.
Clave pública.
Periodo de validez.
Identidad y clave pública de la CA que lo expidió.
Firma digital del certificado. Esta firma esta realizada por la CA.
Revocaciones de certificados.

La seguridad de un certificado reside en la confidencialidad de la clave privada. Al ser los certificados de dominio publicó cualquiera puede comprobarlos y lo único que le certifican es quien es el propietario de una determinada clave pública. Ese propietario es laúnica” persona que conoce la clave privada correspondiente a la pública certificada.
La persona que conozca una determinada clave privada puede certificarse utilizando el certificado de la correspondiente clave pública y de esta forma ofrecer una “falsa” seguridad a la persona que ha verificado el certificado (Suplantación de personalidad).
Cuando un certificado ha sido revocado la CA que lo expidió lo coloca en su “Certification
Revocation Lists (CRL)”, lista de revocación de certificados.


Comprobación de certificados

Cuando queremos establecer una comunicación con “alguien” debemos poseer su clave pública.
Una vez conseguida debemos asegurarnos que es quien dice ser. Para ello solicitamos su certificado y comprobamos su validez de la siguiente forma:

1. Comprobamos su caducidad.
2. Comprobamos que CA lo expidió.
3. Comprobamos el certificado de la CA, así como todos los certificados de CA’s superiores que haya, si se da el caso, certificado a la CA anterior.
4. Comprobamos que el certificado no fue manipulado, comprobando la firma digital de la CA.
5. Comprobamos CRL de la CA para verificar que no ha sido revocado.

Después de todo esto podemos establecer una conexión “segura” y “autenticada”.