Baneo de SSH con Fail2ban
8:12 | Author: Bluder Garcia


Lo que haremos en este paso es banear (Restringir) al acceso a los Usuarios que intenten el logeo frente al Servidor y sea erróneo mas de 5 veces, al cual le aplicaremos un tiempo determinado de restricción, para ello debemos de instalar el programa fail2ban, con el siguiente comando:

# apt-get install fail2ban

Después debemos de ir al archivo de configuración del fail2ban y buscaremos el Servicio que necesitamos aplicarle el baneo, en este caso el Servidor SSH, con la ayuda del siguiente comando:

# nano /etc/fail2ban/jail.conf

Buscaremos las siguientes líneas y las comentaremos, por que más adelante en el servicio las especificaremos:

bantime = 300
maxretry = 5


Después más abajo en este archivo buscaremos la línea SSH la cual en nuestro caso debe de quedar así:

[ssh]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
bantime = 20
maxretry = 5


En el campo enable= debe de estar en true (falce es apagado)
En el campo port= debe de estar el puerto por el cual corre nuestro SSH
En el campo filter= debe de estar sshd del Demonio SSH
En el campo logpath= es donde almacenaran los logs de SSH
En el campo bantime= es donde ira el tiempo en segundos de la penalización
En el campo maxretry= es las veces que permitiremos un fallo en el login


Después de esta configuración debemos de reiniciar el Servidor Fail2ban, con la ayuda del siguiente comando:

# /etc/init.d/fail2ban restart

Para mirar en tiempo real lo que sucede mientras se intentan logear los Usuario ejecutamos el siguiente comando:

# tail -f /var/log/fail2ban.log

Si el Usuario se equivoco en la clave la cantidad de veces que colocamos como tope, de de salir así:

2009-02-27 11:27:10,639 fail2ban.actions: WARNING [ssh] Ban 192.168.101.126

Después del tiempo que estimamos para el baneo debe de aparecer así:

2009-02-27 11:27:30,679 fail2ban.actions: WARNING [ssh] Unban 192.168.101.126



Lo que haremos con estos pasos es agregarle autenticacion a nuestro Sitio Web, es decir, que para que los Usuarios accedan a nuestra Pagina Web tenga que ser mediante un Usuario y una Contraseña asiganda por el Administrador de la Red, en otra entrada veremos la configuracion de SSL+Apache2, en la cual podemos agregar este tipo de Autenticación sin ningun problema, los pasos que debemos de seguir seran los siguientes:

Debemos de generar el password y el usuario con el cual queremos ingresar a nuestro Sitio Web, en este caso el usario sera smith y la contraseña sera sena2009admon, para ello utilizaremos el siguiente comando (El nos pedira un passwors el cual sera el del Usuario que estamos indicando):

# htpasswd -c /etc/apache2/passwordsitioweb smith
New password: sena2009admon
Re-type new password: sena2009admon
Adding password for user smith

En este comando lo que le estamos diciendo es, cree y encripte el password en la ruta /etc/apache2/ en un archivo con el nombre de passwordsitioweb (El creara el archivo) con el Usuario smith, ingresamos la contraseña para este Usuario y listo.

Si queremos agregar otro Usuario en el mismo archivo sin que se elimine el Usuario anterior, debemos de utilizar el siguiente comando:

# htpasswd -d /etc/apache2/passwordsitioweb carlos
New password: sena2009
Re-type new password: sena2009
Adding password for user carlos

Al mirar el archivo que acabamos de crear nos debe de aparecer así:

smith:uplI.Yd/9m1kg
carlos:2H/qBicqVUkOA


Despues de generar los Usuarios y las Contraseñas, debemos de entrar a editar
el HostVirtual de nuestro Sitio Web, en este caso nuestro archivo se llama paginaweb y se encuntra por supuesto en /etc/apache2/sites-available/, lo editaremos con el siguiente comando:

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

Y Agregaremos dentro del VirtualHost las siguientes lineas:


En estas lineas lo que estamos diciendo es la ruta de nuestro Sitio Web, que la Autenticacion sera Basica o Basic, que el saludo sera Practica Sitio Web que la ruta del archivo que contiene los Usuarios y Contraseñas es /etc/apache2/passwordsitioweb y que los Usarios que se pueden autenticar seran smith y carlos.

Despues debemos de reiniciar nuestro Servidor Apache2, con la ayuda del siguiente comando:

# /etc/init.d/apache2 restart

Despues desde el Navegador Web debemos de ingresar con el Usuario smith y la Contraseña sena2009admon o con el Usuario carlos y la Contraseña sena2009 y listo:

HASH MD5
6:03 | Author: Bluder Garcia

En criptografía MD5 (Message-Digest Algorithm 5 - Algoritmo de Resumen del Mensaje 5) es un algoritmo de reducción criptográfico de 128 bits ampliamente usado, el cual nos permite la misma logintud de bits siempre asi varie el peso del archivo o la longitud del texto. MD5 es uno de los algoritmos de reducción criptográficos diseñados por el profesor Ronald Rivest del MIT (Massachusetts Institute of Technology - Instituto Tecnológico de Massachusetts). Fue desarrollado en 1991 como reemplazo del algoritmo MD4 después de que Hans Dobbertin descubriese su debilidad. A pesar de su amplia difusión actual, la sucesión de problemas de seguridad detectados desde que, en 1996, Hans Dobbertin anunciase una colisión de hash plantea una serie de dudas acerca de su uso futuro.

Sitios WEB para HASH (SHA) MD4, MD5, entre otros:

http://www.md5crack.com/

http://pajhome.org.uk/crypt/md5/

http://www.fileformat.info/tool/hash.htm

Los resúmenes MD5 o HASH MD5 se utilizan extensamente en el mundo del software para proporcionar la seguridad de que un archivo descargado de internet no se ha alterado. Comparando una suma MD5 publicada con la suma de comprobación del archivo descargado, un usuario puede tener la confianza suficiente de que el archivo es igual que el publicado por los desarrolladores. Esto protege al usuario contra los Virus y "Troyanos" que algún otro usuario malicioso pudiera incluir en el software. La comprobación de un archivo descargado contra su suma MD5 no detecta solamente los archivos alterados de una manera maliciosa, también reconoce una descarga corrupta o incompleta.


Para comprobar la integridad de un archivo descargado de Internet se puede utilizar una herramienta MD5 para comparar la suma MD5 de dicho archivo con un archivo MD5SUM con el resumen MD5 del primer archivo. En los sistemas UNIX y GNU/Linux, el comando md5sum es un ejemplo de tal herramienta.


En sistemas UNIX y GNU/Linux se utiliza el algoritmo MD5 para cifrar las claves de los usuarios. En el disco se guarda el resultado del MD5 de la clave que se introduce al dar de alta un usuario, y cuando éste quiere entrar en el sistema se compara la entrada con la que hay guardada en el disco duro, si coinciden, es la misma clave y el usuario será autenticado.

El MD5 también se puede usar para comprobar que los correos electrónicos no han sido alterados usando claves públicas y privadas.

Configuracion de OpenSSH en Debian Lenny
5:14 | Author: Bluder Garcia

Para configurar SSH para la transferencia de archivos de un Servidor a un Cliente o en sentido contrario, debemos de seguir los siguientes pasos, también hablaremos de las diferentes formas de Login frente a un Servidor SSH y como crear un Túnel el cual es lo mismo que un reenviador de Puertos con SSH. Primero debemos de Instalar el SSH, en este documento trabajaremos con OpenSSH, y utilizaremos el siguiente comando para la instalación:


# apt-get install ssh


Después de la instalación podemos entrar a configurar el archivo del demonio con las necesidades que tengamos para nuestro Servidor, el archivo se encuentra en la ruta /etc/ssh/ y tiene el nombre de sshd_config, algunos parámetros que podemos configurar para el SSH dentro de este archivo son:


# nano /etc/ssh/sshd_config


  • Port 22

Este es el puerto por el cual va a escuchar nuestro Servidor lo podemos cambiar.

  • Protocol 2

Este será la Versión con la cual vamos a trabajar, en este caso con la Versión 2.

  • LoginGraceTime 120

Este será el tiempo que tendrá el Usuario para el Login frente al Servidor, este tiempo es en segundo.

  • PermitRootLogin no

Este parámetro es para permitir que las conexiones se puedan realizar como Root.

  • MaxStartups 2

Esta línea es para indicar cuantas conexiones vamos a permitir simultáneamente en el Servidor.

  • MaxAuthTries 2

Esta será para el máximo de intentos de Login frente al Servidor.

  • PassworAuthentication yes

Aquí le diremos al Servidor si queremos trabajar con Autenticación con Login.

  • ListenAddress 192.168.1.1

Aquí le estamos indicando que solo escuche peticiones por la interfaz con esta IP.

  • X11Forwarding yes

Esta línea es para indicarle al Servidor si vamos a permitir aplicaciones graficas por medio de la consola SSH.

  • DenyUsers root@192.168.1.67

Con esta linea podemos denegar la conexión de dicho usuario a a dicho equipo de la red, en este caso el PC con la IP 192.168.1.67 y con el Usuario Root.



NOTA: Después de toda configuración en el Archivo sshd_config debemos de reiniciar el Servidor para que tome los cambios, lo haremos con el siguiente comando (# /etc/init.d/ssh restart).



Conectarnos Por SSH


Por medio de la Consola


Para conectarnos por medio de SSH a otro equipo (Recordemos que es un Modelo Cliente – Servidor), lo que debemos de hacer es lo siguiente:


# ssh Usuario@DireccionIP


Ejemplo:


# ssh bluder@192.168.1.67


NOTA: La primera vez que nos conectemos desde un Cliente al Servidor el nos preguntara si estamos seguros de continuar con la conexión (SI/NO), le diremos que SI. Después el nos pedirá la contraseña del Usuario con el cual estamos accediendo al Servidor, el cual puede ser un Usuario local o el mismo Root del Servidor SSH, así:


Smith:/# ssh bluder@192.168.1.67


The authenticity of host '192.168.1.67 (192.168.1.67)' can't be established.

RSA key fingerprint is ae:d0:a5:ff:3e:85:da:0d:b5:69:d3:21:c0:32:8d:6d.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.67' (RSA) to the list of known hosts.

bluder@192.168.1.67's password:

Linux Debian 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

bluder@Debian:~$


Si hemos cambiado el Puerto del Servidor el comando para conectarnos de al Servidor será el siguiente:


# ssh –p Puerto Usuario@DireccionIP


Ejemplo:


# ssh –p 2233 bluder@192.168.1.67


Si queremos salir de una conexión SSH, solo debemos de digitar en la consola el comando Exit, así:


bluder@Debian:~$ exit

logout

Connection to 192.168.1.67 closed.

Smith:/home/pepe#



Por modo Grafico


Para esta conexión debemos de teclear con la ayuda del teclado Alt + F2 el cual nos abrirá una pequeña ventana que se llama Ejecutar una Aplicación, en la cual debemos de ingresar las siguientes líneas (En este ejemplo nos conectaremos desde el Servidor a un Usuario pepe localmente, es decir nos conectaremos a nosotros mismos con el Usuario Pepe, localmente):


ssh://Usuario@DireccionIP


Ejemplo:


ssh://pepe@192.168.1.67


NOTA: Si es la primera vez de la conexión él nos preguntara si queremos continuar, por que desconoce la computadora remota, le daremos clic en Iniciar Sesión de Todos Modos. Después el nos pedirá la contraseña de ese Usuario (Es probable que tengamos que ingresar la contraseña 2 veces), así:


Indicamos el Usuario y la Dirección IP de la Maquina Remota:


Confirmamos que quermos iniciar sesión:


Daremos la contraseña del Usuario:


Y ya podemos ver la carpetas y directorios de la Maquina Remota:


Igualmente si le cambiamos el puerto a nuestro Servidor SSH lo que debemos de hacer es agregarle el puerto de la siguiente forma:


ssh://Usuario@DireccionIP:Puerto


Ejemplo:


ssh://pepe@192.168.1.67:2233



Copiar Archivos por SSH


Ahora si lo que queremos es copiar archivos del un equipo a otro, utilizaremos el siguiente comando:


# scp RutadelArchivoaCopiar Usuario@DireccionIPdelDestinatario:RutadelDestinatario


Ejemplo:


# scp /home/pepe/Desktop/ejemplo.odt bluder@192.168.1.67:/home/bluder/


En este ejemplo lo que estamos haciendo es copiando un archivo desde el Cliente, el cual se llama ejemplo.odt que se encuentra en la maquina Cliente, copiaremos el archivo al Servidor el cual tiene la IP 192.168.1.67 y un Usuario con el nombre de Bluder, este Usuario es local del Servidor y por ultimo indicamos en que directorio quedara el archivo (Al final del directorio del destinatario podemos indicar otro nombre para el archivo que queremos copiar si queremos que quede con un nombre diferente al original).


NOTA: Si es la primera vez que copiamos archivos, nos preguntara si estamos seguros de continuar con la conexión (SI/NO), después debemos ingresar la contraseña del Usuario de la maquina local, en este caso Bluder, así:


Smith:/$ scp /home/pepe/Desktop/ejemplo.odt bluder@192.168.1.67:/home/bluder/

The authenticity of host '192.168.1.67 (192.168.1.67)' can't be established.

RSA key fingerprint is ae:d0:a5:ff:3e:85:da:0d:b5:69:d3:21:c0:32:8d:6d.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.67' (RSA) to the list of known hosts.

bluder@192.168.1.67's password:

ejemplo.odt 100% 24 0.0KB/s 00:00


Si es el caso que cambiamos el puerto del SSH, lo que debemos de hacer para copiar archivos por medio de SSH es añadir al comando la opción –P y el puerto (La –P en Mayúscula), así:


# scp –P Puerto RutadelArchivoaCopiar Usuario@DireccionIPDestinatario:RutadelDestinatario


Es el mismo comando pero le debemos de indicar el puerto por el cual está escuchando al SSH.



Ejecutar Aplicaciones Web por medio de SSH


En este paso ejecutaremos como ejemplo la aplicación en debían Gimp, para creación y edición de imágenes, en este paso el Servidor SSH tiene la aplicación instalada pero el Cliente no, por lo cual lo vamos a ejecutar con el siguiente comando:


# ssh –X Usuario@Direccionip AplicacionGrafica


Ejemplo:


# ssh –X bluder@192.168.1.67 gimp


Después de este comando nos cargara la aplicación que necesitamos tomar del Servidor, si el puerto del Servidor SSH lo cambiamos, debemos de ejecutar el siguiente comando:


# ssh –X –p 2233 Usuario@Direccionip AplicacionGrafica


Ejemplo:


# ssh -X -p 2233 bluder@192.168.1.65 gimp


En nuestro ejecutamos el comando normal y nos debe de aparecer la aplicación, en este caso Gimp y nos cargara como lo muestra la imagen:


Esta es la bienvenida que nos da la Aplicación (Gimp):


Después nos podemos dar cuenta de que podemos utilizar la Aplicación como si estuviéramos en el Servidor:



Cambiar el Mensaje de Bienvenida de SSH


Si nos hemos dado cuenta el mensaje que nos da el SSH es el siguiente:


Linux Debian 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.


Si queremos cambiar este mensaje, debemos de entrar a editar el archivo motd en la ruta /var/run/, con la ayuda del siguiente comando:


# nano /var/run/motd


Y colocar el mensaje que más nos parezca adecuado, guardamos el archivo y listo, así:


Recordemos que debemos de reiniciar el Servidor SSH para que los cambios se apliquen (# /etc/init.d/ssh restart).



Autenticación con SSH


Autenticación con Clave Pública


Como ya sabemos la autenticación hasta este momento ha sido con un password, el cual pertenece al Usuario local del Servidor SSH, lo que haremos en este momento será autenticarnos por medio de Llaves Asimétricas, las cuales crearemos por medio de SSH. Para generar el par de llaves utilizaremos el siguiente comando, podeos generar dos tipos de llaves RSA o DSA, así:


# ssh-keygen –t rsa


ó


# ssh-keygen –t dsa


Después de este comando el nos preguntara donde queremos guardar nuestro par de llaves, el nos da un directorio por defecto, en el cual le daremos Enter para decirle que aceptamos este directorio, después nos pedirá un password para este par de llaves, se lo podemos dar y a la hora de conectarnos al Servidor SSH solo nosotros sabremos el Password de la llave, o le daremos Enter para dejarlo así sin Password, así:


SI queremos ver el Fingerprint de nuestras llaves, ejecutaremos el siguiente comando (Esta lo hacemos para verifiar que estamos agregando la llave correcta):


# ssh-keygen -l -f Rutadelallave


Ejemplo:


# ssh-keygen -l -f /home/pepe/.ssh/id_rsa.pub


La salida debe de ser como esta:


2048 56:b3:40:9a:c5:76:2d:93:05:09:ec:4f:c3:08:a4:db id_rsa.pub (RSA)


Después de esto debemos de entregarle la llave Pública al Servidor SSH, lo haremos con la ayuda de los comandos anteriores, así:


# scp RutadelallavePublica Usuario@DireccionIP:RutadellavesdelServidor


Ejemplo:


# scp /home/pepe/.ssh/id_rsa.pub bluder@192.168.1.67:/home/bluder/id_rsa_pepe.pub


En este comando el nos pedirá la contraseña que colocamos a nuestro par de llaves y después la contraseña del Usuario Bluder, después de copiar la llave pública al Servidor debemos de entrar a editar el archivo de configuración del demonio en el Servidor SSH con la ayuda del siguiente comando:


# nano /etc/ssh/sshd_config


Buscaremos la línea AuthorizedKeysFile y la des comentaremos, al final de esta línea encontramos una ruta y un archivo de configuración (%h/.ssh/authorized_keys), el cual debemos de crearlo en esa ruta (Podemos cambiar la ruta o el nombre del archivo), recordemos con que Usuario estamos trabajando, en este archivo se encontraran las llaves publicas de los Clientes que se autenticaran contra el Servidor SSH, guardaremos los cambios y saldremos del editor.


Después debemos de re direccionar la llave pública del Cliente al archivo que creamos el cual contendrá la llave, para ello ejecutaremos el siguiente comando:


# cat RutadelaLlave > /home/pepe/.ssh/authorized_keys


Ejemplo:


# cat /root/llaves/id_rsa.pub > /home/pepe/.ssh/authorized_keys


NOTA: Si tenemos más de una llave para agregar al archivo para la autenticación, lo que debemos de hacer es utilizar el mismo comando pero con doble signo >> para la redirección, de lo contrario nos borrara la llave que tengamos y nos dejara solo la ultima llave agregada.


Después de esto debemos de reiniciar el servidor SSH y nos debe de funcionar la Autenticación con Clave Publica (# /etc/init.d/ssh restart).


Para la conexión por medio de Claves Públicas debemos de utilizar el siguiente comando:


# ssh Usuario@DireccionIP


Ejemplo:


# ssh bluder@192.168.1.67


Este es el mismo comando para la conexión de SSH, pero el Servidor no nos debe de pedir la clave del Usuario pepe sino la clave que le asignamos a nuestra llave y si no le dimos ninguna debemos de entrar en limpio, porque la autenticación se hará con nuestro par de llaves (La Privada que tenemos nosotros y la Publica que tiene el Servidor).


En nuestro caso ingresamos desde el Cliente vía SSH y seguimos los pasos anteriores, después nos salimos del Servidor e ingresamos con la ayuda del par de llaves públicas, así:


Si estamos trabajando con un puerto diferente para el SSH, el comando debe de ser el siguiente:


# ssh –p Puerto Usuario@DireccionIP


Ejemplo:


# ssh –p 2233 bluder@192.168.1.67


Un problema que nos puede aparecer a la hora de la autenticación es que el Cliente no encuentra su propia llave Publica, esto se da porque de pronto el nombre de la llave cambio o tenemos varias llave en el mismo equipo, lo que debemos de hacer en este caso es decirle con que llave queremos trabajar, el comando debe de ser así:


# ssh –i RutadelaLlavePrivada Usuario@DiereccionIP


Ejemplo:


# ssh –i /home/pepe/id_rsa_pepe bluder@192.168.1.67


En este ejemplo la llave tenía otro nombre y lo debemos de especificar por que el SSH toma por defecto solo id_rsa ó id_dsa, si estamos trabajando con otra llave sería lo mismo, en este comando debemos de colocar el -i que significa identificación. Si el puerto del Servidor SSH es otro debemos de indicarlo con el siguiente comando:


# ssh –p Puerto –i RutadelaLlavePrivada Usuario@DiereccionIP


Ejemplo:


# ssh –p 2233 –i /home/pepe/id_rsa_pepe bluder@192.168.1.67



Autenticación basada en Listas de Acceso con Autenticación de Cliente


En este paso de autenticación lo que haremos es autenticación por Clientes, es decir, la autenticación solo se le permitirá a los Usuario que indiquemos dentro del archivo de configuración del demonio SSH, para ello debemos de entrar a editar el archivo de configuración con la ayuda del siguiente comando, así:


# nano /etc/ssh/sshd_config


Dentro del archivo de configuración debemos de agregar la siguiente línea, en la cual le diremos el nombre del usuario con el cual se podrán conectar los Clientes y la dirección IP del Equipo de donde se podrán conectar, debe de ser así:


AllowUsers Usuario@DireccionIP


Ejemplo:


AllowUsers bluder@192.168.1.65


Esta línea nos dice que solo se podrá Autenticar el Usuario pepe (Que es un Usuario local del Servidor SSH) desde el equipo con la dirección IP 192.168.1.80. Recordemos que también se puede autenticar el Usuario Root si no hemos cambiado el parámetro en el archivo de configuración. Debemos de reiniciar el demonio SSH para que los cambios se actualicen en el Servidor.



Conexión de un Túnel VNC


Lo que debemos de hacer para una conexión por medio de un túnel SSH con VNC (Aplicación de Escritorio Remoto), con el cual queremos que la información que viaje de extremo a extremo sea lo más seguro posible, para ello debemos de tener instalado el VNC en el Servidor SSH y en el Cliente y listo, para crear el túnel debemos de utilizar el siguiente comando:


# ssh –L PuertoLocal:MaquinaRemota:PuertoRemoto Usaurio@DireccionIP


Ejemplo:


# ssh –L 5959:127.0.0.1:5900 bluder@192.168.1.67


En este comando le estamos diciendo que cree el túnel (-L), que tome el Puerto 5959 en la maquina local (Cliente), que tome la IP 127.0.0.1 (Que será la IP del Servidor, pero como lo indicaremos más adelante le podemos decir el Loopback y no revelaremos la IP del Servidor, aunque la podemos indicar) , el numero del Puerto real del VNC en el Server que es el 5900 (Si no lo hemos cambiado) y por último el Usuario para la conexión (bluder) y la Dirección IP del Servidor (192.168.1.67).


Después de la conexión y de la Autenticación que puede ser por cualquiera de las anteriores (En este caso tenemos la autenticación por llaves publicas), desde el Cliente entraremos al VNC e iniciaremos la Conexión por medio del túnel indicando la Dirección IP del Servidor (127.0.0.1) y el Puerto que escogimos para la comunicación (5959) y listo iniciara la comunicación por medio del túnel, es un poco más lento pero está viajando por SSH.


NOTA: El Servidor VNC debe de estar configurado como lo desee el Administrador, en el caso de nosotros el Cliente no necesita verificación y no puede manejar nuestro equipo.


Recordemos que si le cambiamos el puerto al Servidor SSH, se lo debemos de indicar dentro del comando, de la siguiente forma:


# ssh –L –p Puerto PuertoLocal:MaquinaRemota:PuertoRemoto Usaurio@DireccionIP


Ejemplo:


# ssh –L –p 2233 5959:127.0.0.1:5900 bluder@192.168.1.67

Caracteristicas de SSH1 y SSH2
3:23 | Author: Bluder Garcia

SSH:

Aplicación y Protocolo propio para la transmisión segura de los datos. Este protocolo trabaja en la capa de transporte (Utiliza el Protocolo de Transporte TCP) y escucha por el Puerto 22. Proporciona Servicios analógicos a los Protocolos SSL/TLS. Aparte de establecer conexiones seguras, el Protocolo SSH también ofrece otras funciones como la redirección de Puertos TCP o la comunicación entre clientes y servidores por medio de la consola (Shell).

El Formato de los Paquetes, es decir, del Mensaje es diferente según la versión de SSH:

SSH1:

  1. La Comprensión
  2. EL Código de Autenticación MAC
  3. El Cifrado

SSH2:

  1. La Longitud
  2. Cantidad de Bits de Relleno (Padding)
  3. Contenido del Mensaje
  4. Cantidad de Bits de Relleno Aleatorios (Padding)
  5. Código de Autenticación MAC

Tipo de Cifrado del Paquete según la versión de SSH:

SSH1:

  • 3DES
  • Blowfish
  • AES
  • Arcfour
  • RC4 (RSA)

SSH2:

  • RC4 (RSA)
  • 3DES
  • Blowfish
  • IDEA
  • Twofish
  • CAST-128

Tipos de Autenticación de SSH:

  1. Autenticación Nula: El servidor permite que el usuario acceda directamente, sin ninguna comprobación, al servicio solicitado. Un ejemplo seria el acceso a un servicio anónimo.
  2. Autenticación basada en listas de acceso: A partir de la dirección del sistema cliente y el nombre del usuario de este sistema que solicita el acceso, el servidor consulta la lista para determinar si el usuario esta autorizado a acceder al servidor.
  3. Autenticación basada en listas de acceso con autenticación de cliente: Es igual que el anterior, pero el servidor verifica que el sistema cliente sea efectivamente quien dice ser, para evitar los ataques de falsificación de dirección.
  4. Autenticación basada en contraseña: El servidor permite el acceso si el usuario da una contraseña correcta. Este es el método que sigue normalmente el proceso login en los sistemas Unix.
  5. Autenticación basada en clave Publica: En lugar de una contraseña, el usuario se autentica demostrando que posee la clave privada correspondiente a una clave publica reconocida por el servidor.

Diferencias entre SSH1 y SSH2:


Clic para ver la Imagen

MD5SUM en Windows
3:31 | Author: Bluder Garcia

Ya habíamos hablado del Software MD5SUM el cual lo utilizamos para el Resumen HASH para nuestros archivos o documentos, esta ves realizaremos los mismos procedimientos pero en un equipo con Windows XP, para ello necesitamos descargar la aplicación o el ejecutable md5sum.exe, de pues de descargarlo debemos de tenerlo en la carpeta donde vamos a realizar el Resumen del HASH, es decir, si tenemos un documento o un archivo en la carpeta Mis Documentos debemos de tener el md5sum.exe en esta carpeta para poder crear el resumen (Me paso que necesitaba tomas unos archivos de la carpeta Windows y de System32 y con tener el md5sum.exe en la carpeta Windows me servia para las demás carpetas dentro de Windows, podemos hacer lo mismo con las demás carpetas del equipo).

El procedimiento es el mismo que en Debían, es decir, los comandos que debemos utilizar para mirar el ID del HASH de un archivo, crear el Resumen HASH y verificar la integridad del archivo son la misma. Haremos varios ejemplos para utilizar en md5sum en Windows (Por la consola CMD).

Mirar el ID de un archivo:

c:\ Documents and Settings\Usuario\Mis Documentos\Practica> md5sum Documento.txt


Esta debe de ser la salida (Parecida):


86372149c86767b4ef3209612e1a272e *ejemplo


Crear el Resumen HASH:

c:\ Documents and Settings\Usuario\Mis Documentos\Practica> md5sum Documento.txt > NombredelHASH.md5


Verificar la integridad del archivo:

c:\ Documents and Settings\Usuario\Mis Documentos\Practica> md5sum -c NombredelHASH.md5


Si el archivo no a sido modificado:

Documento.txt: OK


Si el archivo a sido modificado:

Documento.txt: FAILED

md5sum: WARNING: 1 of 1 computed checksum did NOT match


Si queremos varios documentos en el mismo Resumen HASH:

c:\ Documents and Settings\Usuario\Mis Documentos\Practica> md5sum OtroDocumento.txt >> NombredelHASH.md5


En Windows también debemos de darle la ruta absoluta a el Resumen del HASH, para ello debemos de hacer los pasos anteriores y después entrar a editar (Puede ser con Blog de Notas) el archivo que se creo (El Resumen HASH) y agregar la ruta del archivo, en este caso seria así:

86372149c86767b4ef3209612e1a272e *c:\Documents and Settings\Usuario\Mis documentos\Practica\Documento.txt
5d449cb50ed3ca851416e7631df812be *c:\Documents and Settings\Usuario\Mis documentos\Practica\OtroDocumento.txt

En el cual le estamos dando la ruta real o absoluta del archivo, esto lo debemos de hacer manual y no nos podemos equivocar en ninguna letra, esto lo hacemos con el fin de poder mover el archivo del Resumen del HASH y revisar los documentos desde cualquier ubicación del equipo.

Este sera un ejemplo en nuestro caso de unos ejecutables de Windows, este es el archivo viendolo desde el Blog de Notas:

3f918fbc9e8ebe7875780cad46d9ab09 *C:\WINDOWS\explorer.exe
1bc5496b380ec0e22afbf76dd7cf419e *C:\WINDOWS\system32\at.exe
be61b17be23dd5ebc9dbf78170700fcf *C:\WINDOWS\system32\taskmgr.exe
79248dcf9b5ca6e8ddb18504db45cc4f *C:\WINDOWS\system32\xcopy.exe
4732b19018709b7e314c485fb099f1ea *C:\WINDOWS\system32\redir.exe

Y esta es la comprobacion del Resumen HASH en nuestro equipo:

C:\WINDOWS\explorer.exe: OK
C:\WINDOWS\system32\at.exe: OK
C:\WINDOWS\system32\taskmgr.exe: OK
C:\WINDOWS\system32\xcopy.exe: OK
C:\WINDOWS\system32\redir.exe: OK



MD5SUM en Debian
3:25 | Author: Bluder Garcia

Md5sum
es un programa creado por los sistemas Unix que tiene versiones para otras plataformas, realiza un HASH MD5 de un archivo o documento. La función de HASH devuelve un valor que es prácticamente único para cada archivo, con la particularidad que una pequeña variación en el archivo provoca una salida totalmente distinta, es decir, si se cambia el contenido del archivo el HASH será totalmente distinto, lo que ayuda a detectar si el archivo sufrió alguna variación. Es una herramienta de seguridad que sirve para verificar la integridad de los datos.

Es muy utilizado en la actualidad y en el mundo Linux es muy habitual encontrar las sumas de control MD5 de todos los paquetes que componen una distribución. También hay algunas aplicaciones que utilizan su algoritmo para encontrar archivos duplicados.

En este documento aprenderemos a crear el Resumen HASH para varios archivos con el fin de revisar la integridad de algunos archivos de nuestro sistema, como también podemos verificar archivos de nuestro equipo, para ello seguiremos los siguientes pasos:

Para crear el Resumen HASH a un archivo o documento, utilizaremos el siguiente comando (Recordemos tener creado ya un Documento o tener un archivo al cual el crearemos el Resumen HASH, el archivo no va a cambiar con esta acción):

# md5sum NombredelDocumento > NombredelHASH.md5


Después de este comando el nos creara el archivo con el nombre que le acabamos de decir y dentro el Resumen HASH para dicho archivo, este será un ejemplo de como quedara en nuestro caso:

# md5sum /bin/su > /home/smith/Desktop/PracticaHASH.md5


Como podemos ver, le hemos creado el Resumen HASH a un binario, en este caso su, que es el que nos permite convertirnos en súper usuario en la Shell de Debían y otras distribuciones de Linux, le dimos la ruta absoluta para que podamos en un paso mas adelante verificar el archivo en busca de cambios y el sepa donde se encuentra el archivo, en este caso el binario su que esta en el directorio /bin. También le especificamos la ruta donde quedara el Resumen HASH, que como podemos ver esta en el Escritorio del Usuario del equipo.
Miraremos el contenido del Resumen HASH, con un simple editor de texto, la salida debe de ser como esta, así:

3c652ed6c9f60c4f741f7f3d0c62c3dc /bin/su


Para verificar la integridad del Archivo ejecutamos el siguiente comando:

# md5sum -c NombredelHASH.md5


En este comando debemos de darle el archivo que creamos anteriormente para que el verifique la integridad de los datos. Un ejemplo de como seria en nuestro caso es así:

# md5sum -c /home/smith/Desktop/PracticaHASH.md5


El nos debe de sacar la siguiente información si el archivo no ha cambiado:

/bin/su: La suma coincide


Si el contenido del archivo si ha cambiado debe de ser la siguiente salida (Lo podemos mirar cambiando tan solo una letra del archivo), así:

md5sum: WARNING: 1 of 1 computed checksum did NOT match


El cual nos quiere decir que el archivo o documento a cambiado. En el paso anterior les hablaba de la ruta absoluta, esto quiere decir que podemos tener el Resumen HASH en cualquier ruta del equipo y el va a encontrar el archivo o documento, si lo dejamos sin la ruta el no sabrá donde esta el archivo.

El md5sum genera un ID único para el archivo o documento, con una longitud de 128 bits, no importa el tamaño del archivo o el documento, siempre tendrá la misma longitud en bits. Si el contenido del archivo cambia, el ID también lo hará, para ver el ID del documento ejecutaremos el siguiente comando:

# md5sum NombredelDocumento


El comando nos debe de arrojar una linea como esta:

ea3c40f0f83608587e90b20793963066 /home/smith/Desktop/PracticaHASH.md5


Podemos verificar esto con cualquier otro archivo de nuestro equipo, después de mirar el ID cambiamos algo del archivo y el nos dará un ID totalmente diferente al anterior.

Ahora haremos un ejemplo de varios archivos o documentos en el mismo Resumen HASH con el fin de verificar la integridad de varios documento con la ayuda del mismo comando, la sintaxis del comando es la misma pero en ves de una sola redirección (>) deben de ser dos (>>) para que no sobrescriba el Resumen HASH que tenemos sino que lo agregue en forma ordenada, para ello ejecutaremos el siguiente comando:

# md5sum NombredelDocumento >> NombredelHASH.md5


En este paso debemos de colocar el nombre del segundo documento que queremos agregar en Resumen HASH y listo, en nuestro caso al mirar el Resumen HASH con el editor de texto la salida es la siguiente:

51a5eb276074fd0b018abe75dd21f224 /bin/su
d61441a7541064e88c6c6f70de93c20d /usr/bin/passwd
70218c8843abd3cf4f226ecb2fa9e959 /usr/bin/who
cfc84ceaa2baab9baccc39f6e952bdc8 /usr/bin/last
49f1c3158478afaf2ec4ce6dbe497203 /usr/bin/finger
d7aad93c9e44160e60d58427d3d35586 /bin/cat

90458fdc21966f8b9a441e0369a1587c /bin/rm


Y al ejecutar el comando para verificar el estado de los archivos el resultado debe de ser como este:

/bin/su: La suma coincide
/usr/bin/passwd: La suma coincide
/usr/bin/who: La suma coincide
/usr/bin/last: La suma coincide
/usr/bin/finger: La suma coincide
/bin/cat: La suma coincide

/bin/rm: La suma coincide