jueves, 18 de diciembre de 2014

SSH en Linux

Instalación.


SSH es un protocolo que hace posible que un cliente (un usuario o incluso un equipo) abra una sesión interactiva en una máquina remota (servidor) para enviar comandos o archivos a través de un canal seguro.
Vamos a utilizar ssh, en primer lugar vamos a conectarnos con ssh desde una máquina Linux a un linux. Para ello lo primero que hay que hacer es instalar ssh en las dos máquinas.

sudo su apt-get install ssh


Y para conectar a la máquina que nos interese se pone:
ssh usuario@hostname en este caso sería: ssh root@192.168.1.104


La primera vez que te conectas tendrás que aceptar la conexión, y ya no te lo volverá a pedir más, te pedirá que ingreses el password y entraras en la máquina.
Para salir le damos a exit y termina la conexión.


Con netstat –natup se ve el puerto por el que nos conectamos.


Cambio de puerto

El ssh usa el puerto 22 para conectarse. Con lo cual si queremos hacerlo más seguro, podemos emplear otro puerto de conexión y para cambiarlo, entraríamos en el archivo de configuración sshd_conf que se encuentra dentro de /etc/ssh y se cambia en ambas máquinas igual, ya que si no la conexión se seguirá haciendo por el puerto 22.


Buscamos donde está la directiva del puerto, que como se ve es el 22. Lo único que hay que hacer es poner ahí el puerto que se quiera que no esté ocupado.



Por ejemplo usamos el puerto 8822.


Restablecemos el servicio.


Con lo cual ahora si queremos hacer una conexión, la orden que hay que poner es:
ssh –p 8822 usuario@192.168.1.104 ya que si queremos conectar como antes no nos dejara.


Como configurar el servidor para impedir que se conecte como root en el sistema.

Nos vamos al archivo de configuración /etc/ssh/sshd_conf
Y dentro inicialmente nos lo encontramos así:


Luego lo único que habría que hacer es poner no y restablecer el servicio, de esa forma desde el cliente no se podrá conectar como root.


Si intentamos entrar como root, no dice que el permiso esta denegado.
Si lo intentamos con cualquier otro usuario, no nos dará ningún problema.


A través del navegador también se puede hacer una conexión ssh.
Lo que hay que hacer es  ir al navegador en introducir en lugar ssh://usuario@192.168.1.104:8822





De esta forma entramos a la máquina de forma gráfica.

Copiar a través de una conexión segura.

Vamos a crear un archivo por ejemplo cliente.txt en el servidor y lo vamos a copiar al cliente.
La orden es: scp –P 8822 usuario@192.168.1.104: /home/usuario/cliente.txt .


Vamos ahora ha hacerlo al reves, copiar un archivo del cliente al servidor. Para ello creamos un archivo en este caso lo llamaremos: servidor.txt
Y la orden para copiarlo es:
scp –P 8822 servidor.txt usuario@192.168.1.104:/home/usuario/



Si lo queremos hacer en windows, el programa que tenemos que usar es el winspc y una vez que se ejecute, lo único que hay que hacer es introducir los datos para conectar.


Y una vez que entremos, se ven las dos máquinas y solo es trasladarlo de una a otra.





Conectar ssl con clave pública.

Es posible establecer conexiones SSH a servidores Linux sin necesidad de ingresar una contraseña cada vez. Para esto debemos:
·         Crear nuestro par de claves pública y privada
·         Copiar nuestra clave pública en el servidor SSH
·         Utilizar la clave privada al establecer la conexión SSH
Dependiendo si estamos utilizando Windows o Linux, tendremos varias formas de llevar a cabo estos pasos.

Creación de las llaves
Para comenzar a utilizar claves pública/privadas desde nuestro cliente SSH, debemos generarlas antes.
En Linux las generamos utilizando el comando ssh-keygen.
Nos pregunta donde queremos guardarlo, yo le pongo la misma ruta, y luego nos pide una frase que se puede dejar vacia o poner algo, yo le he puesto clave.


Esto genera 2 archivos en nuestro directorio home: ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub. El primero contiene la clave privada, que debemos mantener segura y no compartir. El segundo archivo contiene la clave pública, que compartiremos con los servidores SSH a los que querramos conectarnos.


Copiar llaves al servidor SSH
Luego de generar las claves debemos compartir nuestra clave pública con el servidor SSH al que queremos conectarnos. Para ello copiamos el siguiente comando.
ssh-copy-id –i ~/.ssh/id_rsa.pub usuario@192.168.1.104
Te la copia en el servidor y te crea un archivo llamado authorized_keys donde guardara todas las claves que tengas.


Conexión utilizando clave pública/privada
Luego de la instalación de la clave, si utilizamos los nombres de las claves por defecto la conexión desde Linux al servidor SSH es tan simple como ejecutar:
ssh usuario@192.168.1.104 y meter la clave que hayas puesto, en este caso es clave.


Ya no te pide contraseña, lo que te pide es que escribas la frase que te dice y ya conectas y cada vez que conectes, no te pedirá la clave para entrar.

WINDOWS

En windows hay que descargarse el putty.exe, el puttygen.exe y el pscp.exe.
Una vez descargadas las ubicamos en una carpeta lo más próximo a nuestra carpeta raíz por ejemplo: C:\Putty y desde allí realizaremos todas las operaciones con sus programas.
Creación de las llaves
Utilizaremos el puttygen.exe para generar las claves tanto locales como públicas para utilizarlas en nuestra conexión al LINUX Server. Una vez abierto, seleccionamos el tipo de encriptación RSA y de damos al botón generate. Tendremos que mover el ratón por la zona de la barra para que el programa funciones y genere la clave.

Al final nos sale las claves generadas.

Nos facilita la zona de Key passphrase para poder proteger los ficheros que se van a grabar en caso de que alguien los quiera utilizar para suplantar la identidad.
Le damos al botón de “Save private key” y la guardamos en nuestro pc, en la carpeta del putty. La clave privada, no debe salir de vuestro ordenador, ni copiarla en otro sitio.
La clave publica la salvamos con el botón "Save public key " y es la que copiaremos en nuestro servidor.
Hay que recordar que las claves se crean para un usuario en particular, de manera que un usuario puede tener diferentes claves públicas de distintos ordenadores.
Copiar llaves al servidor SSH
Para copiar la clave pública al servidor LINUX, utilizaremos el programa pscp.exe desde la línea de comandos de Windows situado en la carpeta donde tenemos ubicados las utilidades anteriormente mencionadas. Debemos tener claro a que usuario del servidor LINUX le vamos a dar permisos, por ello el comando pscp debe ir acompañado de una serie de parámetros para que sea depositado en la carpeta adecuada de ssh para el usuario en el servidor.
En nuestro caso el usuario en el LINUX Server se llama usuario y el servidor está en la dirección 192.168.1.104, por lo tanto debería tener una carpeta /home/usuario/.ssh que será el destino de nuestro fichero.
comando:
pscp -l usuario -4 -scp clave_publica usuario@192.168.1.104:/home/usuario/.ssh/clave_publica
Al trasferir el fichero, al ser la primera vez, nos pregunta que si queremos guardar en el registro de la maquina local las credenciales de conexión al servidor para una sesión permanente si confiamos en la maquina remota. Contestamos "y". Si se transfiere con éxito deberíamos tener una ventana parecida esta:

Hay que recordar que las claves se crean para un usuario en particular, de manera que un usuario puede tener diferentes claves públicas de distintos ordenadores.
Las claves públicas se añaden al archivo ~/.ssh/authorized_keys del usuario en concreto. Por ejemplo si tenemos un usuario que es usuario, modificaremos /home/usuario/.ssh/authorized_keys
Si no existe el archivo lo creamos y si existe guardamos tenemos que convertir la clave pública que hemos enviado a formato openssh e incorporarla al fichero authorized_keys de la siguiente forma.
# cd /home/usuario/.ssh
# ssh-keygen -if clave_publica > publica_openssh.pub
# cat publica_openssh.pub >> authorized_keys
Con la redirección de salida >> lo que hacemos es añadir al final del fichero sin sobrescribir lo que haya previamente.

Bien pues ya cuando logeamos con nuestro usuario usuario ya no nos pide el password porque estaremos identificados con el sistema de clave pública/privada.
Ahora se debe configurar el servidor ssh, para que permita utilizar la utilización de clave publicas
sudo nano /etc/ssh/sshd_config
dejar descomentado RSAAuthentication, quedando de la siguiente forma:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys


Por ultimo reiniciar el servicio
sudo service ssh restart
Para conectarse desde windows hay que hacer algunos ajustes en el clientes ssh PuTTy para que todo funcione perfectamente. Primeramente pondremos la ip del servidor LINUX
Posteriormente hay que indicarle donde está la clave privada que hemos guardado en un sitio seguro de nuestro pc. Vamos al menú Connection -> SSH ->Auth y en la opción: “Private key file for authentication” buscamos y seleccionamos la clave privada.

Después hay que decir con que usuario queremos que haga “auto-login” para no tener que teclear nuestro usuario.
Vamos al menú: Connection-> Data y en en menu auto-login username, ponemos nuestro usuario con el que queremos logear y para el que hemos creado las claves RSA.

Salvamos toda la configuración y ahora cuando pulsamos en Open nos logea directamente en nuestro servidor LINUX sin tener que teclear usuario ni contraseña.


Observaciones
En algunos casos por haber generado la clave pública y privada con el puttygen.exe en la maquina windows al realizar todo el proceso anteriormente mencionado y utilizar el putty.exe para conectarnos, nos da un error "server refused our key". Eso es debido a que la clave pública se ha transmitido mal al servidor.
Como solucionamos este problema
Copiar la clave pública con Ctrl + C desde el Puttygen.exe a través del portapapeles e introducirla directamente dentro del fichero authorized_keys,  accediendo previamente por telnet al servidor LINUX y teniendo la ventana del editor vi o nano abierta. Con solo tocar la ventana del Editor vi con el botón derecho del ratón se pega intacto el código de la clave pública dentro del fichero que estamos editando
Salvamos el fichero authorized_keys después de editarlo
Por ultimo reiniciar el servicio
sudo service ssh restart

Creación de un tunel ssh en linux.

Nos vamos al cliente y lo que escribimos es:
ssh –D 8080 root@192.168.1.104
Donde 8080 es el puerto que elegimos, que podíamos haber elegido cualquier otro al azar que no esté ocupado, por donde queremos que se establezca el túnel, de esta forma lo que hacemos es crear directamente ese puerto en el servidor, sin tener que crearlo manualmente en el archivo de configuración.


Ahora para navegar de forma segura por la red, hemos de configurar el navegador, para ello en este caso estamos en un debían, y abrimos el navegador, nos vamos a preferencias, avanzado, red, configuración.


Elegimos la opción de configuración manual del proxy, en el servidor SOCKS ponemos 127.0.0.1 y el puerto elegido, en este caso el 8080.


De esta forma estamos navegando de forma segura y las páginas que visitemos estarán encriptadas. Para comprobarlo lo vemos con el wireshark.


Cuando acabemos volvemos a configurar el navegador para que no nos de problemas a la hora de navegar y ya dejara de estar encriptado.

Creación de un tunel en Windows.

Nos vamos dentro del PuTTY y entramos dentro de SSH y dentro de Tunnels y añadimos el puerto, lo ponemos en auto y en dynamic.


Iniciamos la sesión y salvamos la configuración del tunel.



Configuramos el navegador igual que antes.





Conectarse a escritorio remoto de linux a windows.

En Windows nos vamos a mi pc, propiedades, remoto y pinchar en la pestaña que dice permitir que los usuarios se conecten de manera remota a este equipo.


Seguidamente nos vamos a la máquina de Linux desde la que queremos conectarnos remotamente.
Para instalar el rdesktop para consola en caso de no tenerlo por apt: 
$ sudo apt-get install rdesktop 
Si prefieres también lo puedes hacer por el entorno Grafico: 
Para instalarlo y utilizarlo gráficamente necesitamos ingresar el siguiente comando en la terminal:
$ sudo apt-get install grdesktop


Mediante la utilidad rdesktop podemos conectar por RDP (Remote Desktop Protocol) a equipos Windows. Vamos a ver cómo funciona.
En su uso más simple podemos ejecutar rdesktop con el nombre o IP del servidor a conectar:
$ rdesktop 192.168.1.110
Con el cual obtendremos una ventana que nos pedirá los datos de acceso:
Sesión Remote Desktop
La primera necesidad es cambiar el tamaño de pantalla por uno más grande, esto lo podemos hacer mediante la opción -g, pudiendo indicar el tamaño que nos interese:
$ rdesktop -g1024x768 192.168.1.110
También podemos saltarnos la pantalla de login indicando los datos con las siguientes opciones:
·         Usuario: Mediante la opción -u indicamos el nombre del usuario con el que conectaremos
·         Contraseña: Mediante la opción -p podemos indicar la contraseña
·         Dominio: En el caso que pertenezca a un dominio de Windows podemos especificarlo, si los datos de acceso son locale no lo necesitamos
El comando quedaría:
$ rdesktop -g1024x768 192.168.1.110 -u Moises -p usuario
En el caso que queramos pasar a pantalla completa podemos usar la opción -f:
$ rdesktop -f 192.168.1.110 -u Moises -p usuario



Conectarse a escritorio remoto de windows  a linux.

Desde la máquina de Windows que queramos hacer la conexión con Linux, nos vamos a internet y descargamos un programa para poder hacer esta conexión remota. En este caso descargamos el ultravnc
Lo instalamos y una vez instalado nos vamos al Linux, en mi caso es un debían.
Si gráficamente no tenemos la opción de sistema, preferencias, escritorio remoto, lo haremos desde consola.
Hay que habilitar el acceso por escritorio remoto escribiendo el siguiente comando en la terminal
gconftool-2 -s -t bool /desktop/gnome/remote_access/enabled true

Deshabilita el aviso del escritorio remoto escribiendo el siguiente comando en la terminal.
gconftool-2 -s -t bool /desktop/gnome/remote_access/prompt_enabled false

Los usuarios deben dar su consentimiento para el acceso por escritorio remoto haciendo clic en la ventana de confirmación que aparece en el escritorio de Ubuntu de forma predeterminada. Esta opción debe estar desactivada para que puedas conectarte de forma remota si el usuario no está en el escritorio de Ubuntu.

Aquí seleccionamos las opciones que aparecen en la imagen, en donde dice Requerir que el usuario introduzca una contraseña, escribimos una contraseña que es con la que nos vamos a loguear desde windows, y luego le damos clic en cerrar.


No hay comentarios:

Publicar un comentario