El forma principal de controlar la Raspberry Pi va a ser la conexión SSH, tanto desde dentro de mi red local como en un futuro habilitar el acceso a través de Internet. Para ello es imprescindible mejorar la seguridad de SSH.
Las claves SSH que vienen con la Raspberry Pi no son muy seguras, pues son pre-generadas y almacenadas en la imagen de la SD. Así que cada vez que la Raspberry Pi está corriendo va a tener las mismas claves SSH.
Esto se puede mejorar regenerándolas. Para hacerlo hay que introducir los siguientes comandos:
$ rm /etc/ssh/ssh_host_*
$ dpkg-reconfigure openssh-server
Una vez hecho esto, hay que borrar el fichero en el equipo desde el que se realiza la conexión:
/home/user/.ssh/known_hosts
Esto no llevará más de 5 minutos y las claves almacenadas serán más seguras.
-----------------------------------------------------------------------------------------------------------------------------------
El fichero de configuración.
Otro palo que podemos tocar para mejorar la seguridad es el fichero de configuración de SSH.
Este fichero es:
/etc/ssh/sshd_config
En este fichero tenemos los parámetros de configuración para SSH.
Puerto.
Lo primero que podemos mejorar es el puerto de conexión. Por defecto SSH utiliza el puerto 22, si cambiamos el puerto sera mas difícil el intento de conexión.
Puerto.
Lo primero que podemos mejorar es el puerto de conexión. Por defecto SSH utiliza el puerto 22, si cambiamos el puerto sera mas difícil el intento de conexión.
Cambiaremos
Siendo 666 el puerto que decidamos utilizar.
Es importante apuntar un par de cosas.
La primera es que una vez cambiemos el puerto para poder conectarnos a la maquina deberemos utilizar:
Port 22
Por
Port 666
Siendo 666 el puerto que decidamos utilizar.
Es importante apuntar un par de cosas.
La primera es que una vez cambiemos el puerto para poder conectarnos a la maquina deberemos utilizar:
$ ssh usuario@maquina -p 666
El parámetro -p le indica a SSH el puerto que debe utilizar para la conexión.
Otra cosa es que si nos vamos a conectar desde Internet deberemos abrir el puerto en el router, que normalmente estará cerrado.
Protocolo.
SSH tiene dos versiones del protocolo de conexión. El protocolo 1 tiene algunas vulnerabilidades de seguridad. Normalmente SSH ya vendrá con el protocolo 2, pero por si acaso, o por si aparecen los dos protocolos lo revisaremos y dejaremos solo el protocolo 2.
Protocol 2
Tiempo de Gracia.
Podemos modificar el tiempo que la pantalla de login estará disponible para el usuario. Esto puede evitar intentos continuados por parte de alguien que no conoce los datos de acceso.
LoginGraceTime 10
En este caso dejamos 10 segundos.
Acceso Root.
Esta opción consiste en permitir o no que el usuario root pueda conectarse por SSH. El usuario root esta habilitado en un gran numero de maquinas Linux y es el usuario que se suele utilizar para conectarse por SSH.
Por este motivo vamos a evitar que el usuario root pueda acceder por ssh, para evitar darle medio camino echo al posible intruso.
Como nuestro usuario ya tiene todos los permisos necesarios no necesitamos al usuario root.
PermitRootLogin no
Numero de accesos.
Con este parámetro indicaremos los intentos que tenemos para introducir correctamente el usuario y la contraseña. Cuantos más intentos mas fácil sera descubrir la contraseña.
Con este parámetro indicaremos los intentos que tenemos para introducir correctamente el usuario y la contraseña. Cuantos más intentos mas fácil sera descubrir la contraseña.
MaxAuthTries 2
En este caso lo dejamos en 2 intentos.
Pantallas de login.
Cantidad de pantallas de login permitidas por ip. Evitaremos que una misma ip nos abra múltiples intentos de conexión.
MaxStartups 2
Lo dejamos en 2, son mas que de sobra.
Usuarios.
Ahora vamos a trabajar un poco con los usuarios. Tenemos varias opciones.
Para permitir el acceso a uno o varios usuarios usaremos:
AllowUsers Pepin
Con esto permitimos el acceso solo al usuario Pepin.
AllowUsers Pepin@169.254.1.1
Con esto permitiremos el acceso al usuario Pepin, pero solo desde la ip 169.254.1.1. Lo mismo lo podemos hacer para una red determinada con 169.254.1.*, o un dominio determinado.
También disponemos de la orden contraria:
DenyUsers Pepin
Con esto denegaremos el acceso al usuario Pepin.
También existe la opción AllowGroups, para permitir grupos.
Con todas estas opciones mejoraremos la seguridad de la conexión SSH, pero como casi todas las cosas, estos métodos no son infalibles.
Saludos.
Fuentes:
http://muyraspi.blogspot.com.es/2013/06/claves-ssh-mas-seguras.html
No hay comentarios:
Publicar un comentario