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