CLICK HERE FOR THOUSANDS OF FREE BLOGGER TEMPLATES »

domingo, 8 de febrero de 2009

Archivo de configuracion de openssh

Líneas de configuración de openssh sshd_config.

Vayamos a las primeras líneas que están así:

#Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress ::

esto es el puerto tcp en el que escucha peticiones el servidor sshd. Por lo tanto quedara así:

Port 22

Ahora hay que descomentamos la linea de #Protocol 2,1 y dejarla así:

Protocol 2

En este caso solo haremos uso de la versión 2 del protocolo ssh.

La siguiente linea, es para configurar la dirección IP asignada a alguna interfaz de red en la que el servidor ssh escuchara peticiones, si el servidor tiene varias interfaces de red con diferentes direcciones IP asignadas entonces por default el servidor sshd escuchara peticiones en todas ellas, como lo vimos al ejecutar el comando netstat en la parte de arriba, esto es útil por ejemplo cuando tenemos un servidor que tiene dos interfaces de red una para Internet y otra para la red local, y solo quisiéramos que escuchara peticiones en la interfaz de la red local, o en la de Internet, entonces podría ser cambiado a algo así:

ListenAddress 192.168.0.1

NOTA: Si deseas que escuche peticiones en todas las interfaces de red, quizás porque necesites administrar el servidor de manera remota por Internet entonces hay que dejar la línea tal y como esta.

Ahora, las siguientes lineas están así:

Archivos que contienen las llaves privadas de host a usar (solo permisos rw- para root)

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

Ahora sigue la parte en la que el servidor sshd guarda los registros de eventos (logs):

# Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO

Aquí se especifican los parámetros para el registro de eventos, SyslogFacility especifica el tipo de registros que hará, en este caso es AUTH, ósea de las autenticaciones que se hacen contra el servidor, el parámetro AUTH es el predeterminado.

En LogLevel INFO es el valor predeterminado.


Ahora sigue la parte de los métodos de autenticación.

Por default esta así:

# Authentication:
#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6

La primera opción es: #LoginGraceTime 2m, esto le dice al servidor sshd el tiempo en el que desconectara a el usuario después de que no ha podido iniciar sesión satisfactoriamente, si el valor es 0, no hay limite de tiempo para que un usuario se autentique, lo cual no es recomendable ya que de esta manera podrían hacer ataques de fuerza bruta, o usando métodos de diccionario y así adivinar la contraseña (estos métodos son muy comunes últimamente, por lo tanto no es recomendable dejar este parámetro a 0, el valor predeterminado es: 2m, osea 120 segundos.
Se des comentara y se dejara por default haciendo explicito:

LoginGraceTime 2m

El siguiente parámetro es uno de los más importantes en cuanto a seguridad en el servidor sshd se refiere: #PermitRootLogin yes, este parámetro por default le dice que acepte conexiones con el usuario "root" lo cual no es nada recomendable, porque alguien podría identificarse como tal usuario y podría adivinar la contraseña, y tendría privilegios de "root" y así podría hacer cualquier cosa, por lo tanto se desactivara poniendo:

PermitRootLogin no

Luego sigue: StrictModes yes, esto significa que sshd revisara los modos y permisos de los archivos de los usuarios y el directorio $HOME de el usuario antes de aceptar la sesión. Esto es normalmente deseable porque algunos novatos algunas veces dejan sus directorios accidentalmente con permiso de escritura para cualquiera, el valor predeterminado es 'yes'. Por lo tanto lo dejaremos con su valor predeterminado y solo lo des comentaremos para hacerlo explicito:

StrictModes yes

Y el último de estas opciones es: MaxAuthTries 6, esta opción especifica el máximo número de intentos de autenticación permitidos por conexión. Una vez que el intento alcanza la mita de este valor, las conexiones fallidas siguientes serán registradas. El valor predeterminado es 6. En este caso lo dejaremos con su valor predeterminado, pero lo des comentaremos para hacerlo explicito, así:

MaxAuthTries 6

Las siguientes opciones son:

Permitimos la autentificación por RSA (solo para v1)
#RSAAuthentication yes

Permitimos la autentificación por clave pública (solo para v2)
#PubkeyAuthentication yes

Y esta otra se usa en conjunto cuando se usa autenticación por llave pública, que específica donde se guardaran las llaves en el host remoto, el valor por default es: ~/.ssh/authorized_keys esta ruta es por default para el protocolo 2 de ssh, entonces la des comentaremos para hacerla explicita, así:
#AuthorizedKeysFile .ssh/authorized_keys

Las siguientes opciones son:

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

Todas están comentadas de manera predeterminada, la mayoría se refieren a autenticación por RSA y rhosts, una que es importante aclarar es la de: #IgnoreUserKnownHosts no, la cual especifica si se ignorara o no el uso de el archivo ~/.ssh/known_hosts el cual al principio vimos que ahí se agregan las llaves de los servidores ssh a los cuales nos conectamos y confiamos. Por lo tanto debe de estar en 'no' para no ignorar este archivo, entonces deberá de quedar todo el bloque así:

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes

El siguiente bloque es:

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

La primera opción es para especificar si se permite la autenticación por medio de usuario/contraseña, por default esta en 'yes' entonces lo dejaremos así, cuando sigamos en la segunda parte de el documento donde se usan par de llaves publica/privada, se cambiara este parámetro para solo conectarnos usando nuestro par de llaves. La segunda opción especifica si se permitirá el uso de contraseñas vacías, es decir autenticarse sin contraseña (no recomendable), esto solo es valido cuando se usa PaswordAuthenticacion yes. Por ahora dejaremos los valores predeterminados y solos las descomentaremos para hacerlas explicitas, así:

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no

Ahora miraremos la sección que esta así:

#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10

Aquí solo comentare a grandes rasgos algunas opciones.

AllowTcpForwarding yes:

Especifica si se permite hacer re direccionamiento de protocolos TCP, esto para hacer túneles de la conexión de un protocolo no seguro, que envía la información en texto plano, y mandarla por un túnel cifrado, muy usual con conexiones POP3 o IMAP, se recomienda dejarlo por default.

X11Forwarding no, X11DisplayOffset 10 y X11UseLocalhost yes:

Se refieren para especificar si se permite hacer uso de el X11 Forwarding, esto para ejecutar aplicaciones gráficas de el server, en el host local, podría ser útil para conectarse a hosts y ejecutar alguna aplicación gráfica, aunque en algunos servidores es raro tener el sistema gráfico, por ahora se dejaran tal y como están.

PrintMotd yes:

Específica si cuando se establezca una conexión, se imprima el Mensaje de el Día (MOTD) se deja por default.

PrintLastLog yes:

Aquí se especifica si se mostrara el mensaje mostrando la dirección IP de donde se conecto el usuario la ultima vez, muy útil para saber si alguien más se esta conectando con un usuario en especifico.

TCPKeepAlive yes:

Significa que el servidor sshd enviara mensajes de keepalive a el cliente después de que detecta alguna inactividad (idle), este método puede ser spoofable.

UsePrivilegeSeparation yes:

Significa que después de que la sesión ssh se ha establecida se pasaran los privilegios de ese proceso a el usuario de quien inicie la conexión, sin esto el proceso estará a nombre de root, muy bueno esto para evitar elevación de privilegios.

ClientAliveInterval 0:

Esta opción especifica el intervalo de tiempo en segundos en el cual después de que no se ha recibido ningún dato de el cliente, sshd enviara un mensaje a través de el canal cifrado para requerir una respuesta de el cliente, el valor predeterminado es 0, el cual significa que no se envía tal mensaje, esta opción aplica solamente al protocolo ssh 2 esta opción útil cuando se tienen una conexión intermitente.

ClientAliveCountMax 3:


Este valor indica las veces que el servidor sshd enviara mensajes keepalive cuando el cliente esta inactivo, si el cliente no envia ninguna respuesta entonces el servidor terminara la conexion y por lo tanto la sesion, si tienes una conexiones intermitentes es recomendable subir el numero a este valor, hay que notar que esta opcion es diferente la opcion TCPKeepAlive, estos mensajes son enviados a través de el canal cifrado, por lo tanto no sera spoofable, como el TCPKeepAlive.


PidFile /var/run/sshd.pid

Esta opcion indica identificador de proceso (pid) de sshd.

Bien ahora que hable de las opciones de este bloque, usando los valores predeterminados, deberá quedar asi:

AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes
PrintMotd yes
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression yes
ClientAliveInterval 0
ClientAliveCountMax 3
UseDNS yes
PidFile /var/run/sshd.pid
MaxStartups 10

Y por ultimo esta la opcion:

# override default of no subsystems
Subsystem sftp /usr/libexec/sftp-server

Esta opcion lo que hace es iniciar el servidor sftp-server el cual es un sustituto para un servidor ftp, pero la comunicacion es segura, ya que se hace por un canal cifrado.

lunes, 2 de febrero de 2009

CRIPTOGRAFIA

CRIPTOGRAFIA

Es la forma de transformar un mensaje inteligible, denominado texto en claro, que solo pueden entender personas autorizadas ha ello, que llamaremos criptograma o texto cifrado, el método que se utiliza para encriptar dichos textos se denomina algoritmo de encriptación.

Criptoanálisis: es el estudio de los métodos para obtener el sentido de una información cifrada, sin acceso a la información secreta requerida para obtener este sentido normalmente. Típicamente, esto se traduce en conseguir la clave secreta. En el lenguaje no técnico, se conoce esta práctica como romper o forzar el código, aunque esta expresión tiene un significado específico dentro del argot técnico.

Criptosistemas: es la forma que es utiliza para encriptar un texto en plano ypara esto existen una serie de algoritmos de encriptación.

Hash: es una función para resumir o identificar probabilísticamente un gran conjunto de información, dando como resultado un conjunto imagen finito generalmente menor (un subconjunto de los números naturales, también se refiere a una función o método para generar claves o llaves que representen de manera casi unívoca a un documento, registro, archivo, etc.,

Criptografía Clásica
El cifrado de textos es una actividad que ha sido ámpliamente usada a lo largo de la historia humana, sobre todo en el campo militar y en aquellos otros en los que es necesario enviar mensajes con información confidencial y sensible a través de medios no seguros.
El sistema de jeroglíficos egipcio puede considerarse ya una forma de criptografía (sólo podían ser entendidos por personas con conocimientos suficientes), el primer sistema criptográfico como tal conocido de debe a Julio Cesar. Su sistema consistía en reemplazar en el mensaje a enviar cada letra por la situada tres posiciones por delante en el alfabeto latino. En nuestro alfabeto actual tendríamos la siguiente tabla de equivalencias:

A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z A B C


Por lo que el mensaje "HOLA JOLMAN" se transformaría en "KRÑD MRÑODP". Para volver al mensaje original desde el texto cifrado tan sólo hay que coger un alfabeto e ir sustituyendo cada letra por la que está tres posiciones antes en el mismo.
Este fue el primer sistema criptográfico conocido, y a partir de él, y a lo largo de las historia, aparecieron otros muchos sistemas, basados en técnicas criptológicas diferentes.


Criptografía moderna
Como hemos visto en el apartado anterior, los sistemas criptográficos clásicos presentaban una dificultad en cuanto a la relación complejidad-longitud de la clave / tiempo necesario para encriptar y desencriptar el mensaje.
En la era moderna esta barrera clásica se rompió, debido principalmente a los siguientes factores:

*velocidad de cálculo: con la aparición de los computadores se dispuso de una potencia de cálculo muy superior a la de los métodos clásicos.

*avance de las matemáticas : que permitieron encontrar y definir con claridad sistemas criptográficos estables y seguros.

*necesidades de seguridad: surgieron muchas actividades nuevas que precisaban la ocultación de datos, con lo que la Criptología experimentó un fuerte avance.

A partir de estas bases surgieron nuevos y complejos sistemas criptográficos, que se clasificaron en dos tipos o familias principales, los de clave simétrica y los de clave pública (asimetrica)


Criptografía simétrica
Incluye los sistemas clásicos, y se caracteriza por que en ellos se usa la misma clave para encriptar y para desencriptar, motivo por el que se denomina simétrica.
Toda la seguridad de este sistema está basada en la llave simétrica, por lo que es misión fundamental tanto del emisor como del receptor conocer esta clave y mantenerla en secreto. Si la llave cae en manos de terceros el sistema deja de ser seguro y por lo tanto se debe generar otra llave.
Los algoritmos simétricos encriptan bloques de texto del documento original, y son más sencillos que los sistemas de clave pública, por lo que sus procesos de encriptación y desencriptación son más rápidos.


Criptografía de clave pública (asimétrica)
También llamada asimétrica, se basa en el uso de dos claves diferentes, claves que poseen una propiedad fundamental: una clave puede desencriptar lo que la otra ha encriptador
Generalmente una de las claves de la pareja, denominada clave privada, es usada por el propietario para encriptar los mensajes, mientras que la otra, llamada clave pública, es usada para desencriptar el mensaje cifrado.
Las claves pública y privada tienen características matemáticas especiales, de tal forma que se generan siempre a la vez, por parejas, estando cada una de ellas ligada intrínsecamente a la otra, de tal forma que si dos llaves públicas son diferentes, entonces sus llaves privadas asociadas también lo son, y viceversa
Sistema de claves publicas
En este sistema la clave o llave privada debe mantenerla en secreto su propietario, ya que es la base de la seguridad del sistema, la clave pública es difundida ampliamente por Internet, para que esté al alcance del mayor número posible de personas, existiendo servidores que guardan, administran y difunden dichas claves.

domingo, 1 de febrero de 2009

P.K.I

P.K.I

infraestructura de clave pública (o Public Key Infrastructure) es una combinación de hardware y sofware,politicas y procedimientos de seguridad que permite la ejecucion con garantias de operacion criptograficas como el cifrado, la firma digital o el no repudio de transacciones electronicas.


CIFRADO: es el arte o ciencia de cifrar y descifrar informacion utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que sólo puedan ser leídos por las personas a quienes van dirigidos.

FIRMA DIGITAL: Una Firma Digital tiene dos características principales:

*Sólo puede ser generada por el poseedor de la clave privada y puede ser verificada por cualquiera que conozca la clave pública del firmante.

*Es dependiente del documento a firmar (la Firma Digital de un documento no puede emplearse para firmar otro documento).

El proceso de generación de una Firma Digital consiste en dos pasos:

*Empleando un algoritmo de "Hashing" se genera un resumen, de tamaño fijo, del documento.

*Se cifra el Hash empleando la clave privada del usuario.


Su arquitectura :
1. La infraestructura de llave publica o PKI
2. El modelo PKIX, o modelo de las entidades que gestionan la infraestructura de llave publica, degsinando funciones y protocolos.
3. Las politicas y praticas de certificacion CPS y CP.
La arquitectura PKI se encuentra: Internet Certificate and CRL Profile RFC 3280
> Especificada Internet Engineering Task Forge. http://ietf.org
El Modelo PKIX

COMPONENTES DE UN P.K.I:

*La Autoridad de Certificación. La pieza central del "puzzle" y la que proporciona la base de confianza en la PKI. Constituido por elementos hardware, software y, evidentemente, humanos.

*Publicación de Certificados. El repositorio de certificados permite a los usuarios operar entre ellos (p.e. para la validación de una Firma Digital), y es un requisito legal que cuente con una total disponibilidad de acceso.

*Soporte de la Clave Privada. La elección de un buen soporte para que los usuarios custodien su clave privada es un punto esencial y complejo en si mismo (p.e. si la clave está en una SmartCard, es necesario diseñar el Sistema de Gestión de SmartCards que permita la emisión y distribución de las tarjetas a los usuarios).

*Aplicaciones "PKI-Enabled". Se denomina así a las aplicaciones software capaz de operar con certificados digitales. Estas aplicaciones son las que dan el valor real de la PKI de cara al usuario.

*Políticas de Certificación. Deben diseñarse una serie de políticas, o procedimientos operativos, que rigen el funcionamiento de la PKI y establecen los compromisos entre la Autoridad Certificadora y los Usuarios Finales. Estos documentos tendrán un carácter tanto técnico como legal.


CONCEPTOS


SMART CARD: Una tarjeta inteligente (smart card), o tarjeta con circuito integrado (TCI), es cualquier tarjeta del tamaño de un bolsillo con circuitos integrados que permiten la ejecución de cierta lógica programada. Aunque existe un diverso rango de aplicaciones, hay dos categorías principales de TCI. Las tarjetas de memoria contienen sólo componentes de memoria no volátil y posiblemente alguna lógica de seguridad. Las tarjetas microprocesadoras contienen memoria y microprocesadores.

TOKEN: Un token de seguridad (también token de autenticación o token criptográfico) es un dispositivo electrónico que se le da a un usuario autorizado de un servicio computarizado para facilitar el proceso de autenticación.

BIOMETRIA: En la autentificación biométrica se refiere a las tecnologías para medir y analizar las características físicas y del comportamiento humanas con propósito de autentificacion.

Entidad Certificadora: Es una empresa que ofrese certificados SSL. Estas nos dan conexiones seguras en Internet se hacen comúnmente usando el protocolo SSL. Esto hace que cuando nos conectemos a una pagina con seguridad nos aparezca https:// en la barra de direcciones, en ocasiones vemos que sale en color amarillo y hasta aparece un candado.

Autenticación o autentificación: es el acto de establecimiento o confirmación de algo (o alguien) como auténtico, es decir que reclama hecho por, o sobre la cosa son verdadero. La autenticación de un objeto puede significar (pensar) la confirmación de su procedencia, mientras que la autenticación de una persona a menudo consiste en verificar su identidad. La autenticación depende de uno o varios factores de autenticación.

No Repudio: el propósitos de una firma digital es asegurar el no-repudio. Si A mantiene su llave privada en secreto, significa que nadie más puede generar una firma digital de un documento más que A mismo. Sin embargo, A puede no honrar su firma digital afirmando simplemente que la llave con la cual se generó la firma no es la suya.

INTEGRIDAD: es que un documento no sea modificado que llegue a su receptor tal y como fue enviado

SOLUCIONES COMERCIALES DE PKI EN COLOMBIA:


La sociedad cameral de certificacion digital certicamara S.A o certicamara:

es una entidad de certificacion digital abierta de caracter esencialmente empresarial es la primera entidad certificadora abierta,creadas por las cámaras de comercio del país, esta vigilada y autorizada por la superintendencia de industria y comercio, cumple con los mas altos estándares internacionales exigidos por el CISA Canadian institute of chartered accountants y el AICPA america institute of certificied public accountants, por el sello WEB TRUST, que la califica como entidad de certificacion de categoría y clase mundial, lo que permite que Microsoft lo incluya en los certificados que reconoce automáticamente el navegador de internet explorer.

tiene como proposito fundamental proporcionar las herramientas necesarias para que los empresarios y demas usuarios de internet del pais puedan realizar negocios electronicos con seguridad juridica ;otros de sus beneficios son:


*Proporciona a las empresas implementación utilización de nuevas tecnologías

*también contribuye al desarrollo y crecimiento de los negocios electrónicos del país, con estándares que permiten el crecimiento de los negocios internacionales.