Conexiones Seguras con SSH

Imagen de banyut
0 puntos

 

Extraido de: http://banyut.obolog.com 

 

 

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 monti@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.

 

--

Hay 10 tipos de personas, los que saben binario y los que no.