Mortuux

Diario de un estudiante geek. Informática, tecnología, programación, redes, sistemas operativos, bases de datos…

Archivos por Etiqueta: ssh

Túnel para el tráfico web. Proxy socks

A través de un compañero de clase, descubrí esta forma de tunelizar nuestro tráfico web de una red insegura. Este túnel encripta cualquier dato, por lo que estaría fuera del alcance de cualquier sniffer también.

Necesitaremos dos máquinas: Una será el servidor SSH que hará el forwarding de puertos, y otro será la máquina que creará el túnel hacia el servidor

En el servidor debe estar instalado openssh.

# apt-get install openssh

En el servidor, editamos el archivo /etc/ssh/sshd_config y al final añadimos las siguientes líneas:

AllowTcpForwarding yes

GatewayPorts yes

Y guardamos el archivo.

Ahora tenemos activado el forwarding de puertos en el servidor.

Ahora en la máquina que creará el túnel y en la cuál queremos que el tráfico sea seguro, hacemos lo siguiente

 

ssh -N -p PORT user@sshserver -D 2080 -v

 

 

Donde:
  • – N -> Impide que se ejecuten comandos
  • -p -> Indica el puerto SSH a usar en caso que no sea el 22
  • -D -> Indica un puerto dinámico. He puesto 2080 sin ningún motivo en especial
  • -v -> Verbose mode.
Y ahora en Mozilla Firefox, establecemos el proxy socks v5 a “localhost” y el puerto “2080”
Y con eso tendríamos nuestro tráfico web protegido.

 

 

Anuncios

Servicio SSH

    1. ¿Qué es el servicio SSH?

Inicialmente la administración remota se hacía con la orden Telnet.

En la actualidad no se debería utilizar Telnet por los importantes agujeros de seguridad que presenta. La transmisión entre cliente y el servidor se realiza completamente en texto plano (sin cifrar), por lo que con cualquier sniffer es posible capturar tramas y obtener de ellas login y la contraseña del usuario.

En la actualidad la herramienta de administración remota más utilizada es Secure Shell (SSH). SSH es un protocolo para iniciar sesiones en máquinas remotas que ofrecen autenticación, confidencialidad e integridad.

SSH es una herramienta que permite realizar conexiones seguras entre equipos unidos mediante una red insegura, como puede ser Internet. Utiliza el puerto 22 y sigue el modelo cliente-servidor.

La seguridad de Ssh se basa en la utilización de mecanismo de criptografía, de forma que toda transmisión de información es cifrada y el mecanismo de autenticación es transparente al usuario.

Ventajas de utilizar SSH

  • Después de la primera conexión, el cliente puede saber que se está conectando al mismo servidor en futuras sesiones.
  • El cliente transmite al servidor la información necesaria para su autenticación en formato cifrado
  • Todos los datos que se envían y se reciben durante la conexión son cifrados
  • El cliente puede ejecutar aplicaciones gráficas desde el Shell.
    1. Encriptación. Tipos de encriptación.

La criptografía es una técnica utilizada para convertir un texto claro en otro, llamado criptograma, cuyo contenido informativo es igual al anterior pero sólo puede ser decodificado por personas autorizadas.

La criptografía se basa en algoritmos cada vez más sofisticados.

SSH utiliza varios algoritmos de encriptación y autenticación:

  • Para establecer la conexión con la máquina remota emplea algoritmos de encriptación asimétrica.
  • Para la transferencia de datos utiliza algoritmos de encriptación simétrica, que son más rápidos.

Los tipos de encriptación son:

  • Encriptación simétrica o de clave compartida.
  • Encriptación asimétrica o de clave pública/privada.

Clave. Una clave es número codificado y encriptado en un archivo que sirve para encriptar/desencriptar los mensajes transmitidos/enviados

      1. Encriptación simétrica o de clave compartida

Esta técnica se basa en la utilización de una clave que es conocida tanto por el emisor como por el receptor o destinatario.

El usuario A y el usuario B conocen la clave K. El mensaje original, utilizando un algoritmo de encriptación simétrico y la clave K, genera el mensaje K que es transmitido al usuario B. Este, aplicando la misma clave y el algoritmo inverso, obtiene el mensaje original.

Ventaja: Es muy eficiente ya que los algoritmos utilizados son muy rápidos.

Desventaja: ambas partes deben conocer la clave.

      1. Encriptación asimétrica o de clave pública

Las técnicas de cifrado asimétrico se basan en el uso de dos claves: una pública y otra privada.

Según esta técnica cada usuario tiene dos claves. La clave privada sólo la conoce el dueño de la clave y no se publica. La clave pública es conocida por otros usuarios en otras máquinas, es decir se publica. Estas claves se generan al mismo tiempo dando lugar a pares biunívocos, de tal forma que la combinación pública-privada es única.

La información que recibe un usuario será segura mientras él controle sus claves privadas. El usuario puede cambiar su clave privada en cualquier momento y puede publicar su clave pública asociada para sustituir la clave pública obsoleta.

Ventaja: La clave privada no se transmite

Desventaja: No utiliza algoritmos eficientes, ya que no son rápidos cifrando y descifrando.

      1. Algoritmos de clave pública

    El algoritmo RSA:

    • Es el algoritmo de cifrado de clave pública más utilizado
    • Puede utilizarse tanto para encriptar como para firmar documentos

    El algoritmo DSA:

    • Puede utilizarse tanto para encriptar como para firmar documentos
    • Mayor grado de seguridad que RSA.

    Manual SSH

    SSH son las siglas de Secure SHell. Lo que te ofrece es una consola en un ordenador remoto con los privilegios que tenga la cuenta con la que conectes. Es decir, si en tu PC tienes varias cuentas, puedes conectar desde otro ordenador al tuyo con cualquiera de esas cuentas y sus respectivos privilegios, como pudiera ser la cuenta root, la de tu administrador sudo o la de un usuario normal sin poder de administración. Y todo esto con encriptación de datos.

    Mola ¿No?

    También cabe decir que tener un servidor SSH en funcionamiento, tiene un cierto riesgo, pero vamos configurarlo para que el riesgo sea muy reducido.

    Lo primero es instalarlo

    $ sudo aptitude install ssh

    Ahora una vez instalado, vamos a configurarlo:

    $ sudo gedit /etc/ssh/sshd_config

    Si alguna de las opciones que diga no os aparece, podeis añadirlo libremente al final del documento de configuración.
    La primera opción a modificar es el puerto por defecto.
    Podemos poner por ejemplo el puerto:

    port 2413

    Más abajo está la opcion Protocol, que debe estar a 2. Si no es así, ponedlo a 2.

    LoginGraceTime es el tiempo que tendrá el usuario para escribir su login, si sabemos la contraseña y usuario, no tardaremos mucho en poner el login así que este valor debe ser de pocos segundos por ejemplo 20

    LoginGraceTime 20

    Justo debajo, está una de las opciones más importantes PermitRootLogin. Esta opción permitirá loguearse como root, pero esto es muy inseguro porque si alguien quiere entrar en nuestro ordenador ya tendría el usuario (que siempre es root) y sólo le faltaría la contraseña, por eso debemos deshabilitarlo, nosotros podremos usar sudo para tareas administrativas.

    PermitRootLogin no

    también podremos establecer una “dedocracia” y seleccionar que usuarios queremos que se conecten

    AllowUsers mortuus amigo@83.45.258.21

    Donde mortuus es nuestro usuario (al que permitimos que se conecte) y amigo el usuario de la persona que damos permiso.

    Otra interesantísima opcion es MaxAuthTries, que es el número máximo de intentos que tendrá el usuario para introducir su login o será desconectado. En mi opinión con un valor de 2, es suficiente. Así evitamos posibles crackeos por fuerza bruta.

    MaxAuthTries 2

    Podemos establecer el número de conexiones paralelas. Este valor dependerá de nuestro interés y de la función que vaya a tener el ordenador, si es personal con un valor de 1 o 2 vamos bien

    MaxStartups 1

    Ahora ya podemos cerrar el editor y reiniciar el servidor ssh

    $ sudo /etc/init.d/ssh restart

    Para añadir más seguridad, la contraseña debe ser segura. Es decir contraseñas como “1”, “123456”, “god”, “contraseña”, “hola”… etc son inseguras.
    Se recomienda usar un mínimo de 6 caracteres y no usar palabras que aparezcan en el diccionario (imaginad porque xD)
    Una contraseña realmente segura podría ser algo así: *$M0rT[]Us*-*rUl3s$*

    Uso de SSH

    Para conectar:

    $ ssh -p puerto tu_cuenta@ip_del_ordenador_remoto

    Para copiar archivos:

    $ scp ruta/archivo cuenta_en_ordenador_presente@ip_ordenador_presente:ruta/fichero

    Un poco lioso, vamos a verlo con un ejemplo

    $ scp /home/casa/Desktop/xxx.jpg familia@192.168.1.6:/home/familia/pokemon.jpg

    Como estamos conectados a casa, queremos copiar el archivo xxx.jpg, pues tendremos que indicar cual es nuestra ubicación “real”, estamos en la cuenta familia, en la ip 192.168.1.6 y lo vamos a copiar a /home/familia y de paso lo renombramos a pokemon.jpg