Conexión segura con SSH
Una de las cosas que me fascino cuando empecé a usar linux fue la facilidad con la que se podía acceder a otro ordenador, tanto para coger el control como para el intercambio de archivos.
En esta ocasión, haremos una introducción a la comunicación segura entre ordenadores.
SSH (Secure Shell)
Empezaremos instalando el servicio.
sudo aptitude install ssh
Una vez instalado, el demonio se ejecutará automáticamente. Igual que con cualquier otro proceso este se puede parar, arrancar o reiniciar cuando queramos.
sudo /etc/init.d/shh stop
sudo /etc/init.d/shh start
sudo /etc/init.d/shh restart
En este momento y con los parámetros por defecto, el servicio esta listo para ser usado, pero es más que recomendable hacer unos cambios para reforzar nuestra seguridad.
Yo los deje por defecto y en una semana recibí prácticamente a diario ataques provenientes de china y malasia en su mayoría, en los que mediante fuerza bruta intentaban acceder. Como se detecta? pues es simple un simple vistazo a los logs es más que suficientes.
cat /var/log/auth.log |grep ssh
Empezaremos modificando el fichero de configuración.
sudo vim /etc/ssh/sshd_config
Lo primero y mas importante es cambiar el puerto que usa por defecto, de esta forma nos quitaremos la gran mayoría de intentos de intrusión. Esto no nos asegura invulnerabilidad, pero si que hace más difícil la localización del servicio por parte de scripts que atacan dicho puerto.
Buscamos donde pone Port 22 y ponemos el puerto que queramos.
Port 2222
Si salís a internet mediante un router, como es mi caso, lo que haremos será dejar el puerto 22 en el fichero de configuración y redirigir la entrada del puerto 2222 del router hasta el puerto 22 de mi máquina (el mismo proceso que con los puertos del emule, a que ahora si!!). De esta forma, en la Lan el puerto ssh es el 22, pero de cara al exterior es el 2222.
Comprobaremos que el Protocolo este a 2, en caso contrario lo pondremos (el protocolo 1 está en desuso).
Protocol 2
En el apartado Authentication haremos los siguientes cambios.
Tiempo que emplearemos en hacer el login, no poner más de 30, un valor entre 15 y 30 está bien.
LoginGraceTime 30
Muy importante!! No permitiremos que el root pueda hacer login (esto fue lo que evito que los ataques que recibí consiguieran su objetivo).
PermitRootLogin no
También podemos poner el número máximo de reintentos para autentificarse.
MaxAuthTries 3
Bueno con esto ya tenemos bastante, guardamos y cerramos, quedándonos ya un servidor ssh más que seguro. Para que los cambios tengan efecto, hace falta reiniciar el servidor.
sudo /etc/init.d/shh restart
Bueno, ahora empieza la acción, yo voy a poner los ejemplos de manera local (lan) pero teneis que tener en cuenta que es indiferente y se realiza de la misma manera conectar dos equipos en lan que a través de internet.
ssh 192.168.1.101
nos devolverá algo parecido a esto:
banyut@hell:~$ ssh 192.168.1.101
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
RSA key fingerprint is d5:ec:e9:40:db:33:26:e1:c3:3e:3e:bf:17:8f:9b:0c.
Are you sure you want to continue connecting (yes/no)?
Esto nos saldra la primera vez que nos conectemos con la maquina, a lo que contestaremos que YES
Nos pedirá el password, que una vez introducido podremos comprobar que la shell que tenemos es la del ordenador remoto(192.168.1.101).
banyut@192.168.1.101's password:
Linux persefone 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Tue Apr 1 17:53:39 2008 from hell
banyut@persefone:~$
Ahora lo que hagamos es igual que si lo hiciéramos en el ordenador remoto.
El mensaje de bien venida que nos da, lo podemos configurar a nuestro gusto. Para ello editaremos el fichero motd y lo modificaremos tanto como queramos.
sudo vim /var/run/motd
En el proceso de conexión hay que aclarar un par de cosas, he puesto la instrucción más simple posible, por lo que se han cargado todos los parámetros por defecto, esto es.
-
La comunicación se ha realizado por el puerto 22
-
El usuario que hace la conexión es banyut, osea el mio, con el que he iniciado mi sesión.
La forma completa se haría de la siguiente manera.
ssh -p 22 banyut@192.168.1.101
Con la opción -p indicamos el puerto, que tiene que corresponder con el que hemos indicado en el fichero de configuración o el router según el caso. Y el usuario lo añadiremos al inicio de la ip del ordenador remoto, separándolo con la arroba (@).
Por ultimo solo queda decir que los permisos que tendremos en la maquina remota serán los que tenga el usuario con el que hemos conectado en dicha maquina.
Aquí no acaba esto, de momento tenemos el control del equipo y podemos ejecutar cualquier comando, pero, que pasa si queremos ejecutar una aplicación en modo gráfico, por defecto no podemos.
Tenemos que volver al archivo de configuración y indicar de manera expresa que queremos el modo gráfico, por lo que editaremos y buscaremos y modificaremos o añadiremos lo siguiente.
Forwarding yes
ForwardX11Trusted yes
ejecutamos ssh con la opción -X
ssh -X 192.168.1.101
Ahora ya podemos correr nuestras aplicaciones en entorno grafico, exemp: nautilus.
Copiar ficheros
Una vez conectados con el equipo remoto, puede ser interesante querer pasar ficheros del equipo remoto a nuestro equipo, esto lo realizamos con el comando scp.
scp curriculum.odt banyut@192.168.1.100:~/Escritorio/curri.odt
o un directorio entero con
scp -r Exemples banyut@192.168.1.100:~/Escritorio/exemp
Que es todo esto.
-
curriculum.odt o Exemples, es el archivo o directorio que queremos copiar.
-
banyut@192.168.1.100 es el usuario que hace la conexión y la maquina donde queremos guardar el fichero o directorio.
-
:ruta, es la ruta donde lo copiaremos.
El comando scp es independiente de ssh, lo podemos ejecutar aunque no hayamos establecido una conexión ssh.
scp banyut@192.168.1.101:~/Examples/oo-trig.xls ~/Escritorio/oo-trig.xls
Copiamos el archivo ~/Examples/oo-trig.xls de la maquina remota 192.168.1.101 en nuestro escritorio ~/Escritorio/oo-trig.xls.
Bueno, no esta mal no, pensar que aquí no se acaba todo, con scp, podríamos copiar un archivo de un ordenador remoto a otro también remoto.
Daremos un paso más, ssh no se limita solo a la consola, abrir el nautilus (alt+F2 y escribir nautilus) y en la ruta poner.
ssh://banyut@192.168.1.101
Je je je, como se os ha quedado el cuerpo. En este caso si el puerto no fuera el 22, tendríais que indicarlo de la siguiente manera.
ssh://banyut@192.168.1.101:2222
Donde 2222 es el puerto que hemos establecido para nuestro ssh. O también ir directamente a un directorio en concreto.
ssh://banyut@192.168.1.101:2222/home/banyut/Escritorio
Podemos montar nuestra conexión ssh como si de un disco duro se tratase, esto lo haremos mediante sshfs.
sudo aptitude install sshfs fuse-utils
Tenemos que cargar el modulo fuse, para ello teclearemos
sudo modprobe fuse
Si queremos que se carge al inicio lo tenemos que meter en /etc/modules
sudo echo fuse >> /etc/modules
Y por último nuestro usuario tiene que pertenecer al grupo fuse, por lo que añadiremos a el.
sudo addgroup banyut fuse
Pues ya lo tenemos todo listo, ahora solo nos queda montar nuestra conexión.
mkdir /home/banyut/escritorioRemoto
sshfs
banyut@192.168.101:/home/banyut/Escritorio
/home/banyut/escritorioRemoto
y ya tenemos nuestro conexión encriptada totalmente montada. para desmontarla lo podemos hacer de la manera habitual.
sudo umount /home/banyut/escritorioRemoto
Bueno, ya solo nos queda el tema de los certificados, pero eso lo trataremos otro día.
- - -
Solo hay 10 tipos de personas, los que saben binario y los que no




Comentarios sobre Conexión segura con SSH
Muy bueno el tutorial, me sirvió.
Saludos