domingo, 13 de febrero de 2011

OpenSSH

Instalación OpenSSH en 
LinuX



OpenSSH reúne un conjunto de herramientas del protocolo de seguridad Secure Shell (SSH) para la transferencia codificada de información a través de una red.
Contiene aplicaciones como el servicio de SSH, llamado sshd, un cliente, un generador de claves públicas, un agente de autentificación, un registrador de contraseñas, etc.
En la práctica todos estos programas sirven a un mismo propósito: manejar remotamente la consola de comandos del ordenador en el que se haya instalado el servicio SSH. De esta manera, una vez introducido nuestro nombre de usuario y contraseña, accederemos a todas las partes del ordenador permitidas al usuario con el que nos hayamos identificado.
La instalación de todos los componentes se realiza de manera automática, sin embargo, las claves hay que activarlas manualmente con los comandos que aparecen en el manual del programa. Ejecutando el subprograma de creación de clave privada registraremos nuestra contraseña de Windows. Así, los dos sistemas de acceso, vía remota por SSH y vía local con Windows comparten las claves de acceso.
En resumen, OpenSSH nos brinda una manera segura y eficaz de interactuar con nuestro ordenador donde quiera que estemos. Aunque la creación de claves no resulte sencilla a un usuario inexperto, tampoco requiere conocimientos avanzados. De todas formas, recomendamos tener nociones de seguridad informática a quien quiera activar este servicio SSH.


LinuX


Si necesitas conectar a tu maquina remotamente y quieres emplear un protocolo seguro esta es una buena opcion. Para la gente menos experta podriamos decir que SSH es como una conexion mediante telnet pero la informacion viaja de manera encriptada.

Con SSH te validas en el servidor y ya puedes introducir comandos de manera remota y segura. No es lo mismo que por ejemplo ejecutes un comando pasando un usuario y contraseña y esa informacion pueda ser capturada mediante un sniffer y sea facilmente legible, a que lo hagas con un protocolo seguro y aunque no imposible si que al menos es mucho mas dificil de descifrar.
Un buen servidor es “open ssh server“. Para instalarlo ejecuta el siguiente comando:



Y reiniciamos el equipo para que se apliquen los cambios.

Una vez instalado prueba a conectar con tu maquina.

Deberas obtener algo similar a lo siguiente:


Luego nos pide la contraseña del usuario. La primera vez que nos conectemos a un servidor tarda un poco más y nos pide confirmación tecleando "yes" con todas sus letras, las subsiguientes ya no. Sabemos que estamos conectados porque el prompt cambia y aparece en lugar del nombre de nuestro host el nombre del host remoto.
Los comandos, programas y scripts que lancemos tras conectarnos se ejecutarán en la máquina a las que nos hayamos conectado, utilizando los recursos del host remoto (CPU, memoria, disco, etc.). Esta arquitectura puede utilizarse, por ejemplo, para tener un servidor más potente y varios clientes que ejecutan aplicaciones en dicha máquina.
Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la máquina desde la que nos conectamos.

La primera vez que conectas con una maquina nueva a la que no has conectado antes, te aparece el mensaje:


Si aceptas se guarda la entrada de la clave en tu directorio HOME en el directorio .ssh

Las claves se guardan en un fichero denominado “know_hosts”, la proxima vez que conectes con una máquina a la que ya conectaste si su entrada esta en este fichero no te volvera a preguntar.
Una aclaración, si cuando intentas conectar con tu servidor, tuvieras problemas de conexión con tu máquina o de conexión con otra máquina remota, comprueba que no tienes deshabilitado el acceso remoto:
Sistema > Administracion > Ventana de Entrada (Pestaña Remota y Accesibilidad)


Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la máquina desde la que nos conectamos.
$ export DISPLAY=host_local:0.0

Este mecanismo no se recomienda por motivos de seguridad (el protocolo X11 no se encuentra cifrado) y, además, pueden encontrarse problemas porque cortafuegos intermedios bloqueen ese tráfico (puertos 600x TCP).

Una solución mejor es utilizar un túnel SSH para encapsular el protocolo X11, lo que transmite la información de manera segura y, además, no suele dar problemas con los cortafuegos intermedios.
Para poder ejecutar aplicaciones gráficas en el host remoto de forma segura, necesitamos dos cosas. La primera, que en la configuración del servidor SSH del host remoto (/etc/ssh/sshd_config) se encuentre activada la siguiente opción:
  
           X11Forwarding yes
Para aprovechar esta característica, hemos de conectarnos usando el parámetro -X, lo que exportará la configuración de la variable $DISPLAY con lo que podremos ejecutar aplicaciones gráficas de forma remota:

$ ssh -X usuario_remoto@host_remoto
Ahora si ejecutas el programa xclock verás que la ventana sale en tu escritorio: 
 
$ xclock



Evitar que nos pida el password cada vez

Siempre que conectemos a un ordenador remoto con SSH nos va a pedir el password de acceso para asegurarse de que tenemos permisos. Hay una forma de evitar que nos pida el password siempre haciendo que el ordenador remoto confíe en nosotros. Para ello hemos de generar un par de claves DSA que se usarán en la relación de confianza:

Una vez generada la copiamos al usuario del ordenador remoto con el que queremos mantener la relación de confianza usando el comando ssh-copy-id. Este es un ejemplo del uso con la salida del programa:

$ ssh-copy-id usuario_remoto@192.168.0.1

Now try logging into the machine, with "ssh 
 
'usuario_remoto@192.168.0.1'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys
that you weren't expecting.
Imagen:Nota clasica.png Si te da el error No identities found prueba a indicarle la ruta de la clave pública con -i


Imagen:Nota clasica.png Para que funcione correctamente el comando ssh-copy-id el agente tiene que estar activo para la sesión. Si no lo has puesto que lo arranque al inicio como se explica un poco más abajo, tendrás que arrancarlo desde la consola ejecutando ssh-add.

Ahora solo hay que arrancar el agente SSH para que recuerde nuestra contraseña. Nos pregunta la contraseña y ahora ya podemos acceder al ordenador remoto sin tener que escribir el password cada vez.
               $ ssh-add
El agente sólo dura mientras esté activa nuestra consola. O sea que  si la cerramos y la volvemos a abrir ya no está activo el agente y nos  volverá a pedir el password cada vez. Para evitar esto lo que podemos  hacer es añadir el agente a la sesión para que se ejecute cada vez que  se inicie GNOME. Al iniciar saldrá un diálogo que nos preguntará por la  contraseña. 

Cómo nota


Imaginemos que la IP de nuestro servidor es 192.168.2.3. Nos conectamos via SSH desde otro equipo, la primera vez tarda un poco más porque tiene que escribir en el archivo /home/[nuestro_usuario]/.ssh/known_host una entrada para esa IP.

Las subsiguientes veces que nos conectemos compara la clave gpg de la IP con la que tiene guardada en el archivo known_host, en caso de variar supone que el ordenador es distinto -por ejemplo, porque el ordenador servidor ssh ha sido formateado o porque se ha apagado y sustituido por otro al que se le ha asignado la misma IP-. Ese es el error man-in-the-middle y significa: "el ordenador cuya IP es esa, no es el mismo que yo conocía.

Puede ser que alguien se esté haciendo pasar por él" y no nos deja volvernos a conectar salvo que borremos la entrada de esa IP en el archivo known_host.

Video explicativo (INGLÉS): http://www.youtube.com/watch?v=d1u6TnN3YEw









miércoles, 9 de febrero de 2011

Caso Práctico 8

Definir Listas de control de acceso en Ubuntu para restringir el acceso a los archivos

En primer lugar, para poder hacer uso de las listas de control de acceso debemos comunicarle al sistema en qué particiones vamos a querer usarlas. Para ello, necesitamos configurar el archivo o fichero  /etc/fstab.

Nos mostrará el siguiente contenido:


Los sistemas de ficheros montados con ACL, tendrán la palabra clave << acl >> en las opciones de montaje de dicho fichero.

Todo esto se realiza en el fichero mostrado en la imagen superior.

A continuación, vamos a proceder a montar una partición nuevamente:



Para realizar el ejemplo, root (miguel) ha creado un fichero llamado prueba:



A continuación, mediante la orden o comando getfacl, vamos a ver la información que almacena la lista de control de acceso del fichero prueba y del directorio actual.


Nos informa del nombre del fichero, del propietario, del grupo y lo que más nos interesa, los permisos del propietario (user::rw-), del grupo (group::r--) y del mundo (other::r--). Lo mismo para el directorio actual:


A continuación, vamos a darle permisos a "Miguel1", para que pueda leer y modificar el fichero prueba. Para ello, debemos utilizar el comando setfacl con la opción "-m" que nos permite modificar la ACL, y por último, comprobamos que se ha realizado la modificación solicitada:


Caso Práctico 9

Definir listas de control de acceso en Windows utilizando el comando cacls para evitar el acceso a los ficheros a usuarios no autorizados

En primer lugar, deberemos tener  creado almenos 2 usuarios: Usuario1 y Usuario2.

Para ello, accedemos a Panel De Control - Cuentas de Usuarios:

Y escogemos la opción:


Y crearemos los user: Usuario1 y Usuario2

Posteriormente, en la carpeta Mis Documentos del Usuario1, crearemos otro dos directorios: Confidencial y Datos Compartidos.

Por lo cual, iniciamos sesión con el Usuario1, como se muestra en la imagen:

E iniciaremos sesión:


Y creamos los dos directorios llamados Confidencial y Datos Compartidos sobre el directorio Mis Documentos:


El Usuario1 quiere permitir que Usuario2 pueda leer documentos que hay almacenados en Datos Compartidos. En estos momentos eso es imposible, debido a que el Usuario2 no tiene permisos para acceder a Datos Compartidos.

¿Qué podemos hacer? Modificar la lista de control de acceso para permitirle entrar a la carpeta Datos Compartidos. Además, debemos permitir el acceso a la carpeta Usuario1 de Documents and Settings y al directorio Mis Documentos.

Para realizarlo, debemos ejecutar la instrucción cacls, cuya sintaxis es:

               Cacls fichero   /parámetros

Los parámetros son los siguientes:

  • /t.- Cambia las ACLS de los archivos especificados en el directorio actual y en todos sus subdirectorios.
  • /e.- Modifica la ACL en vez de reemplazarla. Este parámetro es muy importante, supongamos que queremos darle permisos al Usuario2 y no utilizamos este modificador; entonces se reemplaza la ACL antigua por la nueva, no permitiendo al Usuario1 acceder a su información.
  • /c.- Fuerza la modificación aunque encuentre errores.
  • /g usuario:permisos; R (lectura); E (escritura); C (cambiar), y F (control total).-
         Concede derechos de acceso al usuario.
  • /R usuario.- Suspende los derechos al usuario.
  • /p usuario:perm.-Sustituye los derechos del usuario especificado.
  • /d usuario.- Deniega el acceso al usuario especificado.

La instrucción cacls permite modificar las listas de control de acceso a los ficheros.




Según la sixtasis anterior, debemos ejecutar el comando que aparece a continuación:

Y nos aparecerá un resultado como el siguiente:


El resultado es que el Usuario2 puede entrar a todos los directorios y ficheros que cuelguen del directorio Usuario1, o lo que es lo mismo, puede visualizar cualquier documento de dicho usuario.

Como toda la información del Usuario1 esdtá almacenada en dos carpetas, Confidencial y Datos Compartidos, para que no tenga acceso el Usuario2 al directorio Confidencial del Usuario1, debemos ejecutar la siguiente orden:


Y nos aparecerá un mensaje indicado que todo ha salido correctamente:


Por último señalar que si fallamos en alguna orden al teclear la línea de comandos, nos aparecerá la siguiente imagen dónde nos especifica  los parámetros y su función principal:


FIN

martes, 25 de enero de 2011

Acceso a contraseña del root GNU/Linux

Acceder a la contraseña del Root
mediante el GRUB



Es probable que alguna vez necesitemos acceder a un sistema Linux sin saber la contraseña del usuario del sistema (que algunas veces puede ser el administrador), para estos casos y cuando el Grub no está protegido podemos realizar el proceso que se describe a continuación:

1. Arrancamos la máquina y esperamos a que se nos muestre el menú de arranque:


2. Elegimos el kernel con el que queremos arrancar y oprimimos la tecla e encima de la opción (eso sería edit), aparece la siguiente pantalla:

     
3. Nos posicionamos sobre la entrada del kernel tal y como se muestra en la figura anterior y de nuevo oprimimos e (de nuevo editar).

4. Escribimos al final rw init=/bin/bash (esto es Directo a la consola).
Nota: el símbolo de igualdad = puede sacarse con el código ascii Alt + 61.


5. Damos enter y luego en el menú anterior encima del kernel recién editado presionamos la tecla b (eso sería boot ó arrancar).

Al arrancar se nos muestra la consola y estamos autenticados como root (administrador), ahora listamos los usuarios del sistema:
                                   
 
# cat /etc/passwd | cut -d: -f1
o sólo:
# cat /etc/passwd
                                                                                           

Elegimos un usuario y le cambiamos la contraseña (ojo que puede suceder que la consola no haga eco (echo) y además sólo pude poner contraseñas de un caracter de longitud, igual eso es más que suficiente):
# passwd paquito
Si se quiere cambiar la contraseña de administrador entonces simplemente digitamos:
# passwd
Por último reiniciamos (o también puede escribir startx en consola para iniciar el modo gráfico) y nos autenticamos como el usuario al que le modificamos el pass y listo.

Si el GRUB tiene contrasena, hay problemas, entonces toca utilizar un live cd o el primer disco de instalacion:

Cambiar contraseña desde el disco de instalacion/rescate:
  1. Iniciar con el primer disco de instalación. No importa si se trata de una versión o distribución diferente a la que está en el equipo.
  2. Cuando se presente el texto boot, escribir linux rescue para entrar en modo de rescate.
  3. Una vez que se ha entrado al sistema, ejecutamos este comando para asignar el permiso a root:  chroot /mnt/sysimage
  4. Así, ya podemos cambiar la contraseña de root y reiniciamos el equipo para que tome efecto el cambio.
         passwd root
         reboot

Forma Similar para Recuperar Contraseña:


Al cargar el GRUB apretamos la tecla E sobre el kernel con el cual queria iniciar, permitiendome asi editarlo, en pantalla se mostro lo siguiente:

1. Debian GNU/Linux, kernel 2.6.22-2-486
2. (hd0,3)
3. /boot/vmlinuz-2.6.22-2-486 root=/dev/sda4 ro vga=791
4. /boot/initrd.img-2.6.22-2-486

Seleccionamos la tercera línea y sobre ella clic en  la tecla E para asi poder editarla, al final de esta agregue lo siguiente init=/bin/sh, quedando asi:

/boot/vmlinuz-2.6.22-2-486 root=/dev/sda4 ro vga=791 init=/bin/sh
 
Apretamos ESC e iniciamos normalmente.

Al iniciar la shell SH, nos encontramos logueado como root (sin necesidad de una contraseña), por lo cual me diriji al archivo /etc/shadow y con editor de texto borramos el campo de la contraseña en el usuario root

Guardamos los cambios y reiniciamos.
#:reboot
4-Al iniciar nuevamente, procedemos a abrir la sesión de root
$:su root
Y directamente, no nos pedira ninguna contraseña, por lo cual ahora le estableceremos una:
#:passwd root
Escribimos la contraseña dos veces, para asegurarnos que no halla errores (recordemos que BASH no nos mostrara los * de la contraseña por seguridad). Y listo, hemos reestablecido la contraseña para root.
5-asi que ahora simplemente escribimos:
#:exit

FIN

jueves, 20 de enero de 2011

Esteganografía para ocultar un mensaje detrás de una imagen

Esteganografía a través de imagen
Cloak V.7

La esteganografía es la disciplina en la que se estudian y aplican técnicas que permiten el ocultamiento de mensajes u objetos, dentro de otros, llamados portadores, de modo que no se perciba su existencia. Es una mezcla de artes y técnicas que se combinan para conformar la práctica de ocultar y enviar información sensible en un portador que pueda pasar desapercibido.


Para ello procedemos a descargarnos el programa gratuito Cloak v 7.0 desde una web (por ejemplo: http://www.redsofts.com/soft/188/20358/Cloak_v70.html) y abrimos la aplicación:


Hacemos clic sobre Try para la versión gratuita.

Y nos aparecerá la pantalla principal:


Una vez abierto el programa, haremos clic sobre el File, y a continuación Open Image:

 
Seleccionamos la imagen que deseemos, y hacemos clic sobre Cloaking y después en Cloak File.


 
Posteriormente procedemos a seleccionar el fichero que queremos ocultar, en nuestro caso prueba:


Cuyo archivo la información que contiene es la siguiente:

Y a continuación nos aparecerá el siguiente menú en el cual debemos de rellenar una contraseña y escoger un método de cifrado, en nuestro caso con Scatter.

Una vez realizado los pasos anteriores deberá aparecer la siguiente información indicando que el archivo se ha ocultado correctamente.
Nos mostrará el mensaje "File Cloacked"



 
A continuación, procedemos a la desencriptación del archivo, para ello accedemos a Uncloak File...

Nos aparecerá la siguiente ventana donde introduciremos la contraseña puesta anteriormente del archivo:


 
Y nos aparecerá un explorador dónde indicaremos dónde queremos descomprimir el fichero, el cual no debe de ser el mismo directorio que el del archivo comprimido:


 
Y nos aparecerá el fichero descomprimido en el directorio indicado en la imagen superior:


 
En el cual podremos ver la información que contenía anteriormente del cifrado: